C语言习题.docx
- 文档编号:28615960
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:45
- 大小:28KB
C语言习题.docx
《C语言习题.docx》由会员分享,可在线阅读,更多相关《C语言习题.docx(45页珍藏版)》请在冰豆网上搜索。
C语言习题
C程序设计“上机考”参考题
包含二类题型:
程序修改题、程序设计题
(答案供参考,勿死记硬背)
(一)修改题
1.在考生目录下,有Modify.c程序,该程序中“/******N******/”的下一行中有错误,请改正(注意:
不得加行、减行、加句、减句,否则后果自负)。
该程序功能:
输入m、n(要求输入数均大于0),输出它们的最小公倍数
#include
voidmain()
{intm,n,k;
/****1*****/
while(scanf(“%d%d”,&m,&n),m<0&&n<0);//!
(m>0&&n>0)(这是参考答案。
下同)
for(k=m;k%n!
=0;)
/*****2****/
k=k+m%n;//k=k+m
printf(“%d\n”,k);
}
2.在考生目录下,有Modify.c程序,该程序中“N”是根据程序功能需要填充部分,请完成程序填充(注意:
不得加行、减行、加句、减句,否则后果自负)。
该程序功能:
调用函数f计算代数多项式1.1+2.2*x+3.3*x*x+4.4*x*x*x+5.5*x*x*x*x当x=1.7时的值。
#include
floatf(float,float*,int);
voidmain()
{floatb[5]={1.1,2.2,3.3,4.4,5.5};
printf(“%f\n”,f(1.7,b,5));
}
floatf
(1)//floatf(floatx,floata[],intn)
{floaty=a[0],t=1;inti;
for(i=1;i 2;//returny } 3.在考生目录下,有Modify.c程序,该程序中“N”是根据程序功能需要填充部分,请完成程序填充(注意: 不得加行、减行、加句、减句,否则后果自负)。 该程序功能: 调用函数f,求a数组中最大值与b数组中最小值之差。 #include floatf(floatx[],intn,intflag) {floaty;inti; 1//y=x[0] for(i=1;i returny; } voidmain() {floata[6]={3,5,9,4,2.5,1},b[5]={3,-2,6,9,1}; printf(“%.2f\n”,f(a,6,1)2));//printf(“%.2f\n”,f(a,6,1)-f(b,5,-1)); } 4.在考生目录下,有Modify.c程序,该程序中“/******N******/”的下一行中有错误,请改正(注意: 不得加行、减行、加句、减句,否则后果自负)。 程序功能: 分别统计字符串中所有英文字母中的各元音字母的个数。 #include #include voidmain() {chara[80];intn[5]={0},i; gets(a); for(i=0;a[i]! =‘\0’;i++) /****1*****/ switch(toupper(a[i]){//switch(tolowera[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]++;}//case‘u’: n[4]++; for(i=0;i<5;i++)printf(“%d\n”,n[i]); } 5.在考生目录下,有Modify.c程序,该程序中“/******N******/”的下一行中有错误,请改正(注意: 不得加行、减行、加句、减句,否则后果自负)。 程序功能: 输入n(0 如输入为4,则输出: 1 222 33333 4444444 #include voidmain() {inti,j,n; /*****1******/ scanf(“%d”,n);//scanf(“%d”,&n); for(i=1;i<=n;i++){ for(j=1;j<=n+1-i;j++)putchar(‘└┘’);//注: └┘代表一个空格 for(j=1;j<=2*i-1;j++) putchar((char)(i+48)); /****2****/ putchar(\n);//putchar(‘\n’);} } 6.在考生目录下,有Modify.c程序,该程序中“N”是根据程序功能需要填充部分,请完成程序填充(注意: 不得加行、减行、加句、减句,否则后果自负)。 该程序功能: 调用函数f,将字符串中的所有字符逆序存放,然后输出。 例如, 输入字符串为“123456”,则程序的输出结果为“654321”。 #include #include voidmain() {chars[60],*f(char*); gets(s);printf(“%s\n”,f(s)); } 1f(char*x)//char* {chart;inti,n; 2//n=strlen(x); for(i=0;i returnx; } 7.在考生目录下,有Modify.c程序,该程序中“N”是根据程序功能需要填充部分,请完成程序填充(注意: 不得加行、减行、加句、减句,否则后果自负)。 该程序功能: 调用函数f,求二维数组中所有元素之和。 #include floatf (1)//float**x,intm,intn {floaty=0;inti,j; for(i=0;i returny;} voidmain() {floata[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},*b[3]; inti; for(i=0;i<3,i++)b[i]=2;//&a[i][0] printf(“%.2f\n”,f(b,3,4)); } 8.在考生目录下,有Modify.c程序,该程序中“N”是根据程序功能需要填充部分,请完成程序填充(注意: 不得加行、减行、加句、减句,否则后果自负)。 该程序功能: 输入一个字符串,输出其中所出现过的大写英文字母。 如运行时输入字符串“FONTNAMEandFILENAME”,应输出“FONTAMEIL”。 #include {charx[80],y[26];inti,j,ny=0; gets(x); for(i=0;x[i]! =‘\0’;i++) if(x[i]>=‘A’&&x[i]<=‘Z’){ for(j=0;j /*****1*****/ if(y[i]==x[j])continue;//这一行要改2处y[j]==x[i]break; if(j==ny){y[ny]=x[i];ny++;} } /****2****/ for(i=0;i<26;i++)//i printf(“%c”,y[i]); printf(“\n”); } 9.在考生目录下,有Modify.c程序,该程序中“N”是根据程序功能需要填充部分,请完成程序填充(注意: 不得加行、减行、加句、减句,否则后果自负) 该程序功能: 输入一个整数后,输出该数的位数。 若输入3214,则输出4,输入-23156,则输出5。 #include voidmain() {intn,k=0; scanf(“%d”,&n); while (1){//n k++; 2;//n=n/10;} printf(“%d\n”,k); } 10.在考生目录下,有Modify.c程序,该程序中“N”是根据程序功能需要填充部分,请完成程序填充(注意: 不得加行、减行、加句、减句),否则后果自负) 该程序功能: 运行时输出下列结果。 abcdefg abcde abc a #include voidmain() {inti,j;chark; for(i=0;i<4;i++){ for(j=0;j └┘代表一个空格 1;//k=‘a’; for(j=9-2*i;j>0;j--){ k=(char)k++; printf(“%c”,2);//k-1 } putchar(‘\n’);} } 11.在考生目录下,有Modify.c程序,该程序中“/******N******/”的下一行中有错误,请改正(注意: 不得加行、减行、加句、减句,否则后果自负)。 该程序功能: 运行时若输入a,n分别为3,6,则输出下列表达式的值。 3+33+333+3333+33333+333333 #include voidmain() {inti,a,n,t=0; /********1*******/ s=0;//ints=0; scanf(”%d%d”,&a,&n); for(i=1;i<=n;i++){ /*******2******/ t=t*10+i;//t=t*10+1; s=s+t; } s=s*a; printf(“%d\n”,s); } 12.在考生目录下,有Modify.c程序,该程序中“/******N******/”的下一行中有错误,请改正(注意: 不得加行、减行、加句、减句,否则后果自负)。 该程序功能: 运行时输入n,输出n各位数字之和。 (如n=1308,则输出12,n、-3201,则输出9)。 #include #include voidmain() {intn,s=0; scanf(“%d”,&n); n=fabs(n); /******1******/ while(n>1){//n s=s+n%10; /******2******/ n=n%10;//n=n/10; } printf(“%d”,s); } 13.在考生目录下,有Modify.c程序,该程序中“N”是根据程序功能需要填充部分,请完成程序填充(注意: 不得加行、减行、加句、减句,否则后果自负) 该程序功能: 输入n和平面上n个点的坐标,计算各点间距离的总和。 #include #include #definef(x1,y1,x2,y2)sqrt(pow(x2-x1,2)+pow(y2-y1,2)) 1//在C_FREE下填#include voidmain() {float*x,*y,s=0;inti,j,n; scanf(“%d”,&n); x=(float*)malloc(sizeof(float)*n*2); y=x+2;//n for(i=0;i for(i=0;i for(j=i+1;j s+=f(x[i],y[i],x[j],y[j]); printf(“%.2f\n”,s); } 14.在考生目录下,有Modify.c程序,该程序中“N”是根据程序功能需要填充部分,请完成程序填充(注意: 不得加行、减行、加句、减句,否则后果自负) 该程序功能: 函数f将1个整数首尾倒置,程序输出结果应为“54321-76543”。 #include #include intf(intn) {intm,y=0;m=fabs(n); while(m! =0){ y=y*10+m%10; 1;//m=m/10;} if(n>=0)returny; else2;//return(-y);} voidmain() {printf(“%d\t”,f(12345));printf(“%d\n”,f(-34567));} 15.在考生目录下,有Modify.c程序,该程序中“N”是根据程序功能需要填充部分,请完成程序填充(注意: 不得加行、减行、加句、减句,否则后果自负)。 该程序功能: 调用函数f用以求1元2次方程x*x+5*x-2=0的实根。 #include #include intf(floata,floatb,floatc,float*x1,float*x2) {if(b*b-4*a*c<0)1;//return1; *x1=(-b+sqrt(b*b-4*a*c))/2/a; *x2=(-b-sqrt(b*b-4*a*c))/2/a; return0;} voidmain() {floatu1,u2;floata=1,b=5,c=-2; if (2)printf(“实数范围内无解\n”);//f(a,b,c,&u1,&u2) elseprintf(“%.2f%.2f\n”,u1,u2); } 16.在考生目录下,有Modify.c程序,该程序中“/*****N****/”的下一行中有错误,请改正(注意: 不得加行、减行、加句、减句,否则后果自负)。 该程序功能: 在输入x、eps,计算多项式1-x+x*x/2! -x*x*x/3! +…的和直到末项的绝对值小于eps为止。 #include #include voidmain() {floatx,eps,s=1,t=1,i=1; scanf(“%f%f”,&x,&eps); do{/*****1****/ t=-t*x/++i;//t=-t*x/i++; s+=t; /*****2****/ }while(fabs(t)>=eps)//语句后少分号; printf(“%f\n”,s); } 17.在考生目录下,有Modify2.c程序,该程序中“N”是根据程序功能需要填充部分,请完成程序填充(注意: 不得加行、减行、加句、减句,否则后果自负)。 该程序功能: 函数f将数组循环左移k个元素,输出结果为: 4567123 #include voidf(int*a,intn,intk) {inti,j,t; for(i=0;i {1;//t=a[0]; for (2)//j=1;j a[j-1]=a[j]; a[n-1]=t;} } voidmain() {inti,x[7]={1,2,3,4,5,6,7}; f(x,7,3); for(i=0;i<7;i++) printf(“%5d”,x[i]); printf(“\n”); } 18.在考生目录下,有Modify.c程序,该程序中“N”是根据程序功能需要填充部分,请完成程序填充(注意: 不得加行、减行、加句、减句,否则后果自负)。 该程序功能: 调用函数f,从字符串中删除所有的数字字符。 #include #include #include voidf(char*s) {inti=0; while(s[i]! =‘\0’) if(isdigit(s[i]))1(s+i,s+i+1);//strcpy else2;//i++ } voidmain() {charstr[80]; gets(str); f(str); puts(str); } 19.程序修改题: 在考生目录五,有Modify.c程序,该程序中“N”是根据程序功能需要填充部分,请完成程序填充(注意: 不得加行、减行、加句、减句,否则后果自负)。 该程序功能: 输出6~1000之间的完数(1个数的因子和等于其自身的数: 6=1+2+3、28=1+2+4+7+14,则6、28都是完数)。 #include voidmain() {inti,j,s; for(i=6;i<=1000;i++){ 1;//s=0; for(j=1;2;j++)if(i%j==0)s+=j;//j if(s==i)printf(“%d\n”,s);} } 20./*该程序功能: 输入三个整数,按由小到大的顺序输出这三个数。 */ #include voidswap(__int*pa,int*pb____) {/*交换两个数的位置*/ inttemp; temp=*pa; *pa=*pb; *pb=temp; } voidmain() { inta,b,c,temp; scanf("%d%d%d",&a,&b,&c); if(a>b) swap(&a,&b); if(b>c) swap(&b,&c); if(__a>b___) swap(&a,&b); printf("%d,%d,%d",a,b,c); } 21./*该程序功能: 将输入的十进制正整数n通过函数Dec2Bin转换为二进制数,并将转换结果输出。 */ #include voidDec2Bin(intm) { intbin[32],j; for(j=0;m! =0;j++) { bin[j]=__m%2___; m=m/2; } for(;j! =0;j--) printf("%d",____bin[j-1]______); } voidmain() { intn; scanf("%d",&n); Dec2Bin(n); } 22./*该程序功能: 输入数组x[7],调用函数f,去除数组中的负数,输出结果为: 1346*/ #include voidf(int*a,int*m) {inti,j; for(i=0;i<*m;i++) if(a[i]<0){ for(j=i--;j<*m-1;j++)a[j]=a[j+1]; ___*m=*m-1;___ } } voidmain() {inti,n=7,x[7]={1,-2,3,4,-5,6,-7}; _f(x,&n);_____ for(i=0;i printf("\n"); } 23./*该程序功能: 输入n以及小于n个字符的字符串,将字符串中所有小写字母改为相应的大写字母,输出该字符串。 */ #include #include #include voidmain() {intn,i; /*****1*****/ charstr;//改成char*str; scanf("%d\n",&n);str=(char*)malloc(n);gets(str); /*****2*****/ for(i=1;i if(str[i]>='a'&&str[i]<='z')str[i]=str[i]-('a'-'A'); puts(str); } 24./*程序功能: 将一个char型数的高4位和低4位分离,分别输出,如22(二进制: 00010110)输出*/ #include voidmain() { chara,b1,b2,c; scanf("%d",&a); /******1******/ b1=a<<4;/*b1存放高4位*///b1=a<<4;改成b1=a>>4; c=~(~0<<4); /******2******/ b2=a|c;/*b2存放低4位*///b2=a|c;改成b2=a&c; printf("%d,%d",b1,b2); } 25./*该程序功能: 输入整数n(n>0),求m使得2的m次方小于或等于n,2的m+1次方大于或等于n。 */ #include voidmain() {intm=0,t=1,n; while(__scanf(“%d”,&n),! n___); while(! (t<=n&&t*2>=n)){ ___t=t*2;___ m++; } printf("%d\n",m); } 26./*考生的目录Paper子目录下,有Modify.c文件,该文件中/*****N*****/的下一行中请改正。 该程序功能: 运行时输入10个数,然后分别输出其中的最大,最小的值。 */ #include voidmain() {floatx,max,min;inti; /********1*******/ for(i=0;i<=10;i++){//i<=10;改成i<10; scanf("%f",&x); /*******2********/ if(i=1){max=x;min=x;}//i=1改成i==0 if(x>max)max=x; if(x } printf("%f,%f\n",max,min); } 27./*该程序功能: 求输入的整数各位数字之和,如输入234则输出9,输入-312则输出6。 */ #include #include voidmain() { intn,s=0; scanf("%d",&n); ____n=fabs(n);____ while(n! =0){ ____s+=n%10;____ n=n/10; } printf("%d\n",s); } 28./*该程序功能: 数组
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 习题