2012年C语言上机题库改错

举报
资源描述
2012年 C 语言上机考试改错题题库/*N个有序整数数列已放在一维数组中,给定程序modi.c中,函数fun的功能是:利用折半查找算法查找整数m在数组中的位置。若找到,返回其下标值;反之,返回-1。折半查找的基本算法是:每次查找前先确定数组中待查的范围:lo w和high(lowchigh),然后把m与中间位置(m id)中元素的值进行比较。如果m的值大于中间位置元素中的值,则下一次的查找范围放在中间位置之后的元素中;反之,下一次的查找范围落在中间位置之前的元素中。直到lowhigh,查找结束。请改正程序中的错误,使它能得出正确结果。*/#include#define N 10/*Error*/void fun(int aJ,int m)int low=0,high=N-l,mid;while(low=high)mid=(low+high)/2;if(m=amid)low=mid+l;else return(mid);retum(-l);main()int i,aN=-34,7,9,13,45,67,89,100,180,k,m;printf(a数组中的数据如下:);for(i=0;i=0)printf(m=%d,index=%dn,m,k);else printf(Not be found!n);【改错1】正确【学生答案】void fun(int a,int m)【参考答案】fun(int aJ,int m)【改错2】错误【学生答案】else if(m=amid)【参考答案】else if(mamid)else if(afmid0)else if(amid-m0)else if(m-amid)else if(!(amid=m)/*给定程序modi.c中函数fun的功能是:求出两个非零正整数的最大公约数,并作为函数值返回。例 如,若 给 num l和 num2分别输入4 9 和 2 1,则输出的最大公约数为7;若给 num l和 num2分别输入2 7 和 81,则输出的最大公约数为27。请改正程序中的错误,使它能得出正确结果。*/#include int fun(int a,int b)int r,t;if(ab)/*r*/a=t;b=a;t=a;r=a%b;while(r!=0)a=b;b=r;r=a%b;/*prror*/retum(a);main()int numl,num2,a;printf(Input numl num2:);scanf(n%d%d,&numl,&num2);printf(Mnuml=%d num2=%dnnH,numl,num2);a=fiin(numl,num2);printf(HThe maximun common divisor is%dnnH,a);【改 错 1】错误【学 生 答 案】a=t;b=a;t=a;【参 考 答 案】t=a;a=b;b=t;t=b;b=a;a=t;【改 错2】错误【学 生 答 案】return(a);【参 考 答 案】return(b);return b;/*给 定 程 序modi.c中 函 数fun的 功 能 是:统计一个无符号整数中各位数字值为 零 的 个 数,通 过 形 参 传 回 主 函 数:并 把 该 整 数 中 各 位 上 最 大 的 数 字 值 作 为 函 数 值 返 回。例 如,若输入无符 号 整 数3 0 8 0 0,则 数 字 值 为 零 的 个 数 为3,各 位 上 数 字 值 最 大 的 是8。请 改 正 函 数fun中 指 定 部 位 的 错 误,使 它 能 得 出 正 确 的 结 果。*/#include int fun(unsigned n,int*zero)int count=0,max=0,t;do t=n%10;/*/if(t=O)count+;if(maxt)max=t;n=n/10;while(n);/*/zero=count;return max;main()unsigned n;int zero,max;printf(nlnput n(unsigned):);scanf(%d,&n);max=fun(n,&zero);printf(nThe result:max=%d zero=%dn,max,zero);【改 错1】错误【学 生 答 案】if(t=O)【参 考 答 案】if(t=O)if(!t)if(O=t)【改 错2】错误【学 生 答 案】zero=count;【参 考 答 案】*zero=count;/*给 定 程 序modi.c中 函 数fun的功能是:计 算s所 指 字 符 串 中 含 有t所指字符 串 的 数 目,并 作 为 函 数 值 返 回。请 改 正 函 数fun中 指 定 部 位的 错 误,使 它 能 得 出 正 确 的 结 果。*/#include#include#include#include#define N 80int fun(char*s,char*t)int n;char*p,*r;n=0;while(*s)p=s;/*Error*/r=p;while(*r)if(*r=*p)r+;p+;else break;/*rr0r*/if(*r=O)n+;s+;)return n;)main()char aN,bN;int m;system(clsn);printf(nPlease enter string a:);gets(a);printf(nPlease enter substring b:);gets(b);m=fun(a,b);printf(MnThe result is:m=%dnH,m);)【改 错 1】错误【学 生 答 案】r=p;【参 考 答 案】r=t;【改 错 2】错误【学 生 答 案】if(*r=O)【参 考 答 案】if(*r=O)if(O=*r)if(*r=NULL)if(NULL=*r)if(r0=NULL)if(NULL=rOJ)if(!rO)if(!(*r)if(rO=O)if(0=r0)/*给 定 程 序 m odi.c中,函 数 fiin 的 功 能 是:将 十 进 制 正 整 数 m 转 换 成 k(2WkW9)进制数,并按位输出。例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)o请改正程序中的错误,使它能得出正确结果。*/#include#include#include void fun(int m,int k)int aa20,i;for(i=0;m;i+)/*yrro r*/aaij=m/k;m/=k;/*Error*/for(;i;i-)printf(n%d,aai);main()int b,n;system(clsM);printf(MnPlease enter a number and a base:nn);scanf(M%d%dH,&n,&b);fun(n,b);printf(Hn);)【改错1】错误【学生答案】aai=m/k;【参考答案】aai=m%k;【改错2】错误【学生答案】for(;i;i-)【参考答案】for(i=i-l;i=0;i-)for(i=i-l;i=0;-i)for(i=i-l;i=0;i=i-l)for(i=i-l;i=0;i-=l)for(i=i-l;i=0;i=-l+i)for(i-=l;i=0;i)for(i-=l;i=0;-i)for(i-=l;i=O;i=i-l)for(i-=l;i=0;i-=l)for(i-;i=O;i-)for(i-;i=O;-i)for(i;i=O;i=i-l)for(i;i=O;i-=l)for(i;i=O;i=-l+i)for(-i;i=0;i)for(-i;i=0;-i)for(-i;i=0;i=i-l)for(i;i=O;i-=l)for(-i;i=O;i=-l+i)for(i-=l;i=O;i=-l+i)/*给定程序M ODI1.C中 fun 函数的功能是:将 p 所指字符串中每个单词的最后一个字母改成大写。(这里的“单词 是指由空格隔开的字符串)。例如,若输入I am a student to take the examination.则应输出 I aM A studenT tO takE thE examination.。请修改程序中的错误之处,使它能得出正确的结果。*/#include#include#include void fun(char*p)int k=0;for(;*p;p+)if(k)/*T error*/if(P=)k=0;/*/*(p-1)=toupper(*(p-1 )elsek=1;main()char chrstr64;int d;printf(HnPlease enter an English sentence within 63 letters:);gets(chrstr);d=strlen(chrstr);chrstrfd=;chrstrd+l=0;printf(HnnBefore changing:n%sM,chrstr);fun(chrstr);printf(HnAfter changing:n%s,chrstr);)【改错1】错误【学生答案】if(P=)【参考答案】if(*p=)if=*p)if(*p=32)if(32=*p)【改错2】错误【学生答案】*(p-1)=toupper(*(p-1 )【参考答案】*(p-l)=toupper(*(p-l);/*给定程序modi.c中函数fun的功能是:在字符串的最前端加入n 个*号,形成新串,并且覆盖原申。注意:字符串的长度最长允许为79。请改正函数f i r n 中指定部位的错误,使它能得出正确的结果。*/#include#include#include#include void fun(char s,int n)char a80,*p;int i;/*T error*/s=p;for(i=0;in;i+)do ai=*p;i+;/*Mirror*/while(*p);aiJ=O;strcpy(s,a);)main()int n;char s80;system(clsn);printf(MnEnter a string:”);gets(s);printf(MnThe string V%sVnH,s);printf(nEnter n(number of*):*);scanf(%d,&n);fun(s,n);printf(nThe string after inster:%s n,s);)【改 错 1】错误【学生答案】s=p;【参考答案】P=S;p=&sOJ;【改 错2】错误【学 生 答 案】while(*p);【参 考 答 案】while(*p+);while(*(p+);/*给 定 程 序modi.c中,ftin函 数 的 功 能 是:先 从 键 盘 上 输 入 一 个3行3列矩阵 的 各 个 元 素 的 值,然 后 输 出 主 对 角 线 元 素 之 积。请 改 正 程 序 中 的 错 误,或 在 横 线 处 填 上 适 当 的 内 容 并 把 横 线 删 除,使它能得出正确的结果。*/#include int fun()int a3J3J,sum;int ij;/*r*/for(i=0;i3;i+)for(j=O;j3;j+)/*/scanf(%d aij);for(i=0;i3;i+)sum=sum*aii;printf(Sum=%dn,sum);main()fun();【改 错1】错误【学 生 答 案】【参 考 答 案】sum=l;【改 错2】错误【学 生 答 案】scanf(M%dn aijj);【参 考 答 案】scanf(%d,&aij);scanf(%d,&aifj);/*给 定 程 序modi.c中,函 数fun的功能是:从 整 数1到5 5之 间,选出能被3整 除、且至少有一位上的数是5的 那 些 数,并 把 这 些 数 放
展开阅读全文
温馨提示:
金锄头文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
相关资源
正为您匹配相似的精品文档
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新


电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号