c题库改错.docx
- 文档编号:10146132
- 上传时间:2023-02-08
- 格式:DOCX
- 页数:156
- 大小:55.37KB
c题库改错.docx
《c题库改错.docx》由会员分享,可在线阅读,更多相关《c题库改错.docx(156页珍藏版)》请在冰豆网上搜索。
c题库改错
第1题(10.0分)题号:
31
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
将s所指字符串的反序和正序进行连接形成一个新串放在
t所指的数组中。
例如:
当s所指的字符串的内容为"ABCD"时,t所指数组中
的内容为"DCBAABCD"。
------------------------------------------------------*/
#include
#include
#include
/**********FOUND**********/
voidfun(chars[],chart[])
{
inti,d;
/**********FOUND**********/
d=strlen(s);
/**********FOUND**********/
for(i=0;i t[i]=s[d-1-i]; for(i=0;i t[d+i]=s[i]; /**********FOUND**********/ t[2*d]='\0'; } main() { chars[100],t[100]; clrscr(); printf("\nPleaseenterstringS: "); scanf("%s",s); fun(s,t); printf("\nTheresultis: %s\n",t); } 第2题(10.0分)题号: 434 -------------------------------------------------------- 功能: 编写一个程序计算某年某月有几天。 (注意要区分闰年) ------------------------------------------------------*/ #include voidmain() { intyy,mm,len; printf("year,month="); scanf("%d%d",&yy,&mm); /**********FOUND**********/ switch(mm) { case1: case3: case5: case7: case8: case10: case12: len=31; /**********FOUND**********/ Break; case4: case6: case9: case11: len=30; break; case2: if(yy%4==0&&yy%100! =0||yy%400==0) len=29; else len=28; break; /**********FOUND**********/ default: printf("inputerror! \n"); break; } printf("Thelengthof%d%did%d\n",yy,mm,len); getch(); } 第1题(10.0分)题号: 27 -------------------------------------------------------- 功能: 实现3行3列矩阵的转置,即行列互换。 ------------------------------------------------------*/ fun(inta[3][3],intn) { inti,j,t; for(i=0;i for(j=0;j /**********FOUND**********/ scanf("%d",&a[i][j]); for(i=0;i { for(j=0;j printf("%4d",a[i][j]); printf("\n"); } for(i=0;i /**********FOUND**********/ for(j=0;j { /**********FOUND**********/ t=a[i][j]; a[i][j]=a[j][i]; /**********FOUND**********/ a[j][i]=t; } for(i=0;i { for(j=0;j printf("%4d",a[i][j]); printf("\n"); } } main() { intb[3][3]; fun(b,3); } 第2题(10.0分)题号: 367 -------------------------------------------------------- 功能: 用插入排序法将n个字符进行排序(降序)。 提示: 插入法排序的思路是: 先对数组的头两个元素进行排序, 然后根据前两个元素的情况插入第三个元素,再插入第 四个元素…)。 ------------------------------------------------------*/ #defineN81 #include #include voidfun(char*aa,intn) { /**********FOUND**********/ inta,b,t; for(a=1;a { t=aa[a];b=a-1; /**********FOUND**********/ while((b>=0)&(t>aa[b])) { aa[b+1]=aa[b];b--;} /**********FOUND**********/ aa[b+1]=t; } } main() {chara[N]; inti; printf("\nEnterastring: ");gets(a); fun(a,strlen(a)); printf("\nThestring: ");puts(a); getch();} 第1题(10.0分)题号: 408 -------------------------------------------------------- 功能: 写计算级数ex=1+x+x2/2! +x3/3! +...+xn/n! 的值。 ------------------------------------------------------*/ #include"stdio.h" main() { intm,n; floatx,term,ex1,ex2; printf("x,m="); scanf("%f%d",&x,&m); /**********FOUND**********/ ex1=ex2=1; term=1; for(n=1;n<=m;n++) { /**********FOUND**********/ term*=x/n; ex1+=term; } ex2=term; /**********FOUND**********/ for(n=m;n>=1;n--) { term*=n/x; ex2+=term; } printf("exforward=%fexbackrard=%f\n",ex1,ex2); getch(); } 第2题(10.0分)题号: 574 -------------------------------------------------------- 功能: 一个已排好序的一维数组,输入一个数number,要求按原来排序的规律将它插入数组中. ------------------------------------------------------*/ main() { inta[11]={1,4,6,9,13,16,19,28,40,100}; inttemp1,temp2,number,end,i,j; /***********FOUND***********/ for(i=0;i<10;i++) printf("%5d",a[i]); printf("\n"); scanf("%d",&number); /***********FOUND***********/ end=a[9]; if(number>end) /***********FOUND***********/ a[10]=number; else { for(i=0;i<10;i++) { /***********FOUND***********/ if(a[i]>number) { temp1=a[i]; a[i]=number; for(j=i+1;j<11;j++) { temp2=a[j]; a[j]=temp1; temp1=temp2; } break; } } } for(i=0;i<11;i++) printf("%6d",a[i]); } 答案: 1).for(i=0;i<10;i++)2).end=a[9];3).a[10]=number;4).if(a[i]>number) 第1题(10.0分)题号: 419 -------------------------------------------------------- 功能: 利用递归函数调用方式,将所输入的5个字符,以相反顺序 打印出来。 ------------------------------------------------------*/ #include"stdio.h" main() { inti=5; voidpalin(intn); printf("\40: "); palin(i); printf("\n"); } voidpalin(n) intn; { /**********FOUND**********/ charnext; if(n<=1) { /**********FOUND**********/ next=getchar(); printf("\n\0: "); putchar(next); } else { next=getchar(); /**********FOUND**********/ palin(n-1); putchar(next); } } 答案: 1).charnext;2).next=getchar();3).palin(n-1); 第2题(10.0分)题号: 398 -------------------------------------------------------- 功能: 使数组左下三角元素中的值乘以n。 ------------------------------------------------------*/ #include #include #include #defineN3 intfun(inta[][N],intn) { /**********FOUND**********/ inti;j;1).inti,j; for(i=0;i /**********FOUND**********/ for(j=0;j /**********FOUND**********/ a[i][j]=*n;3).a[i][j]*=n; } main() { inta[N][N],n,i,j; clrscr(); printf("*****Thearray*****\n"); for(i=0;i<3;i++) { for(j=0;j<3;j++) { a[i][j]=rand()%10; printf("%4d",a[i][j]); } printf("\n"); } do n=rand(); while(n>=5||n<1); printf("n=%4d\n",n); fun(a,n); printf("*****THERESULT*****\n"); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%4d",a[i][j]); printf("\n"); } getch(); } 第1题(10.0分)题号: 382 -------------------------------------------------------- 功能: 读入一行英文文本,将其中每个单词的最后一个字母改成 大写,然后输出此文本行(这里的“单词”是指由空格 隔开的字符串)。 例如: 若输入“Iamastudenttotaketheexamination.”, 则应输出“IaMAstudenTtOtakEthEexamination.”。 ------------------------------------------------------*/ #include"conio.h" #include"stdio.h" #include"ctype.h" #include"string.h" up1st(char*p) { /**********FOUND**********/ integerk=0;1).intk=0; for(;*p;p++) if(k) { /**********FOUND**********/ if(*p='')2).if(*p=='') { k=0; /**********FOUND**********/ *(p-1)=toupper(*(p-1);3).*(p-1)=toupper(*(p-1));少了半个括号 } } elseif(*p! ='')k=1; *(p-1)=toupper(*(p-1)); } main() { charchrstr[81]; clrscr(); printf("\nPleaseenterastring: "); gets(chrstr); printf("\n\nBeforechanging: \n%s",chrstr); up1st(chrstr); printf("\nAfterchanging: \n%s",chrstr); } 第2题(10.0分)题号: 360 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 将长整型数中每一位上为奇数的数依次取出,构成一个新 数放在t中。 高位仍在高位,低位仍在低位。 例如: 当s中的数为: 87653142时,t中的数为: 7531。 ------------------------------------------------------*/ #include #include voidfun(longs,long*t) { intd; longsl=1; /**********FOUND**********/ t=0;1).*t=0; while(s>0) { d=s%10; /**********FOUND**********/ if(d%2==0)2).if(d%2)或if(d%2! =0)或if((d%2)! =0) { *t=d*sl+*t; sl*=10; } /**********FOUND**********/ s\=10;3).s/=10;或s=s/10 } } main() { longs,t; clrscr(); printf("\nPleaseenters: ");scanf("%ld",&s); fun(s,&t); printf("Theresultis: %ld\n",t); getch(); } 第1题(10.0分)题号: 255 -------------------------------------------------------- 功能: 以下程序把两个数按由大到小的顺序输出来. ------------------------------------------------------*/ /***********FOUND***********/ swap(int*p1,*p2)1).swap(int*p1,int*p2)或voidswap(int*p1,int*p2) { intp; p=*p1; *p1=*p2; *p2=p; } main() { inta,b,*p,*q; printf("inputa,b: "); /***********FOUND***********/ scanf("%d%d",a,b);2).scanf("%d%d",&a,&b); p=&a; q=&b; if(a swap(p,q); printf("a=%d,b=%d\n",a,b); /***********FOUND***********/ printf("max=%d,min=%d\n",p,q);3).printf("max=%d,min=%d\n",*p1,*p2);或printf("max=%d,min=%d\n",a,b); } 第2题(10.0分)题号: 440 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 输入字符序列,字符序列以特殊字符“#”结束。 程序从前 向后依次读入字符,并翻译出新的字符输出。 翻译的规则 是: 如果当前读入的字符是数字符,如果该字符的面值为n, 则它的后一个字符(包括数字符)需重复输出n+1次如果当前 读入的字符不是数字符,则输出该字符。 输出时,以上述一 次翻译为一组,不同组间输出用一个空白字符隔开。 翻译 直至当前读入的字符为字符‘#’,结束翻译和输出。 ------------------------------------------------------*/ #include voidmain() { charch,nch; intcount; intk; printf("Enterstring.\n"); scanf("%c",&ch); /**********FOUND**********/ while(ch='#')1).while(ch! ='#') { if(ch>='0'&&ch<='9') { /**********FOUND**********/ count=ch-'0'-1;2).count=ch-'0'+1; scanf("%c",&nch); for(k=0;k printf("%c",nch); } else /**********FOUND**********/ printf("%f",ch);3).printf("%c",ch); printf(""); scanf("%c",&ch); } printf("#\n"); } 12909 三、程序改错共2题(共计20分) 第1题(10.0分)题号: 437 /*------------------------------------------------------ 【程序改错】 ------------------------------------------------------- 功能: 以下程序能求出1*1+2*2+......+n*n<=1000中满足条件的 最大的n。 ------------------------------------------------------*/ #include"string.h" main() { intn,s; /**********FOUND**********/ s==n=0;1).s=n=0; /**********FOUND**********/ while(s>1000)2).while(s<=1000) { ++n; s+=n*n; } /**********FOUND**********/ printf("n=%d\n",&n-1);3).printf("n=%d\n",n-1); getch(); } 第2题(10.0分)题号: 410 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 某个公司采用公用电话传递数据,数据是四位的整数,在 传递过程中是加密的,加密规则如下: 每位数字都加上5,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 题库 改错