C语言程序设计复习题.docx
- 文档编号:23439334
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:21
- 大小:188.04KB
C语言程序设计复习题.docx
《C语言程序设计复习题.docx》由会员分享,可在线阅读,更多相关《C语言程序设计复习题.docx(21页珍藏版)》请在冰豆网上搜索。
C语言程序设计复习题
C语言期末考试试复习题
一、单项选择题
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.以下属于C语言保留字的是( D )
A.fopenB.include
C.getD.unsigned
2.C语言中,错误的int类型的常数是( A)
A.1E5B.0
C.037D.0xaf
3.在C语言中,′a′和″a″存储所占用的字节数分别是( B )
A.1,1B.1,2
C.2,1D.2,2
4.对于数学表达式,正确的C语言表达式是( C )
A.2sqrt(x)+(a+b)/3sin(x)B.2sqrt(x)+(a+b)/(3sin(x))
C.2*sqrt(x)+(a+b)/3/sin(x)D.2*sqrt(x)+(a+b/3*sin(x))
5.设intx=10,a=0,b=25;,条件表达式x<1?
a+10︰b的值是( D )
A.0B.1
C.10D.25
6.C语言中,下列运算符优先级最高的是( A )
A.!
B.%
C.>>D.==
7.sizeof(double)是( A )
A.函数调用B.int型表达式
C.double型表达式D.非法表达式
8.设有以下程序段:
inta=1,b=10,c=1,x;
x=a&&b||++c;
printf(″%d,%d\n″,x,c);
执行后输出的结果是( D )
A.0,0B.0,1
C.1,0D.1,1
9.设intx;,则以下语句中错误的输入是( D )
A.scanf(″%d″,x);
B.scanf(″%d″,&x);
C.scanf(″%o″,&x);
D.scanf(″%x″,&x);
10.设int(*P)();,p的含义是( D )
A.指向一维数组的指针变量
B.指向二维数组的指针变量
C.指向一个整型变量的指针变量
D.指向整型函数的指针变量
11.在C语言中,运算符″=″和″==″的功能分别是( B )
A.关系运算和赋值运算B.赋值运算和关系运算
C.都是关系运算D.都是赋值运算
12.设intx[]={1,2,3,4,5},*p=x;,则值为3的表达式是( A )
A.p+=2,*p++B.p+=2,*++p
C.p+=2,p++D.p+=2,++*p
13.设for(i=0,j=10;(j>0)&&(i<4);i++,j--);,该语句的循环次数是( C )
A.0B.3
C.4D.无限
14.设函数定义如下:
floatf1(floata,floatb)
{
return(a+b);
}
若有floatx=1.1,y=2.2;,则以下语句中正确的函数调用是( D )
A.printf(″%f″,f1(x));
B.printf(″%f″,f1(&x,y));
C.printf(″%f″,f1(*x,*y));
D.printf(″%f″,f1(x,y));
15.结构型变量占用内存的字节数是( A )
A.各成员占用内存字节数之和
B.第一个成员占用的内存字节数
C.占用内存最大成员所需的字节数
D.最后一个成员占用的内存字节数
16.设enumcolor{purple,black,red,white}d;,若将d赋值为枚举常量red,则正确的是
( A )
A.d=(enumcolor)2;B.d=(enumcolor)3;
C.d=″red″;D.d=color;
17.若main()函数带参数,参数个数最多是( C )
A.0B.1
C.2D.3
18.设宏定义#definePI3.1415926,用宏名PI替换的是( B )
A.算术表达式B.字符串
C.单精度实型数D.双精度实型数
19.调用系统函数fabs时,应选用的文件包含是( D )
A.#include″stdio.h″B.#include″string.h″
C.#include″ctype.h″D.#include″math.h″
20.设
main()
{intx=100,a=10,b=20;
intv1=5,v2=0;
if(a
if(b!
=15)
if(!
v1)
x=1;
else
if(v2)x=10;
x=-1;
printf(“%d”,x);
}
则程序的输出结果是( A )
A.-1B.2
C.3D.10
21.组成C语言程序的是(B)
A.过程B.函数
C.子程序D.主程序和子程序
22.编译程序的功能是(C)
A.将汇编语言程序转换为目标程序
B.将汇编语言程序转换为高级语言程序
C.将高级语言程序转换为目标程序
D.将高级语言程序转换为汇编语言程序
23.C语言中定义某个内部变量时,如果省略了存储类型符,则系统将默认该变量是(A)
A.自动型B.寄存器型
C.静态型D.外部参照型
24.不用第三个变量,将变量a和b的值进行互换的操作是(B)
A.a+=b;b-=a;a-=b;B.a+=b;b=a-b;a-=b;
C.b-=a;a-=b;a-=b;D.b-=a;a=b-a;a+=b;
25.自动型变量分配在(D)
A.内存的数据区中B.CPU的通用寄存器中
C.内存的程序区中D.内存的堆栈区中
26.下列程序段运行后,x的值是(A)
a=1;b=2;x=0;
if(!
(--a))x--;
if(!
b)x=7;else++x;
A.0B.3
C.6D.7
27.对do-whie语言错误的说法是(C)
A.可构成多重循环结构B.循环次数不可能为0
C.循环次数可能为0D.先执行后判断
28.设intx=1,a=9,b=6,c=7,d=8;则执行语句:
if(a>b)if(c>d)x=2;elsex=3;
后,x的值是(C)
A.1B.2
C.3D.不确定
29.设charstr1[10]=″ABCDE″,str2[10]=″XYZ″;则执行语句:
printf(″%d″,strlen(strcpy(str1,str2)));
后的输出是(A)
A.3B.5
C.8D.9
30.初始化一维数组a正确的语句是(C)
A.inta[10]=(0,0,0,0,0);B.inta[10]={};
C.inta[]={10};D.inta[10]={[10*1]};
31.语句int(*p)();的含义是(A)
A.p是一个指向函数的指针变量,该函数的返回值是一个整型数据
B.p是指针变量,指向一个整型数据
C.p是一个指向一维数据的指针变量
D.p是指针函数
32.设inta[10],*p=a;
则对数组元素的正确引用是(C)
A.a[p]B.p[a]
C.*(p+2)D.p+2
33.对于程序段floatf1(inta)
{intb;……}
main()
{intm,n;
m=f1(n);……}
charf2(intx,inty)
{inta;……}
变量m,n的作用范围是(B)
A.整个程序段B.main函数
C.main函数和f2函数D.mian函数和f1函数
34.若函数中局部变量的值经函数调用后仍保留,则该局部变量定义为(D)
A.自动变量B.内部变量
C.外部变量D.静态变量
35.在下列运算符中,优先级最低的是(A)
A.!
B.•
C.()D.[]
36.对于如下定义的枚举型
enumlist1
{x1,x2,x3,x4=6,x5,x6};
枚举常数x2和x6的值分别是(B)
A.1,6B.1,8
C.2,6D.2,8
37.对于文件操作方式″rb+″,准确的说法是(D)
A.可读写文本文件B.只读二进制文件
C.只读文本文件D.可读写二进制文件
38.数据-324在二进制文件和文本文件中所占的字节数分别是(B)
A.2,2B.2,4
C.4,2D.4,4
39.设inta=1,b=2,c=4;
经过表达式(c=a!
=b)&&(a==b)&&(c=b)运算后,a、b和c的值分别是(B)
A.1,2,0B.1,2,1
C.1,2,2D.1,2,3
40.下列程序的运行结果是(D)
#defineEVEN(x)x%2==0?
1:
0
main()
{
if(EVEN(9+1))printf(″iseven″);
elseprintf(″isodd″);
}
A.isevenB.出错
C.无结果D.isodd
二、填空题
请在每小题的空格中填上正确答案。
错填、不填均无分。
1.设chara,b;则表达式a/b-′c′的值的类型为int或者int型或者整型。
2.设intk=-1;执行printf(″%u″,k);后输出的值是65535。
3.设for(k=0;k<0;k++)++k;则该循环共执行0次。
4.设inta=1,b=2;经表达式a=a∧b,b=a∧b,a=a∧b运算后a,b的值分别是2或1。
5.表示空类型的保留字是void。
6.已知程序段:
char*p=″abcdefgh″;p+=4;
printf(″%c\n″,*p++);
运行结果为e。
7.设
structstudent
{intno;charname[12];
charsex;floatscore[4];
}stu1;
在程序执行时,系统为stu1分配31个字节的内存空间。
8.写出“n是小于整数m的偶数”的表达式n 9.字符串″ABCD\t\\\123″的长度是7。 10.设union {intb;chara[9];floatx;}un; 则变量un所占的字节数是9。 11.C语言中,标准输入设备的文件指针名是______stdin_____________。 12.一个C语言程序的基本组成单位是_________函数__________。 13.C语言中,&作为双目运算符表示的运算是______位与_____________。 14.连接两个字符串的系统函数名是_______strcat____________。 15.设floata[4][5];,则数组a中第一维下标的最大值是____________3_______。 16.设charstr[]=″book″;,则执行 printf(″%d\n″,sizeof(str));后输出的值是________5___________。 17.设 #defineF(x)x*x main() {inta=3,b=4,c; c=F(a+b); printf(″%d\n″,c); } 则程序执行后输出的值是_19_。 18.设inta;floatb;charc;longd;doublee;,则表达式a/c-b+d-e值的类型是_double_ 19.设 intx=5; x+=x-=x+x; 则执行printf(″%d\n″,x);后输出的值是_-10_。 20.设 union { inti;longj;chark; }t,*p=&t; 则用指针法给t的成员i赋值为20的语句是_p->i=20__。 三、程序分析题 阅读下列程序,将输出结果写到各题右侧的空白处。 1.main() {inti,s=0; for(i=1;i<10;i+=2)s+=i+1; printf(″%d\n″,s); } 30 2.main() {intx=15,y=21,z=0; switch(x%3) {case0: z++;break; case1: z++; switch(y%2) {default: z++; case0: z++;break; } } printf(″%d\n″,z); } 1 3.sum(intn) { if(n==1)return (1); elsereturnn+sum(n-1); } main() { printf(″%d\n″,sum(10)); } 55 4.设从键盘输入282 sub(intn) {ints=1; do {s*=n%10;n/=10;} while(n); returns; } main() {intn; scanf(″%d″,&n); n=sub(n); printf(″%d\n″,n); } 32 5.#defineN7 #definePRINTfor(i=0;i main() {inti,j,temp,a[N]={1,2,3,4,5,6,7}; PRINT for(i=0,i {j=N-1-i;temp=a[i];a[i]=a[j];a[j]=temp;} PRINT } 6.intx=30;y=50; sub(x,y) {y=x>y? x: y; returny; } main() { {intx=100; printf(″%d\n″,sub(x,y)); } printf(″%d,%d\n″,x,y); } 7.设文件file1.c的内容为COMPUTER #include″stdio.h″ main() {FILE*fp; charch; if((fp=fopen(″file1.c″,″r″))==NULL) {printf(″Cannotopenfile\n″); exit(0); } while(! feof(fp)) { ch=fgetc(fp);if(ch>=′A′&&ch<=′Z′)fputc(ch+32,stdout); } fclose(fp); } 8.main() {inta=0,b=5,c=3; while(c>0&&a<5) {b=b-1; ++a; c--; } printf(″%d,%d,%d\n″,a,b,c); } 3,2,0 9.intz=5; f() {staticintx=2;inty=5; x=x+2;z=z+5; y=y+z; printf(″%5d%5d\n″,x,z); } main() {staticintx=10;inty; y=z; printf(″%5d%5d\n″,x,z); f(); printf(″%5d%5d\n″,x,z); f(); } 10 5 4 10 10 10 6 15 10.voidmain() {intx=1,y=0,a=0,b=0; switch(x) {case1: switch(y) {case0: a++;break; case1: b++;break; } case2: a++;b++;break; case3: a++;b++; } printf(“\na=%d,b=%d”,a,b); } a=2,b=1 四、程序填充题 给出下列程序,将横线处缺少的部分补上,使其能正确运行。 1.用递归方法写出计算n的阶乘的函数,调用该函数计算并输出n=0,1,2,……,10时各阶乘的值。 计算公式: n! = longfac(intn) { if(n==0||n==1)return (1);/*第一空*/ elsereturn_n*fac(n)__;/*第二空/ } main() { intm;longintfa; for(m=0;m<=10;m++) { __fa=fac(m)_;/*第三空*/ printf(″%d! =%1d\n″,m,fa); } } 2.将一个十进制整数n转变为二进制数。 main() {inti=0,j,n,num[20]; scanf(″%d″,);/*第一空*/ while(n! =0) {num[i++]=;/*第二空*/ n=;/*第三空*/ } for(j=i-1;j>=0;j--)printf(″%d″,num[j]); } 3.一个一维数组和一个二维数组同处一个共用型,将数据输入一维数组后,在二维数组中输出。 main() {uniondata {inta[10]; intb;/*第一空*/ }; uniondataab; inti,j; for(i=0;i<10,i++) scanf(″%d″,);/*第二空*/ for(i=0;i<2;i++) for(j=0;j<5;j++) printf(″%5d″,);/*第三空*/ } 4.用指针法输出二维数组,每行三个数。 main() {inti,j,a[3][3]={1,2,3,4,5,6,7,8,9},(*p)[3]; ;/*第一空*/ for(i=0;i<3;i++) { for(j=0;j<3;j++)printf(″%5d″,);/*第二空*/ ;/*第三空*/ } } 5.使用二维数组形成并按下列形式输出数据 main() {inti,j,_a[5][5];/*第一空*/ for(i=0;i<5;i++) for(j=0;j<5;j++)a[i][j]=_i+j_;/*第二空*/ for(i=0;i<5;i++) { for(j=0;j<5;j++)printf(″%2d″,a[i][j]); _printf("\n")_;/*第三空*/ } } 6.用简单选择法对10个数排序 #include main() {inta[11],i,j,k,x; printf("Input10numbers: \n"); for(i=1;i<11;i++) scanf("%d",&a[i]); printf("\n"); for(i=1;i<10;i++) {__k=i__;/*第一空*/ for(j=_i+1_;j<=10;j++)/*第二空*/ if(_x[j] if(i! =k) {x=a[i];a[i]=a[k];a[k]=x;} } printf("Thesortednumbers: \n"); for(i=1;i<11;i++) printf("%d",a[i]); } 五、程序设计题 1.为实型变量x输入一个值后,输出x的值、x的平方根、x的平方、x的立方根和x的立方。 #include #include voidmain() {doublex; scanf("%d",&x); printf("%f,%f,%f,%f,%f\n",x,sqrt(x),x*x,pow(x,3.0),x*x*x); } 2.输入三个整型数,找出其中数值最大者并输出。 #include voidmain() {inta,b,c,max; scanf("%d%d%d",&a,&b,&c); max=a; if(b>max) max=b; if(c>max) max=c; printf("max=%d",max); } 3.输出100之内所有个位数字为6且能被3整除的自然数。 (如: 36,66,96……) 4.键入一串字符(换行符结束),用循环语句将其中的大小写英文字母互换后输出。 5.设inta[3][4];先为数组输满数据,再将该数组周边的元素输出(元素输出次序不限)。 6.根据Fibonacci数列公式: Fn=Fn-1+Fn-2,计算并输出sum=前20项之和。 #include"stdio.h" voidmain() { unsignedlongf1,f2,sum;/*f1代表第n-2项,f2代表第n-1项,sum代表和*/ inti; f1=1;f2=1;/*计算第一项,第二项*/ sum=f1+f2;/*计算第一项与第二项之和*/ for(i=1;i<10;i++)/*累加剩余的18项*/ { f1=f1+f2;/*计算第n-1项*/ sum+=f1; f2=f2+f1;/*计算第n项*/ sum+=f2; } printf("sum=%d",sum); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 复习题