二级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]=\应改为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

第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=0)||(k=0))应改为if((k==0)||(k==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

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(\应改为scanf(\第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

第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;

第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);