大学MOOC C语言学习辅导与习题课(北京化工大学)1002990005 最新慕课完整章节测试答案
第一章 C语言程序设计初步
第一章 测验
1、单选题:
下列变量名中合法的是 :
选项:
A: 3a6b
B: B.C.Tom
C: _6a7b
D: $ABC
答案: 【 _6a7b】
2、单选题:
正确的定义变量的语句是:
选项:
A: int ab_;
B: int –ab ;
C: char mm
D: float a3.b;
答案: 【 int ab_;】
3、单选题:
以下合法的 C 语言字符常量是:
选项:
A: ”a”
B: ’t’
C: ’65’
D: a
答案: 【 ’t’】
4、单选题:
下列都是合法转义字符的选项是:
选项:
A: ’’’ ‘\’‘n’
B: ‘’ ‘17’‘”’
C: ‘18’ ‘f’ ‘xab’
D: ’\0’ ‘101’‘x1f’
答案: 【 ’’’ ‘\’‘n’ 】
5、单选题:
以下语句:temp=x; x=y; y=temp; 的功能是:
选项:
A: 把x,y,temp从小到大排列;
B: 把x,y,temp从大到小排列;
C: 交换x,y的值;
D: 无确定的结果。
答案: 【 交换x,y的值;】
6、单选题:
若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是:
选项:
A: 1
B: 2
C: 2.0
D: 2.5
答案: 【 2.0 】
7、单选题:
以下程序的输出结果是:#include<stdio.h>
int main()
{ int a=12,b=12;
printf("%d %dn",--a,b++);
return 0;
}
选项:
A: 10 11
B: 11 13
C: 11 10
D: 11 12
答案: 【 11 12】
8、单选题:
以下不是合法的C语言常量的是:
选项:
A: 0x5C
B: 5e2.8
C: 031
D: “123”
答案: 【 5e2.8】
9、单选题:
在Dev-c++环境中, float类型的数据需要占用( )字节内存空间
选项:
A: 1
B: 2
C: 4
D: 8
答案: 【 4】
10、单选题:
若有以下定义和语句:char c1='b',c2='e';
printf("%d,%cn",c2-c1,c2-'a'+'A');则输出结果是:
选项:
A: 2,M
B: 3,E
C: 2,E
D: 输出项与对应的格式控制不一致,输出结果不确定
答案: 【 3,E】
11、单选题:
有以下程序#include
#include<stdio.h>
int main()
{ int a,c=246;
a=c/10 % 10;
printf("%d",a);
return 0;
}输出结果是:
选项:
A: 2
B: 4
C: 6
D: 9
答案: 【 4】
12、单选题:
设x、y、z和k都是int型变量,则执行表达式x=(y=4,z=16,k=32)后,x的值为:
选项:
A: 4
B: 16
C: 32
D: 52
答案: 【 32】
13、单选题:
可在C语言中用作用户标识符的一组标识符是:
选项:
A: void define word
B: as _b3_123 ff
C: for _abc case
D: 2cdo sig
答案: 【 as _b3_123 ff】
14、单选题:
下列变量定义语句中错误的是:
选项:
A: int MBK_do
B: char dog1
C: float _sky
D: int 2ab
答案: 【 int 2ab 】
15、单选题:
能正确表示“当x的取值在[1,10]或[100,110]范围内为真,否则为假”的表达式是:
选项:
A: (x>=1) && (x<=10) && (x>=100)&&(x<=110)
B: (1<=x<=10)||(100<=x<=110)
C: (x>=1)&&(x<=10)||(x>=100) && (x<=110)
D: (x>=1)||(x<=10) && (x>=100)||(x<=110)
答案: 【 (x>=1)&&(x<=10)||(x>=100) && (x<=110)】
16、单选题:
C语言中,运算对象必须是整型的运算符是:
选项:
A: %
B: /
C: %和/
D: *
答案: 【 %】
17、单选题:
以下不合法的用户标识符是:
选项:
A: j2_KEY
B: dobule
C: 4d
D: _8_
答案: 【 4d 】
18、单选题:
以下程序的输出结果是:#include<stdio.h>
int main( )
{ int k=17;
printf("%d,%o,%xn",k,k,k);
return 0;
}
选项:
A: 17,021,0x11
B: 17,17,17
C: 17,0x11,021
D: 17,21,11
答案: 【 17,21,11】
19、单选题:
已知:int x,y; float z; 则以下输入语句错误的是:
选项:
A: scanf("%d,%d,%f",&x,&y,&z);
B: scanf ("%d%d%f",&x,&y,&z);
C: scanf ("%d %d %f", &x,&y,&z);
D: scanf ("%d%d%6.2f",&x,&y,&z);
答案: 【 scanf ("%d%d%6.2f",&x,&y,&z);】
20、单选题:
可在C语言中用作用户标识符的一组标识符是:
选项:
A: void define word
B: as_b3_123 ff
C: for_abc case
D: 2c do sig
答案: 【 as_b3_123 ff】
21、单选题:
以下程序运行的结果是:#include <stdio.h>
int main()
{ int m=5,n=10;
printf("%d,%dn",m++,--n);
return 0;
}
选项:
A: 5,9
B: 6,9
C: 5,10
D: 6,10
答案: 【 5,9】
22、单选题:
根据以下定义语句和数据的输入方式,scanf语句的正确形式应为: 已有定义:float f1,f2; 数据的输入方式:4.52<回车> 3.5<回车>
选项:
A: scanf("%f,%f",&f1,&f2);
B: scanf("%f%f",&f1,&f2);
C: scanf("%3.2f %2.1f",&f1,&f2);
D: scanf("%3.2f%2.1f",&f1,&f2);
答案: 【 scanf("%f%f",&f1,&f2);】
23、单选题:
阅读下列程序,当输入数据的形式为25,13,10<回车>,程序的输出结果为:#include <stdio.h>
int main()
{ int x,y,z;
scanf("%d%d%d",&x,&y,&z);
printf("x+y+z=%dn",x+y+z);
return 0;
}
选项:
A: x+y+z=48
B: x+y+z=35
C: x+z=35
D: 不确定值
答案: 【 不确定值】
24、单选题:
下列语句执行后,b的值是:char a='5',b=(char)(a+3);
选项:
A: '8'
B: 8
C: 56
D: 53
答案: 【 '8'】
25、单选题:
C语言中的标识符只能由字母、数字和下画线组成,且第一个字符
选项:
A: 可以是字母、数字和下画线中的任一种字符
B: 必须为字母
C: 必须为数字
D: 必须为下画线或字母
答案: 【 必须为下画线或字母】
26、单选题:
表达式35/3%3的值是:
选项:
A: 11
B: 2
C: 3
D: 0
答案: 【 2】
27、单选题:
C语言的语句都是以( )结束。
选项:
A: .
B: 空格
C: ;
D: #
答案: 【 ;】
28、单选题:
阅读下面的程序:#include<stdio.h>
int main()
{
char ch;
scanf("%c%c",&ch,&ch);
printf("%c",ch);
return 0;
}如果从键盘输入:1+2<回车>则程序的运行结果是:
选项:
A: 1
B: +
C: 2
D: 3
答案: 【 +】
29、单选题:
已知字母a的ASCII码为十进制的97,下面程序的输出结果是:#include <stdio.h>
int main()
{
char ch1,ch2;
ch1='a'+'3'-'1';
ch2='a'+'2'-'2';
printf("%d,%cn",ch1,ch2);
return 0;
}
选项:
A: 99,a
B: 99,97
C: c,97
D: 不确定的值
答案: 【 99,a】
30、单选题:
下列选项中表示整型数据的是:
选项:
A: 1e-5
B: "1"
C: 'haha'
D: 0xaf
答案: 【 0xaf】
第二章 选择结构
第二章 测验
1、单选题:
逻辑运算符两侧运算对象的数据类型( )
选项:
A: 只能是0或1
B: 只能是0或非0正数
C: 只能是整型或字符型数据
D: 可以是任何类型的数据
答案: 【 可以是任何类型的数据】
2、单选题:
能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是( )
选项:
A: (x>=1)&&(x<=10)&&(x>=200)&&(x<=210)
B: (x>=1)||(x<=10)||(x>=200)||(x<=210)
C: (x>=1)&&(x<=10)||(x>=200)&&(x<=210)
D: (x>=1)||(x<=10)&&(x>=200)||(x<=210)
答案: 【 (x>=1)&&(x<=10)||(x>=200)&&(x<=210)】
3、单选题:
若有:int a=1,b=2,c=3,d=4,m=2,n=2;则执行(m=a>b)&&(n=c>d)后n的值是( )
选项:
A: 1
B: 2
C: 3
D: 4
答案: 【 2】
4、单选题:
以下程序的输出结果是( )#include<stdio.h> int main(){ int a,b,d=241; a=d/100%9; b=(-1)&&(-1);printf(“%d,%d”,a,b);return 0; }
选项:
A: 6,1
B: 2,1
C: 6,0
D: 2,0
答案: 【 2,1 】
5、单选题:
若有int x=10,y=20,z=30;以下语句执行后x,y,z的值是( )if (x>y)z=x;x=y;y=z;
选项:
A: x=10,y=20,z=30
B: x=20,y=30,z=30
C: x=20,y=30,z=10
D: x=20,y=30,z=20
答案: 【 x=20,y=30,z=30】
6、单选题:
以下程序的输出结果是( )#include<stdio.h>int main(){ int a=0,b=0,c=0; if(a=b+c) printf("***n"); else printf("$$$n");return 0;}
选项:
A: 有语法错误不能通过编译
B: 可以通过编译但不能通过连接
C: ***
D: $$$
答案: 【 $$$】
7、单选题:
以下程序的输出结果是( )#include<stdio.h>int main() { int m=5;if(m++>5) printf("%dn",m);else printf("%dn",m--);return 0;}
选项:
A: 4
B: 5
C: 6
D: 7
答案: 【 6 】
8、单选题:
以下程序的输出结果是( )#include<stdio.h>int main() { int x=2,y=-1,z=2;if(x<y) if(y<0) z=0; else z+=1; printf("%dn",z);return 0;}
选项:
A: 3
B: 2
C: 1
D: 0
答案: 【 2 】
9、单选题:
以下程序的输出结果是( )#include<stdio.h>int main() { int a=1,b=3,c=5,d=4,x;if(a<b)if(c<d) x=1; else if(a<c) if(b<d) x=2; else x=3; else x=6;else x=7;printf("x=%d",x);return 0;}
选项:
A: 1
B: 2
C: 3
D: 6
答案: 【 2 】
10、单选题:
为了避免嵌套的if—else语句的二义性,C语言规定else总是与( )组成配对关系
选项:
A: 缩排位置相同的if
B: 在其之前未配对的if
C: 在其之前未配对的最近的if
D: 同一行上的if
答案: 【 在其之前未配对的最近的if 】
11、单选题:
若运行时给变量x输入12,则以下程序的运行结果是( )#include<stdio.h>int main(){ int x,y; scanf("%d",&x); y=x>12?x+10:x-12; printf("%dn",y);return 0;}
选项:
A: 0
B: 22
C: 12
D: 10
答案: 【 0 】
12、单选题:
以下程序的输出结果是( )#include<stdio.h>int main() { int k=4,a=3,b=2,c=1;printf("n%dn",k<a?k:c<b?c:a);return 0;}
选项:
A: 4
B: 3
C: 2
D: 1
答案: 【 1】
13、单选题:
若w=1,x=2,y=3,z=4,则表达式w<x?w:y<z?y:z的值是( )
选项:
A: 4
B: 3
C: 2
D: 1
答案: 【 1】
14、单选题:
执行下列程序段后,变量a,b,c的值分别为( )int a,b,c,x=10,y=9;a=(--x==y++)?--x:++y;b=x++;c=y;
选项:
A: a=9,b=9,c=9
B: a=8,b=8,c=10
C: a=9,b=10,c=9
D: a=1,b=11,c=10
答案: 【 a=8,b=8,c=10】
15、单选题:
以下程序的输出结果是( )#include<stdio.h> int main() { int x=0,y=2,z=3;switch(x){ case 0: switch(y) { case 0: printf("*"); break; case 1: printf("%"); break; case 2: printf("&"); break; } case 1: switch(z) { case 1: printf("$"); case 2: printf("#"); break; default: printf("@"); } default : printf("!");}return 0;}
选项:
A: &@!
B: *
C: %@
D: &!
答案: 【 &@! 】
16、单选题:
下列条件语句中,功能与其他语句不同的是()
选项:
A: if(a) printf("%dn",x); else printf("%dn",y);
B: if(a==0) printf("%dn",y); else printf("%dn",x);
C: if (a!=0) printf("%dn",x); else printf("%dn",y);
D: if(a==0) printf("%dn",x); else printf("%dn",y);
答案: 【 if(a==0) printf("%dn",x); else printf("%dn",y); 】
17、单选题:
有如下程序 #include<stdio.h>int main( ) { int x=1,a=0,b=0; switch(x){ case 0: b++; case 1: a++; case 2: a++;b++; } printf("a=%d,b=%dn",a,b); return 0; } 该程序的输出结果是 ( )
选项:
A: a=2,b=1
B: a=1,b=1
C: a=1,b=0
D: a=2,b=2
答案: 【 a=2,b=1】
18、单选题:
若执行下面的程序时从键盘上输入3和4,则输出是() #include<stdio.h>int main() { int a,b,s; scanf("%d %d",&a,&b); s=a; if(a<b)s=b; s=s*s; printf("%dn",s);return 0;}
选项:
A: 14
B: 16
C: 18
D: 20
答案: 【 16】
19、单选题:
设ch是char型变量,其值为A,且有表达式:ch=(ch>='A'&&ch<='Z')?(ch+32):ch;则表达式的值是()
选项:
A: A
B: a
C: Z
D: z
答案: 【 a】
20、单选题:
设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<b)&&!c||1)
答案: 【 !((a<b)&&!c||1)】
21、单选题:
能正确表示a≥10或a≤0的关系表达式是()
选项:
A: a>=10 or a<=0
B: a>=10 | a<=0
C: a> =10 , a< =0
D: a>=10 || a<=0
答案: 【 a>=10 || a<=0】
22、单选题:
若运行下面程序时,给变量a输入15,则输出结果是( )。#include<stdio.h>int main( ){ int a,b;scanf("%d",&a);b=a>15?a+10:a-10;printf("%dn",b) ;return 0;}
选项:
A: 5
B: 25
C: 15
D: 10
答案: 【 5 】
23、单选题:
以下选项中,两个条件语句语义等价的是( )
选项:
A: if(a=2)printf("%dn",a);if(a==2)printf("%n",a);
B: if(a-2)printf("%dn",a);if(a!=2)printf("%n",a);
C: if(a)printf("%dn",a);if(a==0)printf("%n",a);
D: if(a-2)printf("%dn",a);if(a==2)printf("%n",a);
答案: 【 if(a-2)printf("%dn",a);if(a!=2)printf("%n",a);】
24、单选题:
关于switch语句和break语句的描述中,正确的是()
选项:
A: 在switch语句中必须使用break语句
B: break语句只能用于switch语句中
C: 在使用switch语句时,可以根据需要选择是否使用break语句
D: break语句是switch语句的一部分
答案: 【 在使用switch语句时,可以根据需要选择是否使用break语句】
25、单选题:
以下程序的输出结果是( )#include<stdio.h>int main(){ int x=1,y=0; switch(x) { case 1: switch(y)
