搜档网
当前位置:搜档网 › C语言改错题答案(精选)

C语言改错题答案(精选)

C语言改错题答案(精选)
C语言改错题答案(精选)

改错题答案

第1题读入一个整数k(2<=k<=1000),打印它的所有质因子(即所有为素数的因子)。

第1处:IsPrime(int n);应改为IsPrime(int n)

第2处:if!(n%i)应改为if(!(n%i))

第2题fun函数的功能是:逐个比较a、b两个字符串对应位置中的字符,把ASCII值大于或相等的字符依次存放到c数组中,形成一个新的字符串。

第1处:int k=1;应改为int k=0;

第2处:while(*p!=*q)应改为while(*p||*q)

第3题fun函数的功能:是依次取出字符串中所以数字字符,形成新的字符串并取代原符串

第1处:s[j]=s[i];应改为s[j++]=s[i];

第2处:s[j]="\0";应改为s[j]='\0';

第4题fun函数的功能;分别统计字符串中大写字母和小写字母的个数

第1处:void fun(char*s,int a,int b)应改为void fun(char*s,int*a,int*b)

第2处:a++;应改为(*a)++;

第3处:b++;应改为(*b)++;

第5题假定整数数列中的数不重复,并存放在数组中。

第1处:a[i+1]=a[i];应改为a[i]=a[i+1];

第6题计算如下公式的值t=1-1/2*2-1/3*3-…1/m*m

第1处:for(i=2;i

第2处:y-=1/(i*i);应改为y-=1.0/(i*i);

第7题用选择法对数组中的n个元素按从小到大的顺序进行排序

第1处:p=j应改为p=j;

第2处:p=i;应改为p=j;

第8题在字符串str中找出ASCII码值最大的字符将其放在第一个位置上;并将该字符前的原字符向后顺序移动。

第1处:void fun(char*p);应改为void fun(char*p)

第2处:p=q+i;应改为q=p+i;

第9题从n个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。

第1处:t=s[k];应改为t+=s[k];

第2处:*aver=&ave;应改为*aver=ave;

第10题将s所指字符串中出现的t1所指字符串全部替换成t2所指字符串,所形成的新串放在w所指的数组中。

第1处:void fun(char*s,*t1,*t2,*w)应改为void fun(char*s,char*t1,char*t2,char*w)

第2处:while(r)应改为while(*r)

第11题将一个由八进制数字字符组成的字符串转换为与其面值相等的十进制整数

第1处:n=*p-'o';应改为n=*p-'0';

第2处:n=n*7+*p-'o';应改为n=n*8+*p-'0';

第12题求出在字符串中最后一次出现的字符串的地址,通过函数值返回,并在主函数中输出从此地址开始的字符串;若未找到,则函数值未NULL.

第1处:a=NuLL;应改为a=NULL;

第2处:if(r==p)应改为if(*r==*p)

第13题根据形参m计算如下公式的值。t=1+1/2+1/3+….1/m

第1处:t+=1.0/k;应改为t+=1.0/i;

第2处:应填return t;

第14题函数fun和funx的功能:用二分法求方程2x*x*x-4x*x+3x-6=0的一个根,并要求绝对误差不超过0.001.

第1处:int r;应改为double r;

第2处:while(fabs(n-m)<0.001)应改为while(fabs(n-m)>0.001)

第15题判断字符ch是否与str所指串中的某个字符相同;若相同则什么也不做,若不同,则将其插在串的最后。

第1处:void fun(char str,char ch)应改为void fun(char*str,char ch)

第2处:if(*str==ch)应改为if(*str=='\0')

第3处:str[1]='0';应改为str[1]='\0';或str[1]=0;

第16题函数Creatlink的功能是:创建带头节点的单项链表,并为各结点数据域赋0到m-1的值。

第1处:p->next=NULL;应改为p=s;

第2处:s->data=rand()%m;应改为s->data=rand()%(m-1);

第3处:return p;应改为return h;

第17题计算并输出K以内最大的十个能被13或17整除的自然数之和

第1处:if((k%13=0)||(k%17=0))应改为if((k%13==0)||(k%17==0))

第2处:应填}

第18题实现两个整数的交换

第1处:void fun(int a,int b)应改为void fun(int*a,int*b)

第2处:t=b;b=a;a=t;应改为t=*b;*b=*a;*a=t;

第19题从低位开始取出长整形s中偶数位上的数,依次构成一个新数放在t中。

第1处:void fun(long s,long t)应改为void fun(long s,long*t)

第2处:while(s<0)应改为while(s>0)

第20题N个有序整数数列已放在一维数组中….利用折半查找算法查找整数m在数组中的位置。若找到,则返回其下标值;反之,则返回-1.

第1处:void fun(int a[],int m)应改为int fun(int a[],int m)

第2处:if(m>=a[mid])应改为if(m>a[mid])

第21题建立一个带头节点的单项链表,并用随机函数为各结点数据域赋值。

第1处:p=h;应改为p=h->next;

第2处:p=h->next;应改为p=p->next;

第22题根据整型参数m,计算如下公式的值t=1+1/2*2+1/3*3+…1/m*m

第1处:for(i=2;i

第2处:y+=1/(i*i);应改为y+=1.0/(i*i);

第23题按以下递归方式求函数值

fun(n)=10 (n=1)和fun(n-1)+2第1处:int fun(n)应改为int fun(int n)

第2处:if(n=1)应改为if(n==1)

第24题从s所指字符串中,找出t所指字符串的个数作为函数值返回。

第1处:if(r==p)应改为if(*r==*p)

第2处:if(r=='\0')应改为if(*r=='\0')

第25题计算n!

第1处:if n==0应改为if(n==0)

第2处:result=n--;应改为result*=n--;

第26题先从键盘输入一个3行3列矩阵的各个元素的值,然后输出主对角线元素之和

第1处:应填sum=0;

第2处:scanf("%d,",a[i][j]);应改为scanf("%d,",&a[i][j]);

第27题根据以下公式求3.14值,并作为函数值返回

第1处:t=0;应改为t=1.0;

第2处:while(t<=eps)应改为while(t>=eps)

第28题在字符串的最前端加入n个*,形成新串,并且覆盖原串

第1处:s=p;应改为p=s;

第2处:应填p++;或++p;或p+=1;或p=p+1

第3处:a[i]='0';应改为a[i]='\0';或a[i]=0;

第29题求出两个非零正整数的最大公约数,并作为函数值返回

第1处:b=a;应改为a=b;

第2处:return(a);应改为return(b);

第30题计算正整数num的各位上的数字之积

第1处:long k;应改为long k=1;

第2处:num\=10;应改为num/=10;

第31题将字符串tt中的小写字母都改为对应的大写字母,其他字符不变。

第1处:if((tt[i]>='a')||(tt[i]<='z'))应改为if((tt[i]>='a')&&(tt[i]<='z'))

第2处:tt[i]+=32;应改为tt[i]-=32;

第32题按顺序给s所指数组中的元素赋予2开始的偶数,然后….

第1处:if(i+1%5==0)应改为if((i+1)%5==0)

第33题将s所指字符串中的字母转换为按字母序列的后续字母,其他的字符不变

第1处:while(*s!='@')应改为while(*s)或while(*s!='\0')或while(*s!=0)

第2处:(*s)++;应改为s++;

第34题将长整形数中每一位上为奇数的数依次取出,构成一个新数放在t中

第1处:t=0;应改为*t=0;

第2处:if(d%2==0)应改为if(d%2!=0)

第35题将p所指字符串中每一个单词的最后一个字母改成大写

第1处:if(p=='')应改为if(*p=='')

第2处:*p=toupper(*(p-1));应改为*(p-1)=toupper(*(p-1));

第36题求三个数的最小公倍数,

第1处:j=1;应改为j=0;

第2处:while(t!=0&&m!=0&&n!=0)应改为while(t!=0||m!=0||n!=0)

第37题计算s所指字符串中含有t所指字符串的数目并作为函数值返回

第1处:*r=t;应改为r=t;或r=&t[0];

第2处:应填r=t;或r=&t[0];

第38题通过某种方式实现两个变量的交换,规定不允许增加语句和表达式

第1处:t=x;x=y;应改为t=*x;*x=y;

第2处:return(y);应改为return(t);或return t;

第39题s所指字符串的正序和反序进行链接,形成一个新串放在t所指的数组中

第1处:void fun(char s,char t)应改为void fun(char*s,char*t)

第2处:t[2*d-1]='\0';应改为t[2*d]='\0';或t[d+i]='\0';或t[2*d]=0;或t[d+i]=0;

第40题将n个无序整数从小到大排序

第1处:for(i=j+1;i

第2处:t=i;应改为p=i;

第41题建立一个带头节点的单项链表,并用随机函数为各节点赋值。fun的功能是将单向链表结点数据域为偶数的值累加起来,

第1处:while(p->next)应改为while(p!=NULL)

第2处:p=h->next;应改为p=p->next;

第42题将字符串s中位于奇数位置的字符或ASCII码为偶数的字符依次放入字符串t中

第1处:if(i%2&&s[i]%2==0)应改为if(i%2||s[i]%2==0)或if(i%2!=0||s[i]%2==0)

第2处:t[i]='\0';应改为t[j]='\0';或t[j]=0;

第43题找到100至n(不大于100)之间三个位上的数字都相等的所有整数,把这些整数放在s所指数组中,个数作为函数值返回。

第1处:k=n;应改为k=i;

第2处:b=k/10;应改为b=k%10;

第44题根据形参m的值(2<=m<=9)在m行m列的二维数组中存放如下所示的数据

第1处:fun(int**a,int m)应改为void fun(int(*a)[M],int m)

第2处:a[j][k]=k*j;应改为a[j][k]=(k+1)*(j+1);

第45题将s所指字符串中最后一次出现的t1所指字符串替换成t2所指子串,

第1处:void fun(char*s,t1,t2,w)应改为void fun(char*s,char*t1,char*t2,char*w)

第2处:while(w)应改为while(*w)

第46题已知一个数列从第0项开始的前三项分别为0、0、1以后,以后的各项都是其相邻的前三项之和。

第1处:fun(int n)应改为double fun(int n)

第2处:return sum应改为return sum;

第47题求出数组中最大数和次最大数并把最大数和a[0]中的数对调、此最大数和a[1]中的数对调。

第1处:void fun(int*a,int n);应改为void fun(int*a,int n)

第2处:m=0;应改为m=i;

第48题从N个字符串中找到最长的那个串,并将其地址作为函数值返回

第1处:fun(char(*sq)[N])应改为char*fun(char(*sq)[M])

第2处:return sq;应改为return sp;

第49题对N名学生的学习成绩,按从高到低的顺序找出前m(m<=10)名学生来,

第1处:*t=malloc(sizeof(STU));应改为t=(STU*)malloc(sizeof(STU)*m);

第2处:t[k].num=b[j].num;应改为strcpy(t[k].num,b[j].num);

第50题先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t 串的后面

第1处:t[i]=s[s1-i];应改为t[i]=s[s1-i-1];或t[i]=s[s1-1-

51.下列给定程序中,函数fun的功能是:将m(1<=m<=10)个字符串连接起来,组成一个新串,放在pt所指向字符串中,例如:把3个串abc,CD,EF串联起来,结果是abcCDEF. 请改正程序中的错误,使它能计算出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

第1处:void fun(char str[][],int m,char*pt)应改为void fun(char str[][10],int m,char*pt)

第2处:pt[i]=str[k,i];应改为pt[i]=str[k][i];

52.下列给定程序中,函数fun的功能是:给定n个实数,输出平均值,并统计在平均值以上(含平均值)的实数个数。例如,n=8时,输193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763所得平均值为195.838750,在平均值以上的实数个数为5.

请改正程序中的错误,使它能计算出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构

第1处:int fun(double x[],int n)应改为int fun(double x[],int n){

53.下列给定程序中,函数fun的功能是:用递归算法计算斐波拉级数数列中第n项的值。从第一项起,斐波拉级数序列为1、1、2、3、5、8、13、21.........例如,若给n输入7,该项的斐波拉级数值为13.

请改正程序中的错误,使它能计算出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构

第1处:switch(g);应改为switch(g)

第2处:case 1;应改为case 1:

54.下列给定程序中,函数fun的功能是:比较两个字符串,将长的那个字符串的首地址作为函数值返回。

请改正程序中的错误,使它能计算出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构

第1处:double fun(char*s,char*t)应改为char*fun(char*s,char*t)

第2处:(*ss)++;应改为ss++;

第3处:(*tt)++;应改为tt++;

55.下列给定程序中,函数fun的功能是:为一个偶数寻找两个素数,这两个素数之和等于

该偶数,并将这两个素数通过形参指针传回主函数。

请改正程序中的错误,使它能计算出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构

第1处:y=0;应改为y=1;

第2处:d=i-a;应改为d=a-i;

56.下列给定程序中,函数fun的功能是:用冒泡法对6个字符串按由小到大的顺序进行排序。

请改正程序中的错误,使它能计算出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构

第1处:void fun(char(*pstr)[6])应改为void fun(char*pstr[6])

第2处:if(strcmp(*(pstr+i),pstr+j)>0)应改为if(strcmp(*(pstr+i),*(pstr+j))>0)

第3处:*(pstr+i)=pstr+j;应改为*(pstr+i)=*(pstr+j);

57.下列给定程序中,函数fun的功能是:首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中,过长的剩余字符接在c所指数组的尾部。例如,当a所指字符串中的内容为abcdefg, b所指字符串中的内容为1234,c所指数组中的内容为a4b3c2d1efg,而当a所指字符串中的内容为1234, b所知字符串中的内容为abcdefg时,c所指数组中的内容应该为1g2f3e4dcba.

请改正程序中的错误,使它能计算出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构

第1处:while(i>j)应改为while(ii)

第2处:c=0;应改为*c='\0';或*c=0;

58.下列给定程序中,函数fun的功能是:现将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后面。例如:当s中的字符串为ABCDE时,则t 中的字符串应该为ABCDEEDCBA.

请改正程序中的错误,使它能计算出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构

第1处:for(i=0;i<=s1;i++)应改为for(i=0;i

第2处:t[s1]='\0';应改为t[2*s1]='\0';

59下列给定程序中,函数fun的功能是:统计字符串中各元音字母(即:A E I O U)的个数。注意:字母不分大、小写。例如:若输入THIs is a boot,则输出应该时1、0、2、2、0. 请改正程序中的错误,使它能计算出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构

第1处:void fun(char*s,int num[5]);应改为void fun(char*s,int num[5])

第2处:num[i]=0;应改为num[k]=0;

第3处:switch(s)应改为switch(*s)

60下列给定程序中,函数fun的功能是:找出一个大于给定整数m且紧随m的素数,并作为函数值返回。

请改正程序中的错误,使它能计算出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构

第1处:if(i%k!=0)应改为if(i%k==0)

第2处:if(k=i)

61.下列给定程序中,函数fun的功能是:根据整型形参m,计算如下公式的值。

Y=1/100*100+1/200*200+1/300*300+.......+1/m*m

例如,若m=2000,则应该输出:0.000160.

请改正程序中的错误,使它能计算出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

第1处:fun(int m)应改为double fun(int m)

第2处:for(i=100,i<=m,i+=100)应改为for(i=100;i<=m;i+=100)

62.下列给定程序中,函数fun的功能是:计算并输出high以内最大的10个素数之和。High 由主函数传给fun函数。若high的值为100,则函数的值为732.

请改正程序中的错误,使它能计算出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

第1处:break应改为break;

63下列给定程序中,函数fun的功能是:将字符串p中的所有字符复制到字符串b中,要求每复制三个字符之后插入以个空格。例如,在调用fun函数之前给字符串a输入ABCDEFGHIJK,调用函数之后,字符串b中的内容则为ABC DEF GHI JK.

请改正程序中的错误,使它能计算出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

第1处:i=1;应改为i=0;

第2处:while(i<3||*p)应改为while(i<3&&*p)

第3处:b[k]='';应改为b[k++]='';

64.下列给定程序中,函数fun的功能是:将大写字母转换为对应小写字母之后的第五个字母:若小写字母为v-z,是小写字母的值减21,转换后的小写字母作为函数值返回。

请改正程序中的错误,使它能计算出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

第1处:c=c-32;应改为c=c+32;

第2处:c=c-5;应改为c=c+5;

65.下列给定程序中,函数fun的功能是:从低位开始取出长整型变量s中的齐数位上的数,依次构成一个新数放在t中,例如:当s总的数为7654321时,t中的数为7531.

请改正程序中的错误,使它能计算出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构

第1处:void fun(long s,long t)应改为void fun(long s,long*t)

第2处:s1=s1*100;应改为s1=s1*10;

66.下列给定程序中,函数fun的功能是:求出以下分数序列的前n项之和。

2/1,3/2,5/3,8/5,13/8,21/13...........

和值通过函数值返回mian()函数。例如:若n=5则应该输出8.391667

请改正程序中的错误,使它能计算出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构

第1处:fun(int n)应改为double fun(int n)

第2处:b+=c;应改为b=c;

67下列给定程序中,函数fun的功能是:应用递归算法求某数a的平方根.求平方根的替代公式如下:

x1=1/2(x0+a/x0)

例如:2的平方根值为1.414214

请改正程序中的错误,使它能计算出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构

第1处:fun(double a,double x0)应改为double fun(double a,double x0)

第2处:if(abs(x1-x0)>=1e-6)应改为if(fabs(x1-x0)>=1e-6)

68下列给定程序中,函数fun的功能是:根据输入的三个边长(整型值)判断能否构成三角形;构成的是等边三角形,还是等腰三角形,若能构成等边三角形函数返回3,若能构成等腰三角形函数返回2,若能构成三角形函数返回1,若不能构成三角形函数返回0

请改正程序中的错误,使它能计算出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构

第1处:return 1;应改为return 3;

第2处:return 3;应改为return 1;

69.下列给顶程序的功能是:读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出次文本行.例如,若输入I am a student to taske the examination ,则应输出I Am A Student To Take The Examination.

请改正程序中的错误,使它能计算出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构

第1处:void upfst(char p)应改为void upfst(char*p)

70.下列给定程序中,函数fun的功能是:从整数1到55之间,选出能被3整除、且有一为以上的数是5的那些数,并把这些数放在b所指的数组中,这些数的个数作为函数值返回。规定,函数中a1放各位数,a2 放十位数。

请改正程序中的错误,使程序能得出正确的结果。

注意:不要改动main函数,不得增行或减行,也不得更改程序的结构。

第1处:int fun(int*b);应改为int fun(int*b)

第2处:for(k=10;k<=55;k++)应改为for(k=1;k<55;k++)

第3处:return k;应改为return i

71下列给定程序中,函数fun的功能是:求K!(K<13),所求阶乘的值作为函数值返回。例如:若K=10,则应输出3628800.

请改正程序中的错误,使程序能得出正确的结果。

注意:不要改动main函数,不得增行或减行,也不得更改程序的结构。

第71题答案

第1处:if k>1应改为if(k>1)

72下列给定程序中,函数fun的功能是:统计子字符串substr在字符串str中出现的次数。例如,若字符串为aaas lkaaas,子字符串为as,则应输出2.

请改正程序中的错误,使程序能得出正确的结果。

注意:不要改动main函数,不得增行或减行,也不得更改程序的结构。

第72题答案

第1处:int fun(char*str,*substr)应改为int fun(char*str,char*substr)

第2处:for(i=0,str[i],i++)应改为for(i=0;str[i];i++)

73. 下列给定程序中,函数fun的功能是:传入一个整数m,计算如下公式的值。

T=1-1/2-1/3-……-1/m

例如,若输入5,则应输出-0.283333.

请改正程序中的错误,使程序能得出正确的结果。

注意:不要改动main函数,不得增行或减行,也不得更改程序的结构。

第73题答案

第1处:t=1.0-1/i;应改为t-=1.0/i;或t=t-1.0/i;或t-=(double)1/i;

第2处:应填return t;

74. 下列给定程序中,函数fun的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序,插入法的基本算法是:先对字符串中的头两个元素进行排序。然后把第三个字符插入到前两个字符中,插入后前三个字符依然有序:再把第四个字符插入到前三个字符中,。。。。。待排序的字符串已在主函数中赋予。

请改正程序中的错误,使程序能得出正确的结果。

注意:不要改动main函数,不得增行或减行,也不得更改程序的结构。

第74题答案

c语言程序改错题

程序改错------------------------------------- 1题目:在一个一维整型数组中找出其中最大的数及其下标。 程序中共有4条错误语句,请改正错误。 -----------------*/ #define N 10 /**********FOUND**********/ float fun(int *a,int *b,int n) { int *c,max=*a; for(c=a+1;cmax) { max=*c; /**********FOUND**********/ b=c-a;} return max; } main() { int a[N],i,max,p=0; printf("please enter 10 integers:\n"); for(i=0;ix[i+1]) { t=x[j];x[j]=x[j+1];x[j+1]=t;} } main() { int i,n,a[100]; printf("please input the length of the array:\n"); scanf("%d",&n); for(i=0;ij;j++) 或 for(j=0;jj;j++) 3 if(x[j]>x[j+1]) 或 if(x[j+1]

C语言程序改错及填空题

下列程序是建立一个包含学生有关数据的单向链表。但该程序有2个错误,错误出现在每个注释行附近,请调试改正。调试改正中,不得改变程序结构,也不得增删语句。 #define NULL 0 struct stud { long num; char name[10]; float score; struct stud *next; }; /* …………… comment …………… */ int n; struct stud create() 序中有两处错误代码,请改正.注意,不得改变程序结构。 #include <> main() { int a[8],*p=a; int i,j; int tempmin,tempcode; printf("\n input the numbers:\n"); for (i=0;i<8;i++) scanf("%d",p+i);

tempmin=*p; for (i=0;i<7;i++) { for (j=i;j<8;j++) if (j==i||*(p+j)

c语言程序改错

【程序改错】 1.功能:利用递归函数调用方式,将所输入的5个字符,以相反顺序 打印出来。 char next; next=getchar(); palin(n-1); 2.功能:求广义菲玻那契级数的第n项。广义菲玻那契级数的前n 项为: 1,1,1,3,5,9,17,31,…… 项值通过函数值返回 main ( )函数。 例如:若 n = 15,则应输出:The value is: 2209。 for (k=4; k<=n; k++) a=b; return d; 3.功能:根据整型形参m,计算如下公式的值: y=1/2+1/8+1/18+...+1/2m*m double y=0.0; 4.功能:编制统计营业员一天的营业额的程序,设程序采用一个循环 实现,每次循环输入一笔交易金额并累计营业额。由于营 业员一天完成的交易次数是不确定的,为此以最后附加输 入一笔0或负数交易额作为交易金额已全部输入结束的标志。 float sale,sigma; scanf("%f",&sale); sigma=sigma+sale; 5.功能:读取7个数(1-50)的整数值,每读取一个值,程序打印出该值个数的*。while(n<8) while(a<1||a>50); for(i=0;i

C语言程序改错2

1、以下程序的功能是求如下表达式: 1 1 1 S = 1 + ——+ ———+ ...... + ——————— 1+2 1+2+3 1+2+3+......+n 『答案』:1 scanf("%d",&n); 2 float fun(int n) 3 for(i=1;i<=n;i++) 4 s+=1.0/t 或s= s + 1.0 /t; 2、题目:函数fun的功能是:根据整型形参m的值,计算如下公式的值。 1 1 1 t = 1- ——- ——- ... - —— 2x2 3x3 mxm 例如,若m=5,则应输出:0.536389 『答案』:1 for(i=2;i<=m;i++)或for(i=2;i 2 float s=0,t=1,p=1; 3 while(fabs(t)>1e-4)或while(fabs(t)>0.0001) 4 printf("pi=%f\n", s * 4 ); 4、功能:计算正整数num的各位上的数字之积。例如,输入252,则输出应该是20。『答案』:1 long k=1; 或long int k=1; 2 num/=10; 或num=num/10; 3 scanf("%ld",&n); 4 printf("\n%ld\n",fun(n)); 5、功能:(与上题略有不同)计算正整数num的各位数字之积。例如,若输入:252,则输出应该是:20。若输入:202,则输出应该是:0。 『答案』:1 {long k=1; 2 num/=10; 或num=num/10; 3 } while(num) ; 或}while(num!=0); 或}while(num>0); 6、题目:判断m是否为素数,若是返回1,否则返回0。 『答案』:1 int fun( int m) 或fun( int m) 2 for(i=2;isqrt(i)) 4 return i; 或return (i);

C语言程序改错题

第12次上机程序改错第1题 【程序改错】 -------------------------------------------------------- 功能:求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积。 例如:输入圆的半径值:19.527 输出为:s = 598.950017。 ------------------------------------------------------*/ #include #include /**********FOUND**********/ double fun( r) double fun(double r) { double s; /**********FOUND**********/ s=1/2*3.14159* r * r; s=1.0/2*3.14159*r*r; /**********FOUND**********/ return r; return s; } main() { float x;

printf ( "Enter x: "); scanf ( "%f", &x ); printf (" s = %f\n ", fun ( x ) ); } 第2题【程序改错】 功能:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。 例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为:“EDCBAABCDE”。 ------------------------------------------------------*/ #include #include #include void fun (char *s, char *t) { /**********FOUND**********/ int i; int sl,i; sl = strlen(s); for (i=0; i

程序改错完整版---C语言

(一)功能:用选择法对数组中的n个元素按从小到大的顺序进行排序。#include "stdio.h" #define N 20 void fun(int a[], int n) { int i, j, t, k; for (j = 0 ;j < n-1 ;j++) { /**********ERROR**********/ k = j for (i = j+1;i < n; i++) /**********ERROR**********/ if(a[i] >a[k]) /**********ERROR**********/ k=j; t = a[k] ; a[k] = 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"); } 【参考答案】 k = j; 【参考答案】 if(a[i] < a[k]) if(a[k] > a[i])

【参考答案】 k = i; (二)功能:求广义菲玻那契级数的第n项。广义菲玻那契级数的前n 项为: 1,1,1,3,5,9,17,31,…… 项值通过函数值返回 main ( )函数。 例如:若 n = 15,则应输出:The value is: 2209。 #include "conio.h" #include "stdio.h" long fun ( int n ) { long a=1, b=1, c=1, d=1, k; /**********ERROR**********/ for (k=4; k

齐齐哈尔大学C语言题库 程序改错(部分)

1.【程序改错】 题目:在一个一维整型数组中找出其中最大的数及其下标。 程序中共有4条错误语句,请改正错误。 #define N 10 /**********FOUND**********/ float fun(int *a,int *b,int n) int fun(int *a,int *b,int n) { int *c,max=*a; for(c=a+1;cmax) { max=*c; /**********FOUND**********/ b=c-a;} *b=c-a;} return max; } main() { int a[N],i,max,p=0; printf("please enter 10 integers:\n"); for(i=0;i

C语言程序改错题

第1题【程序改错】 功能:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。 例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为:“EDCBAABCDE”。 ------------------------------------------------------*/ #include #include #include void fun (char *s, char *t) { /**********FOUND**********/ int i; sl = strlen(s); for (i=0; i

C语言改错题

题号:1 题目:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列 /************FOUND***********/ a[i]=a[i-1]; /************FOUND***********/ exit;} 正确答案:a[i+1]=a[i]; break;} 题号:2 题目:以下程序的功能是求如下表达式: /************FOUND***********/ print("%d",n) ; /************FOUND***********/ fun(int n) 正确答案:scanf(“%d”,&n); float fun(int n) 题号:3 题目:函数fun的功能是:根据整型形参m的值,计算如下公式的值。 /**********FOUND**********/ y-=1/(i*i); /**********FOUND**********/ return m; 正确答案:y-=1.0/(i*i); return c; 题号:4 题目:以下程序把一由小到大的有序数列放在a[1]到a[n]中,a[0]用做工作单元,程序把读入的x值插入到a数组中,插入后,数组中的数仍有序。 /************FOUND***********/ { a[i]=a[i+1]; /************FOUND***********/

for(i=0;i<=n;i++) 正确答案:{ a[i+1]=a[i]; for(i=1;i<=n;i++) 题号:5 题目:函数scopy的功能是:将一个字符串前面n个子字符送到一个字符型数组中去 ,然后再加上一个'\0'。不用系统提供的函数strcpy。请改正程序中的2个错误,使它能得出正确的结果。 /**************FOUND**************/ scanf("%d",n); /**************FOUND**************/ scopy(str1,str2); 正确答案:scanf("%d",&n); scopy(str1,str2,n); 题号:6 题目:函数fun的功能是:求n!。主函数的功能是计算: x!+y!+z!的值。请改正程 序中的错误,使它能得出正确的结果。 /**********FOUND**********/ scanf("%d,%d,%d",x,y,z); /**********FOUND**********/ printf("Sum=%d\ n",sum); 正确答案:scanf("%d,%d,%d",&x,&y,&z); printf("Sum=%ld\ n",sum); 题号:7 题目:编写函数fun求整数n以内(不包括n)3的倍数之和,在main函数中由键盘输 入n值,并输出运算结果。 /**********FOUND**********/ scanf("%d",n); /**********FOUND**********/ result=fun( ); 正确答案:scanf("%d",&n); result=fun(n); 题号:8 题目:函数fun的功能是:求1到20的阶乘的和。 /**********FOUND**********/ s+t=s; /**********FOUND**********/ printf("jiecheng=%d\n",s);

C语言程序改错题及答案

程序调试1、 #include #include void fun(char *s,char *t) { int i,sl; sl=strlen(s); for(i=0;i void main() { int n,i; scanf("%d",&n);

/****** 1 ******/ i=1;// i=2; while(n>1) if(n%i==0) { printf("%d\t",i); n/=i; } else /******** 2 *******/ n++;// i++; } 3、 #include #include void main() { int n,s=0; scanf("%d",&n); n=fabs(n); /******** 1 *******/ while(n>1) { // 1}n 2}n!=0 s=s+n%10; /******** 2 ******/ n=n%10;// n=n/10; } printf("%d\n",s); } 4、

C语言程序改错练习题

程序改错练习题 下面每个程序的划线处有语法或逻辑错误,请找出并改正,使程序符合题意。 1.求1?2?3?4? ?n main() { int sum; 正确:int sum=1; int n,i=1; scanf("%d",n); scanf(“%d”,&n); printf(“\n”); while(ia[j]) if(max

main() { float a,b; int c; float c; scanf("%f,%f",&a,&b); c=sum(a,b); printf("\nSum is %f",sum); printf("\nSum is %f",c); } 4. x , y两个数中,让x中存较大的数,y存较小的数 #include main( ){ int x , y=200 , z=0; x=180; if ( x

天津城建大学C语言程序改错

程序改错 功能:编制统计营业员一天的营业额的程序,设程序采用一个循环实现,每次循环输入一笔交易金额并累计营业额。由于营 业员一天完成的交易次数是不确定的,为此以最后附加输 入一笔0或负数交易额作为交易金额已全部输入结束的标志。 有以下统计营业员一天营业额的算法: 统计营业员一天营业额 { 营业额清0; 输入第一笔交易额; while(交易额>0.0) { 累计营业额; 输入下一笔交易额; } 输出营业额; } 记一笔交易额为变量sale,营业额为sigma。 /**********FOUND**********/ float sale,sigma; sigma=0.0; printf("Enter sale data.\n");

/**********FOUND**********/ scanf("%f",&sale); while(sale>0.0) { /**********FOUND**********/ sigma+=sale; 功能:输入两个双精度数,函数返回它们的平方和的平方根值。例如:输入:22.936 和14.121,输出为:y = 26.934415。/**********FOUND**********/ double fun (double *a, double*b) { double c; /**********FOUND**********/ c = sqrt(*a**a + *b**b); /**********FOUND**********/ return c; 【程序改错】 -------------------------------------------------------- 功能:分别统计字符串中大写字母和小写字母的个数。

C语言程序设计实验指导_上交大_课前练习-改错-完善程序-课后练习参考答案

实验一Visual C++集成环境实验内容 (一)程序改错 1. (1)无法运行 (2)将第二个C程序重新存放到另一个工程文件中 (3)同一个工程文件只能有一个main函数 2. (1)/*一个简单的程序*/ (2)void main() (3)} 3. (1)int a,b,c; (2)a=2; (3)c=a*b; (二)完善程序 1. (1)year (2)month (3)day 2. (1)c (2)a*a+b*b (3)c 3. (1)4 (2)4*a (3)s 课后练习 1.D

2.D 3.A 4.C 5.C 6.C 7.stdio.h 8.main函数 实验二数据类型、运算符和表达式课前练习 1. 20 8 70 0 2. Abs3 Class _else sum my_class 、 3block a+b for fun(4) a-b 3.B 4.D 5.A 6.C 7.D 8.B 实验内容 (一)程序改错 1. (1)int x1,x2,x3,x4; (2)scanf("%d,%d",&a,&b); (3)c=x4*1000+x2*100+x3*10+x1; 2. 程序1: ① 2 2 ②error C2065: 'a1' : undeclared identifier 变量a1没有定义 sum=a+b+c ③ 1 error C2146: syntax error : missing ';' before identifier 'printf' printf语句之前缺少分号

sum=a+b+c; ④0 error(s), 0 warning(s) ⑤a=1 b=3 c=2 sum=6 ⑥语句以分号结束;变量要先定义后使用。程序2: ① 2 2 ②error C2065: 'sum' : undeclared identifier 变量sum没有定义 int sum=a+b; 1 error C2086: 'c' : redefinition 变量c重复定义 c=a+b+sum; ③a=1 b=3 sum=8 ④在同一个函数体内,变量要先定义后使用,但不能重复定义 程序3: ① 1 error C2106: '=' : left operand must be l-value 赋值符号左边参数错误 c=a+b; ②c=4 ③赋值符号左边只能是变量,不能是常量或表达式 3. (1)t=a; (2)a=b;; (3)printf("a=%d\tb=%d\n",a,b); (二)完善程序 1. (1) int n (2)”%d”,&n (3)s 2. (1)float s (2)(float)a/b (3)%f 3. (1)#include (2)pow(x,y) (3)“%lf”,s

C语言程序改错基本题

北京石油化工学院12级复习题 程序改错 一、下面每个程序的划线处有语法或逻辑错误,请找出并改正,使其得到符合题意的执行结果。 1.求1?2?3?4? ?n main() { long int sum; int n,i=1; scanf("%d",n); printf(“\n”); while(ia[j]) { max=a[j]; m=j; } printf(“下标:%d\n最大值:%d”, j, max) } *3. 求3+4 int 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

c语言程序改错讲解

一、程序改错共44题 第1题(10.0分)题号:380 难度:中第2章 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能:输入两个双精度数,函数返回它们的平方和的平方根值。 例如:输入:22.936 和 14.121,输出为:y = 26.934415。 ------------------------------------------------------*/ #include #include #include /**********FOUND**********/ double fun (double *a, *b) // double fun (double *a, double *b) { double c; /**********FOUND**********/ c = sqr(a*a + b*b); // c = sqrt(a*a + b*b); /**********FOUND**********/ return *c; // return c; } main ( ) { double a, b, y; printf ( "Enter a, b : "); scanf ("%lf%lf", &a, &b ); y = fun (&a, &b); printf ("y = %f \n", y ); } 第2题(10.0分)题号:438 难度:中第2章 /*------------------------------------------------ 【程序改错】 -------------------------------------------------- 功能:编写函数fun,求两个整数的最小公倍数,然后用主 函数main()调用这个函数并输出结果,两个整数由 键盘输入。 ------------------------------------------------*/

2013计算机等级考试二级C语言程序改错题

2013计算机等级考试二级C语言程序改错题 1、下列给定程序中,函数fun的功能是:将s所指字符串的郑旭和反序进行连接,形成的新串放在t所指的数组中 2、函数fun的功能是:用下面的公式求π的近似值,知道最后一项的绝对值小于指定的数为止。 3、函数fun的功能是:传入一个整数m,计算如下公式的值。T=1/2-1/m。 4、函数fun的功能是:求两个非零正整数的最大公约数,并作为函数值返回。、从参数1-55,查找能被3整除且有一位上的数值是5的数,把这些数放在b所指的属猪5 中,这些数的个数作为函数值返回。规定函数中a1放个位数,a2放十位数。 6、求出s所指字符串中最后一次出现的t所指字符串的地址,并通过函数值返回,在主函数中输出从此地址开始的字符串;若未能找到,则函数值为null。 7、按以下递归公式求函数的值fun(n)={10 (n=1)。 8、函数fun和funx的功能是:用二分法求方程2x-4x+3x-6=0的一个根,并要求绝对误差不超过0.001。 9、首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中,过长的升序字符接在c所指的数组的尾部。 10、计算整数n的阶乘。 11、计算函数F(x,y,z)=(x+y)的值。其中x和y的值不相等,z和y的值不相等。 12、利用折半查找法查找整数m在数组中的位置。若找到,返回其下标值;否则,返回-1。 13、求三个数的最小公倍数。

14、将s所指字符串中最后一次出现的鱼t1所指字符串相同的子串替换成t2所指字符串,所形成的新串放在w所指的数组中。要求t1和t2所指字符串的长度相同。 15、逐个比较p、q所指两个字符串对应位置上的字符,并把ASCII值大或相等的字符一次存放到c所指的数组中,形成一个新的字符串。 16、根据以下公示求π值,并作为函数值返回。 17、将s所指字符串中出现的与t1所指字符串相同的子串全部替换为t2所指字符串,所形成的新串放在w所指的数组中。要求t1和t2所指字符串的长度相同。 18、从s所指字符串中,找出t所指字符串的个数作为函数值返回。 19、对n名学生的学习成绩,从高到地的顺序找出钱m(<10)名学生来,并将这些学生的数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。 20、根据整形参数m,计算如下公式的值y=1/(100*100)+。 21、从低位开始依次取出长整型变量s中偶数位上的数,构成一个新数放在t 中。高位仍在高位,低位仍在低位。 22、将p所指字符串中的所有字符复制到b中,要求每复制3个字符之后插入一个空格。 23、把从主函数中输入的3个数,最大的数放在a中,中间的数放在b中,最小的数放在c中。 24、用递归算法计算斐波拉契数列中第n项的值。从第1项起,斐波拉契数列1,1,2,3,5,。 25、将一个由八进制数字字符组成的字符串转换成十进制整数。规定输入的字符串最多只能包含5位八进制数字字符。 26、按顺序给s所指数组的元素赋予2开始的偶数,然后再按顺序对每5个元素求平均值,并将这些值依次存放在w所指的数组中。若s所指数组中元素的个数不是5的倍数,则多余部分忽略不计。

C语言程序改错及填空题

C语言程序改错及填空题

gc23.c下列程序是建立一个包含学生有关数据的单向链表。但该程序有2个错误,错误出现在 每个注释行附近,请调试改正。调试改正中,不得改变程序结构,也不得增删语句。 #define NULL 0 struct stud { long num; char name[10]; float score; struct stud *next; }; /* …………… comment …………… */ int n; struct stud create() ////////struct stud *create(void) { struct stud *head,*p1,*p2; n=0; p1=p2=(struct stud *)malloc(sizeof(struct stud)); scanf("%ld,%s,%f",&p1->num,p1->name,& p1->score); /* ……………comment ……………

*/ head=NULL; while(p1!=0) //////////while(p1->num!=0) { n=n+1; if(n==1) head=p1; else p2->next=p1; p1=(struct stud *)malloc(size(struct stud)); scanf("%ld,%s,%f",&p1->num,p1->name,& p1->score); } p2->next=NULL; return(head); } gc57.c的功能是互换给定数组中的最大数和最小数。如将下面8个数:5,3,1,4,2,8,9,6 变成: 5,3,9,4,2,8,1,6 程序中,最大数与最小数的互换操作通过函数调用来实现,让指针max和min分别指向最大数和最小数。程序有二处错误,请改正。注意:不得增行和删行,也不得修改程序的结构。 main() {

C语言程序改错题及答案

C语言程序改错题及答 案 Company number:【0089WT-8898YT-W8CCB-BUUT-202108】

程序调试 1、 #include <> #include <> void fun(char *s,char *t) { int i,sl; sl=strlen(s); for(i=0;i #include <> void main() { char a[80]; int n[5]={0},i; gets(a); for(i=0; a[i]!=’\0’; i++) /***** 1 *****/ switch(tolower(a+i)) { // (tolower(a[i])) case 'a': n[0]++; break; case 'e': n[1]++; break; case 'i': n[2]++; break; case 'o': n[3]++; break; /***** 2 *****/ case'U': n[4]++; break; // ‘u’ } for(i=0;i<5;i++) printf("%d\n",n[i]); } 11、在考生目录下,有程序,该程序中"/***** N *****/"的下 一行中有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负) 该程序功能:输入n(0 void main() { int i,j,n; /***** 1 *****/ scanf("%d",n); // &n for(i=1;i<=n;i++) {

相关主题