天津城市建设学院C语言程序改错题汇总
C语言程序改错
C语言程序改错〖第1题〗『程序改错』(5分)(题号:422)/*------------------------------------------------------【程序改错】--------------------------------------------------------题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
--------------------------------------------------------注意:不可以增加或删除程序行,也不可以更改程序的结构。
------------------------------------------------------*/#include"stdio.h"main( ){/**********FOUND**********/long a,b,c,d,e,x,scanf("%ld",&x);a=x/10000;/**********FOUND**********/b=x/10000/1000;c=x%1000/100;d=x%100/10;e=x%10;/**********FOUND**********/if (a==0)printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a); else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);else if (d!=0) printf("there are 2, %ld %ld\n",e,d);else if (e!=0) printf(" there are 1,%ld\n",e);getch();}答案:1). long a,b,c,d,e,x;2). b=x%10000/1000; 或 b=x/1000%10;3). if (a!=0) 或 if (!a)〖第2题〗『程序改错』(5分)(题号:411)/*------------------------------------------------------【程序改错】--------------------------------------------------------题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后除以10的余数代替该位数字。
C语言程序改错——答案
int j,c=0; /**********FOUND**********/
float j=0;
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力根保通据护过生高管产中线工资敷艺料设高试技中卷术资0配料不置试仅技卷可术要以是求解指,决机对吊组电顶在气层进设配行备置继进不电行规保空范护载高高与中中带资资负料料荷试试下卷卷高问总中题体资,配料而置试且时卷可,调保需控障要试各在验类最;管大对路限设习度备题内进到来行位确调。保整在机使管组其路高在敷中正设资常过料工程试况中卷下,安与要全过加,度强并工看且作护尽下关可都于能可管地以路缩正高小常中故工资障作料高;试中对卷资于连料继接试电管卷保口破护处坏进理范行高围整中,核资或对料者定试对值卷某,弯些审扁异核度常与固高校定中对盒资图位料纸置试.,卷保编工护写况层复进防杂行腐设自跨备动接与处地装理线置,弯高尤曲中其半资要径料避标试免高卷错等调误,试高要方中求案资技,料术编试5交写卷、底重保电。要护气管设装设线备置备4敷高动调、设中作试电技资,高气术料并中课3中试且资件、包卷拒料中管含试绝试调路线验动卷试敷槽方作技设、案,术技管以来术架及避等系免多统不项启必方动要式方高,案中为;资解对料决整试高套卷中启突语动然文过停电程机气中。课高因件中此中资,管料电壁试力薄卷高、电中接气资口设料不备试严进卷等行保问调护题试装,工置合作调理并试利且技用进术管行,线过要敷关求设运电技行力术高保。中护线资装缆料置敷试做设卷到原技准则术确:指灵在导活分。。线对对盒于于处调差,试动当过保不程护同中装电高置压中高回资中路料资交试料叉卷试时技卷,术调应问试采题技用,术金作是属为指隔调发板试电进人机行员一隔,变开需压处要器理在组;事在同前发一掌生线握内槽图部内纸故,资障强料时电、,回设需路备要须制进同造行时厂外切家部断出电习具源题高高电中中源资资,料料线试试缆卷卷敷试切设验除完报从毕告而,与采要相用进关高行技中检术资查资料和料试检,卷测并主处且要理了保。解护现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
C语言程序改错题汇总.doc
C语言程序改错题汇总程序改错题汇总1、用“起泡法“对连续输入的十个字符排序后按从小到大的次序输出. 2、分别统计字符串中大写字母和小写字母的个数。
3、求1到10的阶乘的和。
4、判断m是否为素数,若是返回1,否则返回0。
5、用选择法对数组中的n个元素按从小到大的顺序进行排序。
6、求一个3行4列矩阵的外框的元素值之和。
7、以下程序把两个数按由大到小的顺序输出来。
8、求1到20的阶乘的和。
9、判断字符ch是否与str所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后。
(指针)10、已知一个数列从第0项开始的前三项分别为0、0、1,以后的各项都是其相邻的前三项的和。
下列给定程序中,函数fun的功能是计算并输出该数列的前n项的平方根之和sum,n的值通过形参传入。
11、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数都是多少12、编写函数fun计算下列分段函数的值x*xx x0.0 { 累计营业额;输入下一笔交易额;} 输出营业额;} 记一笔交易额为变量sale,营业额为sigma。
124、一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少125、编写一个程序模拟袖珍计算器的加、减、乘、除四则运算。
例如输入35=或5-2=或3*4=或4/2=,求表达式结果。
126、输入字符序列,字符序列以特殊字符“”结束。
程序从前向后依次读入字符,并翻译出新的字符输出。
翻译的规则是如果当前读入的字符是数字符,如果该字符的面值为n,则它的后一个字符包括数字符需重复输出n1次如果当前读入的字符不是数字符,则输出该字符。
输出时,以上述一次翻译为一组,不同组间输出用一个空白字符隔开。
翻译直至当前读入的字符为字符‘’,结束翻译和输出。
127、某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下每位数字都加上5,然后除以10的余数代替该位数字。
天津市计算机二级C语言改错
1、改错:将P所指字符串中每个单词的最后一个字母改成大写if(p==’’)改为if(*p==’’)*(p-1)=toupper(*(p-1))改为*(p-1)=toupper(*(p-1));2、改错:函数fun的功能是:根据形参m(2=<m<=9)在二维数组中存放一张m行m列的表格fun(int *a int m)改为fun(int (*a)[M] int m)a[i][k]=k*j改为a[j][k]=k*j3、改错:函数fun的功能:求K!(k<13)所求阶乘作为函数值返回if k>0改为if(k>0)else if(k=0)改为else if(k==0)4、改错:函数fun的功能:根据形参m的值,计算如下公式的值。
int k改为int iy=i**i改为y-=i*i5、改错:程序运行时,输入一串字符,程序查找每一个“str”子串将其换为buf[j]=buf[j+3]改为buf[j+3]=buf[j]printf(“%c\n”,buf)改为printf(“%s\n”,buf)6、改错:统计字符串s中各原音字母(即:A、B、C、D、E)的个数,注意:不分大小写写出。
switch (*s)case’a’:’A’:改为case’a’:case’A’7、改错:求整数X的Y次方的低3位值for(i=1;i<y;i++)改为for(i=1;i<y+1;i++)t=t/1000改为t=t%10008、改错:将一无序数a1,a2,a3……a10由小到大的顺序进行排序for(i=0;i<9;i--)改为for(i=0;i<9;i++)if(a[i]<a[j])改为if(a[i]>a[j])9、改错:MODI,C程序的功能是:读入两个字符串str1和str2for(j=0;t[j]==0;j++)改为for(j=0;t[j]!=0;j++)if(s[i]=t[j])改为if(s[i]==t[j])10、改错:函数fun的功能是:求出s所指字符串中最后一次出现的t所指子字符串的地址,若未找到,则函数值为NULLa=Null改为a=NULLif(r==p)改为if(*r==*p)11、改错:读入n(<=20)个只含字母和数字的字符串s(长度<20),将其中长度最大的字符串找出来并返回其首地址。
大学C语言期末考试练习题程序改错(带详解答案)
y=3.5+x;
printf(“y=%d”);
}
正确的:
int x; float y;
printf(“y=%f”,y);
6 编程计算下面分段函数, 输入 x, 输出 y
x 1 x 0 y 2x 1 0 x 10
3x 11 x 10
main() { int x,y;
第三处改为:if(n%3==0)
第四处改为:sum=sum+n;
8. 求表达式 c ab 的值
#include <stdio.h>
#include <math.h>
int fun(int x, int y);
main()
{ int a,b; float f; scanf(“%d,%d”,a,b); //与改错第 1 题中的 scanf 错误相同 if(ab>0){ // C 语言中乘号不能省略,且用*表示乘法运算 fun(a,b); // 调用带有返回值的函数,应将函数的返回值保存在变量里
} 第四行改为:for(j=0;j<5;j++) 第五行改为:scanf(“%d”,&a[j]); 第七行改为:for(j=1;j<5;j++) 第八行改为:if(max<a[j]) 第十三行改为:printf(“下标:%d\n 最大值:%d”, m,max)
3.用一个函数求两个数之和。 sum(x,y) //函数定义的一般形式 p173-174 { float z; z=x+y; return; //return 语句后面可以返回 0、常量、变量和表达式的值。 } main() { float a,b; int c; / /若定义变量的语句有错误,常见考点有两个:(1)变量的类型,(2)在定
c语言题库改错题及详解答案
c语言题库改错题及详解答案C语言是一种广泛使用的计算机编程语言,它以其强大的功能和灵活性而闻名。
在学习和掌握C语言的过程中,练习题库中的改错题是提高编程技能的有效方式。
以下是一些常见的C语言改错题及其详解答案。
1. 题目:编写一个程序,计算并输出1到10的累加和。
错误代码:```cint main() {int sum = 0;for(int i = 1; i <= 10; i++) {sum = sum + i;}print("Sum is %d", sum);return 0;}```错误点: `print` 函数应为 `printf`。
正确代码:```c#include <stdio.h>int main() {int sum = 0;for(int i = 1; i <= 10; i++) {sum += i; // 可以简化为 sum += i;}printf("Sum is %d\n", sum);return 0;}```2. 题目:编写一个程序,判断输入的年份是否为闰年。
错误代码:```cint main() {int year;printf("Enter a year: ");scanf("%d", &year);if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {printf("%d is a leap year.\n", year);} else {printf("%d is not a leap year.\n", year);}return 0;}```错误点:逻辑判断的括号使用不正确。
正确代码:```c#include <stdio.h>int main() {int year;printf("Enter a year: ");scanf("%d", &year);if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {printf("%d is a leap year.\n", year);} else {printf("%d is not a leap year.\n", year);}return 0;}```3. 题目:编写一个程序,实现字符串的反转。
C语言程序改错基本题库
北京石油化工学院12级复习题程序改错一、下面每个程序的划线处有语法或逻辑错误,请找出并改正,使其得到符合题意的执行结果。
1.求1234nmain(){ long int sum;int n,i=1;scanf("%d",n);printf(“\n”);while(i<n){ sum=sum*i;i++;}printf("sum=%d",sum);}2.求一个数组中最大值及其下标。
main( ){ int max,j,m;int a[5];for(j=1;j<=5;j++)scanf(“%d”,a);max=a[0];for(j=1;j<=5;j++)if(max>a[j]){ max=a[j];m=j;}printf(“下标:%d\n最大值:%d”, j, max)}*3. 求3+4int a=3,b=4;main(){ int a,c;c=a+b;printf(“c=%d”);}4.用一个函数求两个数之和。
sum(x,y){ float z;z=x+y;return;}main(){ float a,b;int c;scanf("%f,%f",&a,&b);c=sum(a,b);printf("\nSum is %f",sum);}5.用指针作函数参数,对输入的两个整数按大小顺序输出。
swap(int *p1,*p2){ int *p;*p=*p1;*p1=*p2;*p2=*p;}main(){ int a,b;int *q1,*q2;scanf("%d,%d",&a,&b);&q1=a,&q2=b;if(a<b) swap(*q1,*q2);printf("\n%d,%d\n",q1,q2);}前五题答案:1.sum应初始化即加入sum=1第四行改为:scanf(“%d”,&n);第六行改为:while(i<=n)第十行改为:printf("sum=%ld",sum);2. 第四行改为:for(j=0;j<5;j++)第五行改为:scanf(“%d”,&a[j]);第七行改为:for(j=0;j<5;j++)第八行改为:if(max<a[j])第十三行改为:printf(“下标:%d\n最大值:%d”, m,max)3. 第三行改为:int c;第五行改为:printf(“c=%d”,c);4. 第一行改为:float sum(float x, float y );第四行改为:return(z);第八行:float c;第十一行:printf("\nSum is %f",c);5. 第2、3行:{ int t;t=*p1;*p1=*p2;*p2=t;第9行:q1=&a,q2=&b;第10行:if(a<b) swap(q1,q2);第11行:printf("\n%d,%d\n",*q1,*q2);6.程序读入20个整数,统计非负数个数,并计算非负数之和.#include “stdio.h”main(){int i, a[20], s , count ;s=count=1; s=count=0;for( i=1; i<20; i- -) for(i=0;i<20;i--)scanf(“%d”, a[i] );scanf(“%d”,&a[i]);for(i=0;i<20;i++){if(a[i]<0)break; continue;s +=a[i];count++;}printf(“s=%f count=%f\n”, s, count);}printf(“s=%d count=%d\n”,s,count);7. x , y两个数中,让x中存较大的数,y存较小的数#include<stdio.h>main( ){int x , y=200 , z=0;x=180;if ( x<y)z=x; x=y; y=z; { z=x;x=y;y=z;}printf(“x=%d,y=%d\n”,&x,&y);}printf(“x=%d,y=%d\n”,x,y); }8. 从键盘输入整数x的值,并输出y的值.main(){ float x,y; 正确的: int x; float y;scanf(“%d”,&x);y=3.5+x;printf(“y=%d”); printf(“y=%f”,y);}9. 从1加到100,并输出.Main ( ){int i , sumi=1;While ( i<=100 ){ sum=sum*i;i++ ;}printf ( “%c”, sum )}10、求一个4×4矩阵的对角线元素之和main( ){int a[4][4], sum=0;int i,j;printf(“Enter data:\n”);for(i=0;i<=4;I++)for(j=0,j<=4;j++)scanf(“%d”,&a[i][j]);for(i=0;i<4;I++)for(j=0;j<4;j++)sum=sum+a[i][j];printf(“sum=%5d\n”,sum);}12.求1+2+3+4+……n的值。
C程序填空改错及答案(可编辑修改word版)
15、结果:52
#include<stdio.h> int fun(int a,int b) { int r,t;
if(a<b) { t=a; a=b; b=t; } r=a%b; while(r!=0) { a=b;
b=r; /*下行有错*/ r=a/b; // r=a%b; } /*下行有错*/ return a; // return b; } main() { int a; a=fun(780,208); printf("%d\n",a); }
#include<stdio.h> void main() {
int num,a,b,c,count=0; /*下行有错*/ while(num=101;num<1000;num++) // for(num=101;num<1000;num++) {
a=num/100; b=num%100/10; c=num%10; /*下行有错*/ if(num+c*100+b*10+a=1333) // if(num+c*100+b*10+a==1333)
if(a%b==0) sum=sum+a/b; } for(i=2;i<=9;i++) if(sum==a*i) /*下行有错 */ count+=i; //count+=1; } printf("%d\n",count); }
7、结果:495.00
#include<stdio.h> float fun(int m, int n) {
C语言改错题-含答案
第1题【程序改错】功能:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。
例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为:“EDCBAABCDE”。
------------------------------------------------------*/#include <conio.h>#include <stdio.h>#include <string.h>void fun (char *s, char *t){/**********FOUND**********/int i;sl = strlen(s);for (i=0; i<sl; i++)/**********FOUND**********/t[i] = s[sl-i];for (i=0; i<sl; i++)t[sl+i] = s[i];/**********FOUND**********/t[2*sl] = "0";}main(){char s[100], t[100];printf("\nPlease enter string s:"); scanf("%s", s);fun(s, t);printf("The result is: %s\n", t);}答案:1). int i,sl;2). t[i] = s[sl-i-1];3). t[2*sl] = '\0'; 或 t[2*sl] = 0;第2题【程序改错】功能:求出以下分数序列的前n项之和。
和值通过函数值返回main 函数。
2/1+3/2+5/3+8/5+13/8+21/13 ……例如:若n = 5,则应输出:8.391667。
------------------------------------------------------*/#include <conio.h>#include <stdio.h>/**********FOUND**********/fun ( int n ){int a, b, c, k; double s;s = 0.0; a = 2; b = 1;for ( k = 1; k <= n; k++ ){/**********FOUND**********/s = (double)a / b;c = a;a = a + b;b = c;}/**********FOUND**********/return c;}main( ){int n = 5;printf( "\nThe value of function is: %lf\n", fun ( n ) );}答案:1). double fun(int n)2). s = s + (double)a / b; 或 s += (double)a / b; 或 s += a /(double)b; 或s=s+a/(double)b;3). return s;第3题【程序改错】功能:读入一个整数m( 5≤m≤20 ),函数getarr调用函数rnd获得m个随机整数,函数sortpb将这m个随机整数从小到大排序。
c语言改错题题库及详解答案
c语言改错题题库及详解答案C语言是一种广泛使用的计算机编程语言,它以其高效性、灵活性和强大的功能而受到程序员的青睐。
然而,即使是经验丰富的程序员也难免会在编写C语言程序时犯一些错误。
下面是一个C语言改错题题库及其详解答案,帮助学习者识别并改正常见的编程错误。
题目1:错误的变量初始化```cint main() {int a;printf("%d", a); // 错误:变量a未初始化return 0;}```详解答案:在C语言中,如果一个变量在使用前没有被显式地初始化,它的值是不确定的。
为了修复这个错误,我们应该在声明变量时对其进行初始化。
```cint main() {int a = 0; // 正确的初始化printf("%d", a);return 0;}```题目2:错误的数组索引```cint main() {int arr[5] = {1, 2, 3, 4, 5};printf("%d", arr[5]); // 错误:数组索引越界return 0;}```详解答案:数组索引是从0开始的,所以对于一个有5个元素的数组,有效的索引范围是0到4。
访问数组的第6个元素会导致越界错误。
```cint main() {int arr[5] = {1, 2, 3, 4, 5};printf("%d", arr[4]); // 正确的索引return 0;}```题目3:错误的循环使用```cint main() {int i;for (i = 0; i <= 10; i++) {printf("%d ", i);} // 错误:循环条件错误return 0;}```详解答案:循环条件应该是`i < 10`,以确保循环不会无限执行。
```cint main() {int i;for (i = 0; i < 10; i++) {printf("%d ", i);}return 0;}```题目4:错误的函数调用```cint main() {int result = add(5, 3); // 错误:add函数未定义printf("%d", result);return 0;}```详解答案:在调用一个函数之前,需要确保该函数已经被定义。
c语言改错题题库及详解答案
c语言改错题题库及详解答案1. 题目:以下代码段中存在错误,请找出并改正。
```c#include <stdio.h>int main() {int a = 10;int b = 20;int c = a + b;printf("The sum is %d", c);return 0;}```答案:代码中缺少了字符串结束的空格。
应改为:```cprintf("The sum is %d ", c);```2. 题目:找出并改正以下代码段中的错误。
```c#include <stdio.h>int main() {int num = 100;if (num = 100)printf("Number is 100\n");return 0;}答案:代码中使用了赋值运算符 "=" 而不是比较运算符 "=="。
应改为:```cif (num == 100)```3. 题目:以下代码段中存在逻辑错误,请指出并改正。
```c#include <stdio.h>int main() {float a, b, c;scanf("%f %f", &a, &b);c = a / b;printf("The result is %f", c);return 0;}```答案:代码中没有检查除数 b 是否为 0,这会导致运行时错误。
应添加检查:```cif (b != 0) {c = a / b;printf("The result is %f", c);} else {printf("Error: Division by zero.\n");}```4. 题目:找出并改正以下代码段中的语法错误。
C语言改错题考试题库
--------------------------------------------------------
功能:在一个一维整型数组中找出其中最大的数及其下标。
------------------------------------------------------*/
#define N 10
sort(str[N]);
for(i=0;i<N;i++)
printf("%c",str[i]);
printf("\n");
}
sort(char str[N])
{
int i,j; char t;
for(j=1;j<N;j++)
/***********FOUND***********/
for(i=0;i<N-j;i--)
功能:用选择法对数组中的n个元素按从小到大的顺序进行排序。
------------------------------------------------------*/
#include <stdio.h>
#define N 20
void fun(int a[], int n)
{
int i, j, t, p;
------------------------------------------------------*/
#include "conio.h"
#include "stdio.h"
#include "ctype.h"
#include "string.h"
C语言期末考试复习资料-程序改错部分试题及答案
/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:求如下表达式:1 1 1S = 1 + —— + ——— + ...... + ———————1+2 1+2+3 1+2+3+......+n ------------------------------------------------------*/#include <stdio.h>main(){int n;double fun();printf("Please input a number:");/**********FOUND**********/print("%d",n) ;printf("%10.6f\n",fun(n));}/**********FOUND**********/fun(int n){int i,j,t;double s;s=0;/**********FOUND**********/while(i=1;i<=n;i++);{t=0;for(j=1;j<=i;j++)t=t+j;/**********FOUND**********/=s+1/t;}return s;}/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:判断m是否为素数,若是返回1,否则返回0。
------------------------------------------------------*/#include <stdio.h>/**********FOUND**********/void fun( int n){int i,k=1;if(m<=1) k=0;/**********FOUND**********/for(i=1;i<m;i++)/**********FOUND**********/if(m%i=0) k=0;/**********FOUND**********/return m;}void main(){int m,k=0;for(m=1;m<100;m++)if(fun(m)==1){printf("%4d",m);k++;if(k%5==0) printf("\n");}}/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:用下面的和式求圆周率的近似值。
C语言程序改错题汇总
程序改错题汇总1、用"起泡法"对连续输入的十个字符排序后按从小到大的次序输出.2、分别统计字符串中大写字母和小写字母的个数。
3、求1到10的阶乘的和。
4、判断m是否为素数,若是返回1,否则返回0。
5、用选择法对数组中的n个元素按从小到大的顺序进行排序。
6、求一个3行4列矩阵的外框的元素值之和。
7、以下程序把两个数按由大到小的顺序输出来。
8、求1到20的阶乘的和。
9、判断字符ch是否与str所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后。
(指针)10、已知一个数列从第0项开始的前三项分别为0、0、1,以后的各项都是其相邻的前三项的和。
下列给定程序中,函数fun的功能是:计算并输出该数列的前n项的平方根之和sum,n的值通过形参传入。
11、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?12、编写函数fun计算下列分段函数的值:x*x+x x<0且x≠-3f(x)= x*x+5x 0≤x<10且x≠2及x≠3x*x+x-1 其它13、请编写函数fun,对长度为8个字符的字符串,将8个字符按降序排列。
14、实现交换两个整数的值。
15、读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行(这里的“单词”是指由空格隔开的字符串)。
16、先将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后面。
17、计算数组元素中值为正数的平均值(不包括0)。
18、将s所指字符串中出现的、t1所指子串全部替换成t2所指子字符串,所形成的新串放在w 所指的数组中。
在此处,要求t1和t2所指字符串的长度相同。
19、将s所指字符串中的字母转换为按字母序列的后续字母(但Z转换为A, z转换为a),其它字符不变。
20、在键盘上输入一个3行3列矩阵的各个元素的值(值为整数),后输出矩阵第一行与第三行元素之积,并在fun()函数中输出。
C语言程序改错——答案
C语言程序改错——答案(总33页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--程序改错--------------------------------------------------------请改正程序中的错误,使它能得出正确的结果。
注意:不可以增加或删除程序行,也不可以更改程序的结构。
------------------------------------------------------*/题目1:函数fun的功能是:求出两个非零正整数的最大公约数,并作为函数值返回。
例如,若给num1和num2分别输入49 和21,则输出的最大公约数为7。
int fun(int a,int b) {int r,t;if(a<b){t=a;/**********FOUND**********/b=a;/**********FOUND**********/a=t;}r=a%b;while(r!=0){a=b;b=r;/**********FOUND**********/r=a/b;}/**********FOUND**********/return a;}int main(void){int num1,num2,a;scanf("%d%d",&num1,&num2);a=fun(num1,num2);printf("the maximum common divisor is %d\n\n",a);return 0;}答案:1). a=b;2). b=t;3). r=a%b;}4). return b; 或 return(b); 或 return(b);题目2:下列给定程序中,函数fun 的功能是:判断m是否为素数,若是返回1,否则返回0。
主函数的功能是:按每行5个输出1-100之间的全部素数。
请改正程序中的4个错误,使它能得出正确的结果。
C语言程序改错题
C语言程序改错一、程序改错共 138 题(共计 1380 分)━━━━━━━━━━━━━━━━━━第 1 题(10.0 分)/*------------------------------------------------------ 功能:根据整型形参 m,计算如下公式的值:y=1+1/3+1/5+1/7+...+1/(2m-3)------------------------------------------------------*/ #include "stdio.h"double fun(int m){/**********FOUND**********/double y=1int i;/**********FOUND**********/for(i=3; i<m; i++)/**********FOUND**********/y+=1.0/(2i-3);return(y);}void main(void){int n;clrscr();printf("Enter n: ");scanf("%d", &n);printf("\nThe result is %1f\n", fun(n));getch();}答案:1). double y=1;2). for(i=3; i<=m; i++) 或 for(i=3; i<m+1;i++)3). y+=1.0/(2*i-3);第 2 题(10.0 分)/*------------------------------------------------------ 功能:用选择法对数组中的 n 个元素按从小到大的顺序进行排序。
------------------------------------------------------*/ #include <stdio.h>#define N 20void fun(int a[], int n){int i, j, t, p;for (j = 0 ;j < n-1 ;j++){/**********FOUND**********/p = jfor (i = j;i < n; i++)/**********FOUND**********/if(a[i] >a[p])/**********FOUND**********/p=j;t = a[p] ;a[p] = a[j] ;a[j] = t;}}main(){int a[N]={9,6,8,3,-1},i, m = 5; printf("排序前的数据:") ;for(i = 0;i < m;i++)printf("%d ",a[i]);printf("\n");fun(a,m);printf("排序后的数据:") ;for(i = 0;i < m;i++)printf("%d ",a[i]);printf("\n");getch();}答案:1). p = j;2). if(a[i] < a[p]) 或 if(a[p] > a[i])3). p = i;第 3 题(10.0 分)/*------------------------------------------------------ 功能:编写一个程序,从键盘接收一个字符串,然后按照字符顺序从小到大进行排序,并删除重复的字符。
C语言程序改错题及答案
if(x<min) min=x;
}
printf("%f,%f\n",max,min);
}
10、.在考生目录下,有Modify.c程序,该程序中"/***** N *****/"的下
一行中有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。
该程序功能:分别统计字符串中所有英文字母中的各元音字母个数。
for(i=0;i<sl;i++)
t[i]=s[i];
for(i=0;i<sl;i++)
/********1********///t[sl+i]=s[s1-1-i];
t[sl+i]=s[sl-i];
/********2********/
t[sl]="\0";//t[sl+s1]=’\0’;
}
void main()
/***** 2 *****/
for(i=1;i<strlen(str);i++)//i=0
if(str[i]>='a'&& str[i]<='z') str[i]=str[i]-32 ;
puts(str);
}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void main()
{ int n,i;
/***** 1 *****/
char str;// char*str
天津城市建设学院C语言改错附答案
{
t=a;
/**********FOUND**********/
b=a;
/**********FOUND**********/
a=t;
}
r=a%b;
while(r!=0)
{
a=b;
b=r;
/**********FOUND**********/
r=a/b;
}
题干:
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:根据整型形参m,计算如下公式的值:
【程序改错】
--------------------------------------------------------
功能:输入10个数,要求输出这10个数的平均值
------------------------------------------------------*/
float average(float array[10])
显示序号:2
题号:19
科目:Turbo C
题型:程序改错
题干:
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
/***********FOUND***********/
(完整word版)C语言程序改错总结
难度11、程序D1.c的功能是从键盘读入一个数并在屏幕上显示。
int main(void){int xy2;/*********Found************/scanf("%s", &xy2); //改为:scanf("%d”,&xy2);/*********Found************/printf("xy2=%5d\n", &xy2); //改为:printf("xy2=%5d\n”,xy2);return 0;}2、程序D2.c的功能是调用函数,显示两个实数间最大的一个。
#include<stdio。
h>float fmax(float x, float y);int main(void){/*********Found************/float l,1; //il = 3。
0;i = 5.6f;/*********Found************/printf("fmax(%5.2f,%5.2f)=%5.2f\n”, i, l, fMax(i,l)); // fmaxreturn 0;}/*********Found************/int fmax(float x, float y) //改:float{if (x < y)return y;else return x;}3、程序D4.c的功能是计算半径为2+3的圆的面积。
#include<stdio.h〉#define PI 3。
14/*********Found************/#define S(bj)PI*bj*bj //改:PI*(bj)*(bj) int main(void){/*********Found************/int mianJi;//改为:doublemianJi = S(2+3);printf(”mian ji=%5。
2022年天津城市职业学院公共课《C语言》科目期末试卷A(有答案)
2022年天津城市职业学院公共课《C语言》科目期末试卷A(有答案)一、填空题1、C语言的源程序必须通过【】和【】后,才能被计算机执行。
2、下面add函数的功能是求两个参数的和,并将和值返回调用函数。
函数中错误的部分是_______,改正后为_______。
void add(float a,float b){float c;c=a+b;return c;}3、执行下面程序段后,k的值是_______。
k=1;n=263;do{k*=n%10;n/=10;} while(n);4、设有一输入函数scanf("%d”,k);它不能使float类型变量k得到正确数值的原因是_______未指明变量k的地址和_______格式控制符与变量类型不匹配。
5、已有定义int a;float b,x;char cl,c2;为使a=3、b=6.5、x=12.6、cl='a'、c2='A',正确的scanf函数调用语句是_______,数据输入的形式应为_______。
6、若采用十进制数的表示形式,则077为_______,0111为_______,0xab为_______。
7、下面程序段的运行结果是_______。
char ch[]="600";int a,s=0;for(a=0;ch[a]>= '0'&&ch[a]<='9';a++)s=10*s+ch[a]-'o';printf("%d",s);8、以下程序段通过移动指针变量m,给如图9-7所示连续动态存储单元赋值。
请填空。
(假设程序段中的所有变量均已正确说明。
)for(k=0;k<10;k++,m++)scanf("%d",_______);9、下面程序段的运行结果是_______。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序改错题汇总1、用"起泡法"对连续输入的十个字符排序后按从小到大的次序输出.2、分别统计字符串中大写字母和小写字母的个数。
3、求1到10的阶乘的和。
4、判断m是否为素数,若是返回1,否则返回0。
5、用选择法对数组中的n个元素按从小到大的顺序进行排序。
6、求一个3行4列矩阵的外框的元素值之和。
7、以下程序把两个数按由大到小的顺序输出来。
8、求1到20的阶乘的和。
9、判断字符ch是否与str所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后。
(指针)10、已知一个数列从第0项开始的前三项分别为0、0、1,以后的各项都是其相邻的前三项的和。
下列给定程序中,函数fun的功能是:计算并输出该数列的前n项的平方根之和sum,n的值通过形参传入。
11、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?12、编写函数fun计算下列分段函数的值:x*x+x x<0且x≠-3f(x)= x*x+5x 0≤x<10且x≠2及x≠3x*x+x-1 其它13、请编写函数fun,对长度为8个字符的字符串,将8个字符按降序排列。
14、实现交换两个整数的值。
15、读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行(这里的“单词”是指由空格隔开的字符串)。
16、先将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后面。
17、计算数组元素中值为正数的平均值(不包括0)。
18、将s所指字符串中出现的、t1所指子串全部替换成t2所指子字符串,所形成的新串放在w 所指的数组中。
在此处,要求t1和t2所指字符串的长度相同。
19、将s所指字符串中的字母转换为按字母序列的后续字母(但Z转换为A, z转换为a),其它字符不变。
20、在键盘上输入一个3行3列矩阵的各个元素的值(值为整数),后输出矩阵第一行与第三行元素之积,并在fun()函数中输出。
21、编写一个函数,该函数可以统计一个长度为3的字符串在另一个字符串中出现的次数22、一个已排好序的一维数组,输入一个数number,要求按原来排序的规律将它插入数组中.23、编写函数fun计算下列分段函数的值:x*20 x<0且x≠-3f(x)= sin(x) 0≤x<10且x≠2及x≠3x*x+x-1 其它24、判断两个指针所指存储单元中的值的符号是否相同;若相同函数返回1,否则返回0。
这两个存储单元中的值都不为0。
25、将一个正整数分解质因数。
26、输入n,计算s=1+1+2+1+2+3+1+2+3+4+...+1+2+3+4+...+n27、读入一个整数m( 5≤m≤20 ),函数getarr调用函数rnd获得m个随机整数,函数sortpb将这m个随机整数从小到大排序。
28、809*??=800*??+9*??+1 其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。
求??代表的两位数,及809*??后的结果。
29、根据整型形参 n,计算某一数据项的值。
A[1]=1, A[2]=1/(1 + A[1]), A[3]=1/(1 + A[2]), …, A[n]=1/(1 + A[n-1])30、学习使用按位或 | 。
31、判断整数x是否是同构数。
若是同购数,函数返回1;否则返回0。
说明:所谓“同构数”是指这个数出现在它的平方数的右边。
32、输入两个双精度数,函数返回它们的平方和的平方根值。
33、根据整型形参m,计算如下公式的值:y=1+1/3+1/5+1/7+...+1/(2m-3)34、以下程序输出前六行杨辉三角形,既11 11 2 11 3 3 11 4 6 4 1…………35、根据整型形参m的值,计算如下公式的值。
1 1 1t = 1- —— - —— - ... - ——2x2 3x3 mxm36、将 m(1≤m≤10)个字符串连接起来,组成一个新串,放入pt所指字符串中。
37、求出在字符串中最后一次出现的子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL。
38、有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数。
39、编写程序, 求矩阵(3行3列)与5的乘积。
40、猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,见只剩下一个桃子了。
求第一天共摘了多少。
41、八进制转换为十进制。
42、利用递归方法求5!。
43、请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
44、先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。
45、求两数平方根之和,作为函数值返回。
46、读取7个数(1-50)的整数值,每读取一个值,程序打印出该值个数的*。
47、利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
48、编写函数fun,求两个整数的最小公倍数,然后用主函数main()调用这个函数并输出结果,两个整数由键盘输入。
49、从m个学生的成绩中统计出高于和等于平均分的学生人数,此人数由函数值返回。
平均分通过形参传回,输入学生成绩时,用-1结束输入,由程序自动统计学生人数。
50、求如下表达式:1 1 1S = 1 + —— + ——— + ...... + ———————1+2 1+2+3 1+2+3+......+n51、将整型数组中所有小于0的元素放到所有大于0的元素的前面(要求只能扫描数组一次)。
52、编写一个程序计算某年某月有几天。
(注意要区分闰年)53、分别统计输入的字符串中各元音字母(即:A、E、I、O、U)的个数。
注意:字母不分大、小写。
54、编写函数fun求20以内所有5的倍数之积。
55、在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。
(与22题相似)56、实现两个字符串的连接。
57、将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。
58、统计出若干个学生的平均成绩,最低分以及得最低分的人数。
59、删除w所指数组中下标为k的元素中的值。
程序中,调用了getindex、arrout和arrdel三个函数,getindex用以输入所删元素的下标,函数中对输入的下标进行检查,若越界,则要求重新输入,直到正确为止。
arrout用以输出数组中的数据,arrdel进行所要求的删除操作。
60、读入一行英文文本,将其中每个单词的最后一个字母改成大写,然后输出此文本行(这里的“单词”是指由空格隔开的字符串)。
61、根据整型形参 m,计算某一数据项的值。
y = 1/(100*100)+1/(200*200)+1/(300*300)+ …… +1/(m*m)62、求出N×M整型数组的最小元素及其所在的行坐标及列坐标(如果最小元素不唯一,选择位置在最前面的一个)。
63、用指针作函数参数,编程序求一维数组中的最大和最小的元素值.64、先从键盘上输入一个3行3列矩阵的各个元素的值,然后输出主对角线上的元素之和sum。
65、在字符串str中找出ASCII码值最大的字符,将其放在第一个位置上,并将该字符的原字符向后顺序移动。
66、编写input()和output()函数输入,输出5个学生的数据记录。
67、求出以下分数序列的前n项之和。
和值通过函数值返回main函数。
2/1+3/2+5/3+8/5+13/8+21/13 ……68、计算并输出k以内最大的10个能被13或17整除的自然数之和。
k的值由主函数传入。
69、将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中,过长的剩余字符接在c所指数组的尾部。
70、求两个形参的乘积和商数,并通过形参返回调用程序。
71、移动一维数组中的内容; 若数组中有n个整数, 要求把下标从0到p(含p,p小于等于n-1)的数组元素平移到数组的最后。
72、计算正整数num的各位上的数字之积。
73、编写函数fun求1000以内所有8的倍数之和。
74、将s所指字符串中最后一次出现的、t1所指子串替换成t2所指子串,所形成的新串放在w 所指的数组中。
在此处,要求t1和t2所指字符串的长度相同。
75、为一维数组输入10个整数;将其中最小的数与第一个数对换,将最大的数与最后一个数对换,输出数组元素。
76、输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
77、生成一个周边元素为5,其它元素为1的3*3的二维数组。
78、删除字符串s中的所有空白字符(包括Tab字符、回车符及换行符)。
输入字符串时用'#'结束输入。
79、打印出杨辉三角形(要求打印出10行).(与34题相似)80、编写函数fun求20以内所有5的倍数之积。
(与54题相同)81、首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中,过长的剩余字符接在c所指数组的尾部。
82、一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?83、以下程序能求出1*1+2*2+......+n*n<=1000中满足条件的最大的n。
84、输入一个字符串,过滤此串,滤掉字母字符,并统计新生成串中包含的字符个数。
85、使数组左下三角元素中的值乘以n 。
86、输入10个数,要求输出这10个数的平均值87、将一个字符串中的大写字母转换成小写字母。
88、编写一个程序,从键盘接收一个字符串,然后按照字符顺序从小到大进行排序,并删除重复的字符。
89、用起泡法对10个整数从小到大排序。
90、将s所指字符串的反序和正序进行连接形成一个新串放在t所指的数组中。
91、求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和a[1]中的数对调。
92、给定n个实数,输出平均值,并统计在平均值以下(含平均值)的实数个数。
93、求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积。
94、从键盘输入十个学生的成绩,统计最高分,最低分和平均分。
max代表最高分,min代表最低分,avg代表平均分。
95、找出一个大于给定整数m且紧随m的素数,并作为函数值返回。
96、求0-7这8个数字所能组成的奇数个数。
97、编写函数求2!+4!+6!+8!+10+12!+14!。
98、输入两个实数,按代数值由小到大输出它们,并在fun()函数中输出。