c语言期末复习试题附答案.docx
- 文档编号:25847994
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:20
- 大小:18.96KB
c语言期末复习试题附答案.docx
《c语言期末复习试题附答案.docx》由会员分享,可在线阅读,更多相关《c语言期末复习试题附答案.docx(20页珍藏版)》请在冰豆网上搜索。
c语言期末复习试题附答案
试卷编号:
11201
所属语言:
C语言
试卷方案:
C语言期末考试
试卷总分:
100分
共有题型:
4种
一、单项选择共30题(共计60分)
第1题(2.0分)
设有定义:
intk=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是(A).
A:
k++
B:
k+=1
C:
++k
D:
k+1
第2题(2.0分)
已知inti=5,执行语句i+=++i后,i的值是(C).
A:
10
B:
11
C:
12
D:
A、B、C都不对
第3题(2.0分)
以下程序的功能是:
给r输入数据后,计算半径为r的圆面积s.程序在编译时出错.
#include
voidmain()
/*Beginning*/
{intr;floats;
scanf("%d",&r);
s=p*r*r;printf("s=%f\n",s);
出错的原因是(D).
A:
注释语句书写位置错误
B:
存放圆半径的变量r不应该定义为整型
C:
输出语句中格式描述符非法
D:
计算圆面积的赋值语句中使用了非法变量
第4题(2.0分)
"\\\″ABC\″\\″的长度是(B).
A:
11
B:
7
C:
5
D:
3
第5题(2.0分)
已知intj,i=1;,执行语句j=–i++;后,j的值是(C).
A:
1
B:
2
C:
-1
D:
-2
第6题(2.0分)
有以下程序:
#include
voidmain()
{ints=0,a=1,n;
scanf("%d",&n);
do{
s+=1;a=a–2;
}while(a!
=n);
printf("%d\n",s);
}
若要使程序的输出值为2,则应该从键盘输入给n的值是(B).
A:
-1
B:
-3
C:
-5
D:
0
第7题(2.0分)
执行以下程序后,输出的结果是(D).
#include
voidmain()
{inty=10;
do{
y––;
}while(––y);
printf("%d\n",y––);
}
A:
-1
B:
1
C:
8
D:
0
第8题(2.0分)
以下循环体的执行次数是(C).
#include
voidmain()
{inti,j;
for(i=0,j=1;i<=j+1;i+=2,j––)printf("%d\n",i);
}
A:
3
B:
2
C:
1
D:
0
第9题(2.0分)
有以下程序段:
intk=0;
while(k=1)k++;
while循环执行的次数是(A).
A:
无限次
B:
有语法错误,不能执行
C:
1次也不执行
D:
执行1次
第10题(2.0分)
有以下程序
#include
voidmain()
{intm,n,p;
scanf("m=%dn=%dp=%d",&m,&n,&p);
printf("%d%d%d\n",m,n,p);
}
若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是(A).
A:
m=123n=456p=789
B:
m=123n=456p=789
C:
m=123,n=456,p=789
D:
123456789
第11题(2.0分)
设变量已正确定义,以下能正确计算f=n!
的程序段是(D)
A:
f=0;
for(i=1;i<=n;i++)f*=i;
B:
f=1;
for(i=1;i C: f=1; for(i=n;i>1;i++)f*=i; D: f=1; for(i=n;i>=2;i––)f*=i; 第12题(2.0分) 在下列程序中,没有构成死循环的程序段是(B). A: inti=100; while (1) {i=i%100+1; if(i>100)break;} B: intk=1000; do {++k;}while(k>=10000); C: for(;;); D: ints=36;while(s);--s; 第13题(2.0分) 有如下程序: #include voidmain() {intn=9; while(n>6) {n--;printf("%d",n);} } 该程序段的输出结果是(B). A: 987 B: 876 C: 8765 D: 9876 第14题(2.0分) 以下程序的输出结果是(D). #include voidmain() {intx=10,y=10,i; for(i=0;x>8;y=++i) printf("%d%d",x––,y); } A: 10192 B: 9876 C: 10990 D: 101091 第15题(2.0分) 有如下程序: #include voidmain() {intn[5]={0,0,0},i,k=2; for(i=0;i {printf("%d\n",n[k]);} } 该程序的输出结果是(D). A: 不确定的值 B: 2 C: 1 D: 0 第16题(2.0分) 下列程序执行后的输出结果是(A). #include voidmain() {chararr[2][4]; strcpy(arr,"you");strcpy(arr[1],"me"); arr[0][3]='&'; printf("%s\n",arr); } A: you&me B: you C: me D: err 第17题(2.0分) 以下程序的输出结果是(C). #include voidmain() {inti,x[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++)printf("%d,",x[i][2–i]); } A: 1,5,9, B: 1,4,7, C: 3,5,7, D: 3,6,9, 第18题(2.0分) 以下数组定义中不正确的是(D). A: inta[2][3]; B: intb[][3]={0,1,2,3}; C: intc[100][100]={0}; D: intd[3][]={{1,2},{1,2,3},{1,2,3,4}}; 第19题(2.0分) 以下能正确定义数组并正确赋初值的语句是(D). A: intN=5,b[N][N]; B: inta[1][2]={{1},{3}}; C: intc[2][]={{1,2},{3,4}}; D: intd[3][2]={{1,2},{3,4}}; 第20题(2.0分) 有以下程序: inta=4; intf(intn) { intt=0;staticinta=5; if(n%2){inta=6;t+=a++;} else{inta=7;t+=a++;} returnt+a++; } main() { ints=a,i=0; for(;i<2;i++)s+=f(i); printf("d\n",s); } 程序运行后的输出结果是(B) A: 24 B: 28 C: 32 D: 36 第21题(2.0分) 以下正确的函数定义形式为(A) A: doublefun(intx,inty) B: doublefun(intx;y) C: doublefun(intx;inty) D: doublefun(intx,y) 第22题(2.0分) C语言规定,函数返回值的类型是由(D) A: return语句中的表达式类型所决定的 B: 调用该函数时的主调函数类型所决定的 C: 调用该函数时系统临时决定的 D: 在定义该函数时所指定的函数类型所决定的 第23题(2.0分) 有以下程序: 输出结果是()(注: 5353) voidswap1(intc0[],intc1[]) {intt; t=c0[0];c0[0]=c1[0];c1[0]=t; } voidswap2(int*c0,int*c1) {intt; t=*c0;*c0=*c1;*c1=t; } main() {inta[2]={3,5},b[2]={3,5}; swap1(a,a+1);swap2(&b[0],&b[1]); printf("%d%d%d%d\n",a[0],a[1],b[0],b[1]); } A: 3553 B: 5335 C: 3535 D: 5353 第24题(2.0分) 以下程序的输出结果是(A). amovep(int*p,int(*a)[3],intn) {inti,j; for(i=0;i for(j=0;j {*p=a[i][j]; p++;} } main() {int*p,a[3][3]={{1,3,5},{2,4,6}}; p=(int*)malloc(100); amovep(p,a,3); printf("%d%d\n",p[2],p[5]); free(p); } A)56 B)25 C)34 D)程序错误 第25题(2.0分) 有以下函数: fun(char*a,char*b) {while((*a! ='\0')&&(*b! ='\0')&&(*a==*b)) {a++;b++;} return(*a–*b);} 该函数的功能是(D). A: 计算a和b所指字符串的长度之差 B: 将b所指字符串复制到a所指字符串中 C: 将b所指字符串连接到a所指字符串后面 D: 比较a和b所指字符串的大小 第26题(2.0分) 有以下程序: fun(charp[][10]) {intn=0,i; for(i=0;i<7;i++) if(p[i][0]=='T')n++; returnn; } main() {charstr[][10]={"Mon","Tue","Wed","Thu","Fri","Sat","Sun"}; printf("%d\n",fun(str)); } 程序执行后的输出结果是(B). A: 1 B: 2 C: 3 D: 0 第27题(2.0分) 有以下程序: main() {charstr[][10]={"China","Beijing"},*p=str; printf("%s\n",p+10); } 程序运行后的输出结果是(B). A: China B: Beijing C: ng D: ing 第28题(2.0分) 有以下程序: #definef(x)(x*x) main() {inti1,i2; i1=f(8)/f(4)i2=f(4+4)/f(2+2) printf("%d,%d\n",i1,i2); } 程序运行后的输出结果是(C). A: 64,28 B: 4,4 C: 4,3 D: 64,64 第29题(2.0分) 有以下程序: 结果是(A) voidchange(intk[]){k[0]=k[5];} main() {intx[10]={1,2,3,4,5,6,7,8,9,10},n=0; while(n<=4){change(&x[n]);n++;} for(n=0;n<5;n++)printf("%d",x[n]); printf("\n"); } A)678910 B)13579 C)12345 D)62345 A: 678910 B: 13579 C: 12345 D: 62345 第30题(2.0分) 在以下程序中,能够通过调用函数fun(),使main()函数中的指针变量p指向一个合法的整型单元的是(C). A: main() int*p; fun(p);…} intfun(int*p) {ints; p=&s;} B: main() {int*p; fun(&p);…} intfun(int**p) {ints; *p=&s;} C: #include main() {int*p; fun(&p);…} intfun(int**p) {*p=(int*)malloc (2);}… D: #include main() {int*p; fun(p);…} intfun(int*p) {p=(int*)malloc(sizeof(int));} 二、程序填空共1题(共计10分) 第1题(10.0分) /*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能: 计算平均成绩并统计90分以上人数。 -------------------------------------------------------*/ main() { intn,m;floatgrade,average; /***********SPACE***********/ average=n=m=【? 】;//此处为: 0 while (1) { /***********SPACE***********/ 【? 】("%f",&grade);//此处为: scanf if(grade<0)break; n++; average+=grade; /***********SPACE***********/ if(grade<90)【? 】;//此处为: break m++; } if(n)printf("%.2f%d\n",average/n,m); } 三、程序改错共1题(共计10分) 第1题(10.0分) /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 首先把b所指字符串中的字符按逆序存放,然后将a所指字 符串中的字符和b所指字符串中的字符,按排列的顺序交叉 合并到c所指数组中,过长的剩余字符接在c所指数组的尾部。 例如: 当a所指字符串中的内容为“abcdefg”,b所指字符串中的 内容为“1234”时,c所指数组中的内容应该为“a4b3c2d1 efg”;而当a所指字符串中的内容为“1234”,b所指字符 串中的内容为“abcdefg”时,c所指数组中的内容应该为 “1g2f3e4dcba”。 ------------------------------------------------------*/ #include #include #include voidfun(char*a,char*b,char*c) { inti,j; charch; i=0; j=strlen(b)-1; /**********FOUND**********/ while(i>j)//此处>改为< { ch=b[i]; b[i]=b[j]; b[j]=ch; i++;j--; } /**********FOUND**********/ while(*a&&*b)//此处&&改为||(逻辑或) { if(*a) { *c=*a; c++; /**********FOUND**********/ a+;//此处a++ } if(*b) { *c=*b; c++; b++; } } *c=0; } main() { chars1[100],s2[100],t[200]; clrscr(); printf("\nEnters1string: "); scanf("%s",s1); printf("\nEnters2string: "); scanf("%s",s2); fun(s1,s2,t); printf("\nTheresultis: %s\n",t); } 四、程序设计共1题(共计20分) 第1题(20.0分) /*------------------------------------------------ 【程序设计】 -------------------------------------------------- 功能: 判断一个整数w的各位数字平方之和能否被5整除, 可以被5整除则返回1,否则返回0。 ------------------------------------------------*/ #include"stdio.h" #include"conio.h" intfun(intw) { /**********Program**********/ ints=0,m=w; while(m){s+=(m%10)*(m%10);m/=10;} if(s%5==0)return1; elsereturn0; /**********End**********/ } main() { intm; printf("Enterm: "); scanf("%d",&m); printf("\nTheresultis%d\n",fun(m)); yzj(); getch(); } yzj() { FILE*IN,*OUT; intc; intt; into; IN=fopen("in.dat","r"); if(IN==NULL) { printf("ReadFileError"); } OUT=fopen("out.dat","w"); if(OUT==NULL) { printf("WriteFileError"); }for(c=1;c<=5;c++) { fscanf(IN,"%d",&t); o=fun(t); fprintf(OUT,"%d\n",o); } fclose(IN); fclose(OUT); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 期末 复习 试题 答案