C语言期末复习题及答案(全)
更新时间:2023-10-22 11:22:01 阅读量: 综合文库 文档下载
C语言程序设计复习题及答案
第一部分 程序设计基本概念
1.1 在TRUBO C环境中用RUN命令运行一个C程序时,所运行的程序的后缀是______。答案:.exe
1.2 C语言源程序文件的后缀是_____,经过编译后,生成文件的后缀是_____,经过连接后,生成文件的后缀是_____。 答案:.c .obj .exe
1.3 结构化程序由_____、_____、_____三种基本结构组成。答案:顺序、选择、循环 第二部分 C程序设计的初步知识
一、选择题
2.1 以下选项中正确的整型常量是
A)12. B)-20 C)1,000 D)4 5 6 答案:B 2.2 以下选项中正确的实型常量是
A)0 B)3. 1415 C)0.329×10(2)(10的2次方) D).871 答案:D 2.3 以下选项中不正确的实型常量是
A)2.607E-1 B)0.8103e 2 C)-77.77 D)456e-2 答案:B 2.4 以下选项中不合法的用户标识符是
A)abc.c B)file C)Main D)PRINTF 答案:A 2.5 以下选项中不合法的用户标识符是
A)_123 B)printf C)A$ D)Dim 答案:C 2.6 C语言中运算对象必需是整型的运算符是
A)% B)/ C)! D)** 答案:A 2.7 可在C程序中用作用户标识符的一组标识符是 A)void define WORD B)as_b3 _123 If C)For -abc case
D)2c DO SIG 答案:B
2.8 若变量已正确定义并赋值,符合C语言语法的表达式是
A)a=a+7; B)a=7+b+c,a++ C)int(12.3%4) D)a=a+7=c+b 答案:B 2.9 以下叙述中正确的是
A)a是实型变量,C允许进行以下赋值a=10,因此可以这样说:实型变量中允许存放整型值。 B)在赋值表达式中,赋值号右边既可以是变量也可以是任意表达式。
C)执行表达式a=b后,在内存中a和b存储单元中的原有值都将被改变,a的值已由原值改变为b的值,b的值由原值变为 0。
D)已有a=3,b=5。当执行了表达式a=b,b=a之后,已使a中的值为5,b中的值为3。 答案:B
第三部分、顺序结构
一、选择题
3.1 若a、b、c、d都是int类型变量且初值为0,以下选项中不正确的赋值语句是 A) a=b=c=100; B) d++; C) c+b; D) d=(c=22)-(b++); 答案:C 3.2 以下选项中不是C语句的是
A) {int i; i++; printf(\
B) ; C) a=5,c=10 D) { ; } 答案:C 3.3 以下合法的C语言赋值语句是
A) A=B=58 B) k=int(a+b); C) a=58,b=58 D) --i; 答案:D 3.4 以下程序的输出结果是
A) 0 B) 1 C) 3 D)不确定的值 main() {
int x=10,y=3;
printf(\
} 答案:C
3.5 若变量已正确说明为int类型,要给a、b、c输入数据,以下不正确的输入语句是 A) read(a,b,c); B) scanf(\
C) scanf(\答案:D
3.6 若变量已正确说明为float类型,要通过以下赋值语句给a赋予10、b赋予22、c赋予33,以下不正确的输入形式是 A) 10
第1页——共17页
3.7 若变量以正确定义,要将a和b中的数进行交换,下面不正确的语句组是 A) a=a+b,b=a-b,a=a-b; B) t=a,a=b,b=t;
C) a=t; t=b; b=a; D) t=b; b=a; a=t; 答案:C 3.8 若变量已正确定义,以下程序段的输出结果是 A) 输出格式说明与输出项不匹配,输出无定值 B) 5.17000 C) 5.168000 D) 5.169000
x=5.16894;
printf(\答案:D 3.9 若有以下程序段,c3中的值是
A) 0 B) 1/2 C) 0.5 D) 1
int c1=1,c2=2,c3;
c3=c1/c2; 答案:A 3.10 若有以下程序段,其输出结果是
A) 0,0,-10 B) 0,0,5 C) -10,3,-10 D) 3,3,-10
int a=0,b=0,c=0;
c=(a-=a-5),(a=b,b+3);
printf(\答案:B
3.11 当运行以下程序时,在键盘上从第一列开始输入9876543210
C) a=98,b=765.000000,c=4321.000000 D) a=98,b=765,c=4321.0 main() {
int a; float b,c;
scanf(\
printf(\ } 答案:C 3.12 以下程序的输出结果是
A) a=%2,b=%5 B) a=2,b=5 C) a=%%d,b=%%d D) a=%d,b=%d main()
{ int a=2,b=5;
printf(\ } 答案:D
第四部分、选择结构
一、 选择题
4.1 下列运算符中优先级最高的运算符是
A) ! B) % C) -= D) && 答案:A 4.2 下列运算符中优先级最低的运算符是
A) || B) != C) <= D) + 答案:A 4.3 为表示关系x≥y≥z,应使用的C语言表达式是 A) (x>=y)&&(y>=z) B) (x>=y)AND(y>=z)
C) (x>=y>=z) D) (x>=y)&(y>=z) 答案:A
4.4 设a、b和c都是int型变量,且a=3,b=4,c=5;则以下的表达式中,值为0的表达式是
A) a&&b B) a<=b C) a||b+c&&b-c D) !((a
A) 0 B) 1 C) 2 D) 3 main()
{ int a=2,b=-1,c=2; if(a
if(b<0) c=0; else c+=1;
printf(\ } 答案:C
第2页——共17页
4.6 以下程序的输出结果是
A)1 B) 2 C) 3 D) 4
main()
{ int w=4,x=3,y=2,z=1;
printf(\ } 答案:A
4.7 若执行以下程序时从键盘上输入3和4,则输出结果是 A) 14 B) 16 C) 18 D) 20 main()
{ int a,b,s;
scanf(\ s=a;
if(a
printf(\ } 答案:B
4.8 下面的程序片段所表示的数学函数关系是 -1(x<0) A) y= 0(x=0) 1(x>0) 1(x<0) B) y= -1(x=0) 0(x>0) 0(x<0) C) y= -1(x=0) 1(x>0) -1(x<0) D) y= 1(x=0) 0(x>0)
y=-1;
if(x!=0) y=1; if(x>0) y=1;
else y=0; 答案:本题没有正确答案。程序片段所表示的数学函数关系应该是 0(x<0) y= 0(x=0) 1(x>0) 4.9 运行以下程序后,输出 A) **** B) &&&&
C) ####&&&& D) 有语法错误不能通过编译
main()
{ int k=-3;
if(k<=0) printf(\ else printf(\ } 答案:D
4.10 若a和b均是正整型变量,以下正确的switch语句是 A) switch(pow(a,2)+pow(b,2))
{ case 1: case 3: y=a+b; break; case 0: case 5: y=a-b; }
B) switch(a*a+b*b); { case 3:
case 1: y=a+b; break; case 0: y=b-a; break; }
C) switch a
{ default: x=a+b;
第3页——共17页
case 10: y=a-b; break; case 11: x=a*d; break; }
D) switch (a+b)
{ case10 : x=a+b; break; case11 : y=a-b; break; }
答案:没有正确答案。如果C选项改为: switch(a)
{ default: x=a+b;
case 10: y=a-b; break; case 11: x=a*b; break; }
则答案可以选择C
第五部分、循环结构
一、 选择题
5.1 以下程序段的输出结果是
A) 9 B) 1 C) 11 D) 10 int k,j,s;
for(k=2; k<6; k++,k++) { s=1;
for(j=k; j<6; j++) s+=j; }
printf(\
答案:D
5.2 以下程序段的输出结果是
A) 12 B) 15 C) 20 D) 25 int i,j,m=0;
for(i=1; i<=15; i+=4)
for(j=3; j<=19; j+=4) m++; printf(\ 答案:C
5.3 以下程序段的输出结果是 A) 10 9 8 B) 9 8 7 C) 10 9 8 7 D) 9 8 7 6
int n=10; while(n>7) { n--;
printf(\ }
第4页——共17页
答案:B
5.4 以下程序段的输出结果是
A) 1 B) 3 0 C) 1 -2 D) 死循环 int x=3; do
{ printf(\ while(!(--x));
答案:C
5.5 以下程序段的输出结果是
A) 15 B) 14 C) 不确定 D) 0 main()
{ int i,sum;
for(i=1; i<6; i++) sum+=sum; printf(\ }
答案:C
5.6 以下程序段的输出结果是
A) 741 B) 852 C) 963 D) 875421 main()
{ int y=10;
for(; y>0; y--) if(y%3==0)
{ printf(\ }
答案:B
5.7 若x是int型变量,以下程序段的输出结果是 A) **3 ##4 **5 B) ##3 **4 ##5 C) ##3 **4##5 D) **3##4 **5
for(x=3; x<6; x++)
printf((x%2)?(\
答案:D
5.8 以下程序的输出结果是
A) *#*#*#$ B) #*#*#*$ C) *#*#$ D) #*#*$ main() { int i;
for(i=1; i<=5; i++)
{ if(i%2) printf(\ else contionue; printf(\ }
printf(\ }
答案:A
5.9 以下叙述正确的是
第5页——共17页
A) do_while语句构成的循环不能用其它语句构成的循环来代替。 B) do_while语句构成的循环只能用break语句退出。
C) 用do_while语句构成循环时,只有在while后的表达式为非零时结束循环。 D) 用do_while语句构成循环时,只有在while后的表达式为零时结束循环。 答案:D
5.10 以下程序的输出结果是
A) 39 81 B) 42 84 C) 26 68 D) 28 70 main()
{ int x,i;
for(i=1; i<=100; i++) { x=i;
if(++x%2==0)
if(++x%3==0) if(++x%7==0)
printf(\ }
printf(\ } 答案:D
二、 填空题
5.11 当执行以下程序段后,i的值是____、j的值是____、k的值是____。 int a,b,c,d,i,j,k;
a=10; b=c=d=5; i=j=k=0; for( ; a>b; ++b) i++; while(a>++c) j++;
do k++; while(a>d++); 答案:5、4、6
5.12 以下程序段的输出结果是____。 int k,n,m;
n=10; m=1; k=1; while(k<=n) m*=2; printf(\
答案:死循环
5.13 以下程序的输出结果是____。 main()
{ int x=2; while(x--);
printf(\ }
答案:-1
5.14 以下程序段的输出结果是____。 int i=0,sum=1;
do { sum+=i++; }while(i<5); printf(\ 答案:11
第六部分、字符型数据
第6页——共17页
一、选择题
6.1 C语言中的简单数据类型有
A) 整型、实型、逻辑型 B) 整型、实型、字符型
C) 整型、字符型、逻辑型 D) 整型、实型、逻辑型、字符型 答案:B 6.2 C语言中,字符(char)型数据在微机内存中的存储形式是
A) 反码 B) 补码 C) EBCDIC码 D) ASCII码 答案:D 6.3 设有语句char a=\\'\\'\\\\72\\'\\';,则变量a
A) 包含1个字符 B) 包含2个字符 C) 包含3个字符 D) 说明不合法 答案:A 6.4 C语言中不合法的字符常量是
A) \\'\\'\\\\0xff\\'\\' B) \\'\\'\\\\65\\'\\' C) \\'\\'&\\'\\' D) \\'\\'\\\\028\\'\\'
答案:本题A)和D)选项都是不合法的字符常量。若A)选项改为\\'\\'\\\\xff\\'\\',则正确。 6.5 C语言中不合法的字符串常量是
A) \答案:B 第七部分、函数
一、选择题
7.1 以下说法中正确的是
A) C语言程序总是从第一个定义的函数开始执行
B) 在C语言程序中,要调用的函数必须在main函数中定义 C) C语言程序总是从main函数开始执行
D) C语言程序中的main函数必须放在程序的开始部分 7.2 以下函数的类型是
A) 与参数x的类型相同 B) void类型 C) int类型 D) fff(float x)
{ printf(\
答案:C
7.3 以下函数调用语句中,含有的实参个数是 A) 1 B) 2 C) 4 D) 5 func( (exp1,exp2),(exp3,exp4,exp5)); 答案:B
7.4 以下程序的输出结果是
A) 11 B) 20 C) 21 D) 31 fun(int a,int b) { int c; c=a+b; return c; }
main()
{ int x=6,y=7,z=8,r;
r=func((x--,y++,x+y),z--); printf(\ }
答案:C
7.5 以下程序的输出结果是
A) -1 B) 0 C) 1 D) 2 main()
{ int i=2,p; p=f(i,i+1); printf(\ }
int f(int a, int b) { int c; c=a;
if(a>b) c=1;
第7页——共17页
答案:C 无法确定 else if(a==b) c=0; else c=-1; return(c); }
答案:A
7.6 以下程序的输出结果是
A) 0 B) 1 C) 6 D) 无定值 fun(int a,int b,int c) { c=a*b; } main() { int c;
fun(2,3,c);
printf(\ }
答案:D
7.7 以下程序的输出结果是
A) 5.500000 B) 3.000000 C) 4.000000 D) 8.25 double f(int n)
{ int i; double s; s=1.0;
for(i=1; i<=n; i++) s+=1.0/i; return s; }
main()
{ int i,m=3; float a=0.0; for(i=0; i 二、 填空题 7.8 以下程序的输出结果是____。 unsigned fun6(unsigned num) { unsigned k=1; do { k*=num; num/=10; } while(num); return k; } main() { unsigned n=26; printf(\ } 答案:12 7.9 以下程序的输出结果是____。 double sub(double x,double y,double z) { y-=1.0; z=z+x; return z; } main() { double a=2.5,b=9.0; printf(\ } 第8页——共17页 答案:9.000000 7.10 以下程序的输出结果是____。 fun1(int a,int b) { int c; a+=a; b+=b; c=fun2(a,b); return c*c; } fun2(int a,int b) { int c; c=a*b%3; return c; } main() { int x=11,y=19; printf(\ } 答案:4 第八部分 指针 一、 选择题 8.1 若有定义:int x,*pb; 则以下正确的赋值表达式是 A) pb=&x B) pb=x C) *pb=&x D) *pb=*x 8.2 以下程序的输出结果是 A) 因变量无定义输出不定值 B) 0 C) -1 D) 1 #include { printf(\ 答案: B 8.3 以下程序的输出结果是 A) 5,2,3 B) -5,-12,-7 C) -5,-12,-17 D) 5,-2,-7 void sub(int x,int y,int *z) { *z=y-x; } main() { int a,b,c; sub(10,5,&a); sub(7,a,&b); sub(a,b,&c); printf(\ } 答案: B 8.4 以下程序的输出结果是 A) 4 B) 6 C) 8 D) 10 main() { int k=2,m=4,n=6; int *pb=&k,*pm=&m,*p; *(p=&n)=*pk*(*pm); printf(\ } 答案: C 8.5 已知指针p的指向如图8.5所示,则执行语句*p++; 后,*p的值是 A) 20 B) 30 C) 21 D) 31 8.6 已知指针p的指向如图8.5所示,则表达式*++p的值是 A) 20 B) 30 C) 21 D) 31 8.7 已知指针p的指向如图8.5所示,则表达式++*p的值是 第9页——共17页 答案: A 答案: B 答案: B A) 20 B) 30 C) 21 D) 31 答案: C 8.8 以下程序的输出结果是 A) 23 B) 24 C) 25 D) 26 void prtv(int *x) { printf(\ main() { int a=25; prtv(&a); } 答案: D 8.9 以下程序的输出结果是 A) 运行出错 B) 100 C) a的地址 D) b的地址 main() { int **k, *a b=100; a=&b; k=&a; printf(\ } 答案: B 8.10 以下程序的输出结果是 A) 4,3 B) 2,3 C) 3,4 D) 3,2 void fun(float *a,float *b) { float w; *a=*a+*a; w=*a; *a=*b; *b=w; } main() { float x=2.0,y=3.0; float *px=&x,*py=&y; fun(px,py); printf(\ } 答案: C 8.11 以下程序的输出结果是 A) 9.000000 B) 1.500000 C) 8.000000 D) 10.500000 void sub(float x,float *y,float *z) { *y=*y-1.0; *z=*z+x; } main() { float a=2.5,b=9.0,*pa,*pb; pa=&a,pb=&b; sub(b-a,pa,pa); printf(\ } 答案: C 二、 填空题 8.13 以下程序段的输出结果是_____。 int *var,ab; ab=100; var=&ab; ab=*var+10; printf(\答案: 100 8.14 以下程序的输出结果是_____。 int ast(int x,int y,int *cp,int *dp) { *cp=x+y; *dp=x-y; } 第10页——共17页
正在阅读:
C语言期末复习题及答案(全)10-22
一场误会作文800字07-03
厨房风水化解10-06
上机模拟试题10套含解析05-02
申请公函格式范文08-01
2012江南大学第二阶段-计算机应用基础(本科)-课程作业答案10-22
用热情、激情和实干托起电力青年军的中国梦06-30
党的十七届四中全会资料01-10
巧用电教媒体 让语文课堂“活”起来03-14
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 复习题
- 期末
- 答案
- 语言