大学MOOC C语言程序设计(西南石油大学)1452792192 最新慕课完整章节测试答案
第二章运算符、表达式
文章目录
- 第二章运算符、表达式
- 第三章顺序结构程序设计
- 第四章选择结构程序设计
- 第五章循环结构程序设计
- 第六章函数
- 第七章数组
- 第八章指针
- 第九章结构体
- 第1周——初识C语言从认识变量和常量开始
- 第2周——数字间的那些事儿做点计算哈
- 第3周——从键盘中来到键盘中去开始输入和输出啦
- 第4周——无处不在的抉择
- 第5周——周而复始的循环之道
- 第6周——函数分工与合作的艺术
- 第7周——盗梦空间的逻辑探寻递归的奥秘
- 第8周——一堆数据来了你准备好了吗
- 第9周——指针C语言世界中所向披靡的金箍棒”
- 第10周——字符串C语言世界中的大力水手
- 第11周——指针的孪生兄弟
- 第12周——海陆空齐上阵又来了一堆数据
- 第13周——原来内存也可以这么玩我是指针我怕谁
- 第14周——结构设计的艺术
- 第15周——学会保存你的数据
- 结课考试
第二章单元测验
1、单选题:
执行下列语句后y=10;x=y++;变量x和y的值是()。
选项:
A: x=10,y=10
B: x=11,y=11
C: x=10,y=11
D: x=11,y=10
答案: 【 x=10,y=11】
2、单选题:
下列运算符中,不属于关系运算符的是()。
选项:
A: <
B: >
C: >=
D: !
答案: 【 !】
3、单选题:
以下不符合C语言语法的赋值语句是()。
选项:
A: a=1,b=2
B: ++j;
C: a=b=5;
D: y=(a=3,6*5);
答案: 【 a=1,b=2】
4、单选题:
执行下列程序后,其输出结果是()。int main(){int a=9;a+=a-=a+a;printf("%dn",a);return 0;}
选项:
A: 18
B: 9
C: -18
D: -9
答案: 【 -18】
5、单选题:
下列语句的输出结果是()。printf("%dn" , (int)(2.5+3.0)/3);
选项:
A: 有语法错误不能通过编译
B: 2
C: 1
D: 0
答案: 【 1】
6、单选题:
下列程序的输出结果是()。int main(){int a=011;printf("%dn",++a);return 0;}
选项:
A: 12
B: 11
C: 10
D: 9
答案: 【 10】
7、单选题:
下列程序的输出结果为()。int main(){int m=7,n=4;float a=38.4,b=6.4,x;x=m/2+n*a/b+1/2;printf("%fn",x);return 0;}
选项:
A: 27.000000
B: 27.500000
C: 28.000000
D: 28.500000
答案: 【 27.000000】
8、单选题:
执行下列语句后,a和b的值分别为()。int a,b;a=1+'a';b=2+7%-4-'A';
选项:
A: -63,-64
B: 98,-60
C: 1,-60
D: 79,78
答案: 【 98,-60】
9、单选题:
以下程序的输出结果是()。int main(){float x=3.6;int i;i=(int)x;printf(""x=%f,i=%dn"",x,i);return 0;}
选项:
A: x=3.600000,i=4
B: x=3,i=3
C: x=3.600000,i=3
D: x=3 i=3.600000
答案: 【 x=3.600000,i=3】
10、单选题:
经下列语句定义后,sizeof(x),sizeof(y),sizeof(a),sizeof(b)的值分别为()。char x=65;float y=7.3; short int a=100;double b=4.5;
选项:
A: 2,2,2,4
B: 1,2,2,4
C: 1,4,2,8
D: 2,4,2,8
答案: 【 1,4,2,8】
11、单选题:
a,b为整型变量,二者均不为0,以下关系表达式中恒成立的是()。
选项:
A: a*b/a*b==1
B: a/b*b/a==1
C: a/b*b+a%b==a
D: a/b*b==a
答案: 【 a/b*b+a%b==a】
12、单选题:
以下运算符中,优先级最高的运算符是()。
选项:
A: ? :
B: ++
C: &&
D: ,
答案: 【 ++】
13、单选题:
已知year为整型变量,能使表达式(year%4==0 && year%100!=0)||year%400==0的值为“真”的数据是()。
选项:
A: 2019
B: 2020
C: 2018
D: 2017
答案: 【 2020】
14、单选题:
当m取以下哪个值时,能使m%3==2 && m%5==3 && m%7==2为真()。
选项:
A: 8
B: 23
C: 17
D: 6
答案: 【 23】
15、单选题:
已知x=43,ch='A',y=0;则表达式(x>=y&&ch<'B'&&!y)的值是()。
选项:
A: 0
B: 语法错
C: 1
D: 假
答案: 【 1】
16、单选题:
判断char型变量cl是否为小写字母的正确表达式是()。
选项:
A: 'a'<=cl<='z'
B: (cl>=a) && (cl<=z)
C: ('a'>=cl) || ('z'<=cl)
D: (cl>='a') && (cl<='z')
答案: 【 (cl>='a') && (cl<='z')】
17、判断题:
C语言中"%"运算符的运算对象必须是整型
选项:
A: 正确
B: 错误
答案: 【 正确】
18、判断题:
逻辑表达式-5&&!8的值为1。
选项:
A: 正确
B: 错误
答案: 【 错误】
19、判断题:
表达式 (j=3, j++) 的值是4。
选项:
A: 正确
B: 错误
答案: 【 错误】
20、判断题:
7&&3+12的值是13。
选项:
A: 正确
B: 错误
答案: 【 错误】
21、判断题:
一个include 命令可以指定多个被包含的文件。
选项:
A: 正确
B: 错误
答案: 【 错误】
22、填空题:
设 int x=1, y=1; 表达式(!x||y--)的值是()。
答案: 【 1】
23、填空题:
假设所有变量均为整型,表达式a=2,b=5,a>b?a++:b++,a+b的值是()。
答案: 【 8】
24、填空题:
逻辑运算符中,优先级最高的是()
答案: 【 !】
25、填空题:
下列程序的输出结果是()。(输出语句中的“,”为英文字符)int main(){int a=0,b=5;int y=( a++ && b++);printf(“%d,%d,%dn”,a,b,y);return 0;}
答案: 【 1,5,0】
26、填空题:
以下程序的输出结果为()。(输出语句中的“,”为英文字符)int main(){int i=010,j=10;printf(""%d,%dn"",++i,j--);return 0;}
答案: 【 9,10】
27、填空题:
以下程序的输出结果是()。(输出语句中的“,”为英文字符)int main(){int i,j,k,a=3,b=2;i=(--a==b++)?--a:++b;j=a++;k=b;printf("%d,%d,%dn",i,j,k);return 0;}
答案: 【 1,1,3】
第三章顺序结构程序设计
第三章单元测验
1、单选题:
C语言程序从( )开始执行
选项:
A: 程序中第一条可执行语句
B: 程序中第一个函数
C: 程序中的main函数
D: 包含文件中的第一个函数
答案: 【 程序中的main函数】
2、单选题:
下列程序执行后的输出结果是( )#include<stdio.h>int main(){ char ch; ch='A'; ch=ch+34; printf("%d",ch); return 0;}
选项:
A: a
B: b
C: 97
D: 99
答案: 【 99】
3、单选题:
已有如下定义和输入语句,若要求a1,a2,分别为10,20,从第一列开始输入数据时,正确的输入方式是( )int a1,a2;scanf("%d,%d",&a1,&a2);
选项:
A: 10 20
B: a1=10,a2=20
C: 1020
D: 10,20
答案: 【 10,20】
4、单选题:
设整型变量a=2,则执行下列语句后,浮点型变量b的值不为0.5的是( )
选项:
A: b=1.0/a
B: b=(float)(1/a)
C: b=1/(float)a
D: b=1/(a*1.0)
答案: 【 b=(float)(1/a)】
5、单选题:
下面程序的输出是( )#include<stdio.h>int main() { int k=11; printf("k=%d,k=%o,k=%xn",k,k,k); return 0;}
选项:
A: k=11,k=12,k=11
B: k=11,k=13,k=13
C: k=11,k=013,k=0xb
D: k=11,k=13,k=b
答案: 【 k=11,k=13,k=b】
6、单选题:
有以下程序#include<stdio.h>int main() { char ch; int k; ch='a'; k=12; printf("%c,%d,",ch,ch,k); printf("k=%dn",k); }字符a的ASCII十进制代码为97,则执行上述程序后输出结果是( )
选项:
A: 因变量类型与格式描述符的类型不匹配输出无定值
B: 输出项与格式描述符个数不符,输出为零值或不定值
C: a,97,12 k=12
D: a,97, k=12
答案: 【 a,97, k=12】
7、单选题:
有变量 int a=3,执行函数printf(“a=%d”,a)后,屏幕上输出的结果是( )
选项:
A: a=a
B: a=3
C: a=%d
D: a='a'
答案: 【 a=3】
8、单选题:
以下程序的输出结果是( )#include<stdio.h>int main(){ int num=0; num=(num+4)%3; printf("%d",num); return 0;}
选项:
A: 1
B: 0
C: 3
D: 2
答案: 【 1】
9、单选题:
下面选项中可以实现输出字符变量c值的语句是( )
选项:
A: printf(“c”);
B: scanf(c);
C: putchar(c);
D: getchar(c);
答案: 【 putchar(c);】
10、单选题:
以下程序的输出结果是( )#include<stdio.h>int main(){ int a=3; int b=2; b=(a+b)*a; a=b-a; printf("%d",a); return 0;}
选项:
A: 3
B: 10
C: 12
D: 15
答案: 【 12】
11、判断题:
变量 a 与‘a’含义是一样的.
选项:
A: 正确
B: 错误
答案: 【 错误】
12、判断题:
scanf()函数的作用是接收键盘的数据输入,该函数仅能接收输入数值型数据。
选项:
A: 正确
B: 错误
答案: 【 错误】
13、判断题:
字符在内容中的存储是占2个字节,以ASCII形式存储。
选项:
A: 正确
B: 错误
答案: 【 错误】
14、判断题:
正确的变量定义是只有字母,数字和下划线,但以数字作为开头。
选项:
A: 正确
B: 错误
答案: 【 错误】
15、填空题:
若整型变量a和b中的值分别为7和9,要求按以下格式输出a和b的值:a=7(换行)b=9请完成输出语句:printf(" ",a,b);
答案: 【 a=%dnb=%d##%_YZPRLFH_%##a=%dnb=%d】
16、填空题:
假设定义了 float a=3.5;int b=67;如果要实现在屏幕上输出a=3.500000,b=67的样式,则输出语句应是printf("a=%f,______",a,b);
答案: 【 b=%d##%_YZPRLFH_%##b=%d##%_YZPRLFH_%##b=%d】
17、填空题:
C语言中的简单数据类型包括_____、实型、字符型
答案: 【 整型##%_YZPRLFH_%##int】
18、填空题:
C程序的三种基本结构是_____结构、选择结构、循环结构
答案: 【 顺序】
19、填空题:
设有定义: int a; float b; 执行scanf("%2d%f",&a,&b);语句时,若从键盘输入876543.0<回车>, a值是 _________,b值是6543.000000
答案: 【 87】
20、填空题:
有以下程序段 int x=12;double y=3.141593;printf("%d,%f",x,y);程序的输出结果_______
答案: 【 12,3.141593##%_YZPRLFH_%##12,3.141593】
第四章选择结构程序设计
第四章单元测验
1、单选题:
程序代码如下:#include <stdio.h>int main(){ int a,b; printf("please input a and b:n"); scanf("%d,%d",&a,&b); printf("the output data is %dn",a<b?b:a); return 0;}从键盘输入以下数据:2,7<回车>则程序输出为
选项:
A: the output data is 2
B: the output data is 1
C: the output data is 7
D: the output data is 0
答案: 【 the output data is 7】
2、单选题:
以下程序运行后的输出结果是#include <stdio.h>int main(){ int a,b,c; a=10; b=20; c=(a%b<1)||(a/b>1); printf("%d,%d,%d",a%b,a/b,c); return 0;}
选项:
A: 10,0,1
B: 10,0,0
C: 10,1,0
D: 10,1,1
答案: 【 10,0,0】
3、单选题:
执行以下程序后的输出结果为#include <stdio.h>int main(){ int a=1,b=0; switch (a) { case 1: switch (b) { case 0: printf("**0**");break; case 1: printf("**1**");break; } case 2: printf("**2**");break; } return 0;}
选项:
A: 有语法错误
B: **0**
C: **0****2**
D: **0****1****2**
答案: 【 **0****2**】
4、单选题:
下面程序运行后的输出结果是#include <stdio.h>int main(){ int a=3,b=4,c=5,d=2; if(a>b) { if(b>c) { printf("%d",d++ +1); } else { printf("%d",++d +1); } } printf("%dn",d); return 0;}
选项:
A: 43
B: 3
C: 44
D: 2
答案: 【 2】
5、单选题:
编程计算下面的分段函数,根据从键盘输入的y值。

程序代码如下,为完成以上功能,请将第13行标号处缺少的代码填写完整。
1. #include <stdio.h>
2. #include <math.h>
3. int main()
4. {
5. int x;
6. double y;
7. printf("Input x: ");
8. scanf("%d", &x); // 输入一个整数
9. if (x > 0)
10. {
11. y = exp(-x); //如果大于0,计算y=exp(-x)的值
12. }
13. _____________
14. {
15. y = 1; //x=0,则y=1
16. }
17. else
18. {
19. y = -exp(x); //x<0,则y=-exp(x)
20. }
21. printf("y=%fn", y);
22. return 0;
23. }
选项:
A: else if (x == 0)
B: if (x == 0)
C: if (x = 0)
D: else if (x = 0)
答案: 【 else if (x == 0)】
6、单选题:
#include <stdio.h>#include <stdlib.h>int main(){ int a=3,b=5,c=7; if(a>b) a=b; c=a; if(c!=a) c=b; printf("%d,%d,%dn",a,b,c); return 0;}其输出结果是:
选项:
A: 程序段有语法错
B: 3,5,3
C: 3,5,5
D: 3,5,7
答案: 【 3,5,3】
7、单选题:
#include <stdio.h>main(){ int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y) { case 0: a++; break; case 1: b++; break; } case 2: a++; b++; break; case 3: a++; b++; } printf("a=%d,b=%dn",a,b);}程序的运行结果是
选项:
A: a=1,b=0
B: a=2,b=2
C: a=1,b=1
D: a=2,b=1
答案: 【 a=2,b=1】
8、单选题:
#include "stdio.h"void main(){ char c; int v0=0,v1=0,v2=0; do { switch(c=getchar()) { case 'a': case 'A': case 'e': case 'E': case 'i': case 'I': case 'o': case 'O': case 'u': case 'U': v1+=1; default: v0+=1; v2+=1; } } while(c!='n'); printf("v0=%d,v1=%d,v2=%dn",v0,v1,v2);}若运行程序时,从键盘输入 ADescriptor(回车),则运行结果是:
选项:
A: v0=11,v1=4,v2=11
B: v0=8,v1=4,v2=8
C: v0=7,v1=4,v2=7
D: v0=12,v1=4,v2=12
答案: 【 v0=12,v1=4,v2=12】
9、单选题:
#include <stdio.h>int main(){ int c=0,k = 2; switch(k) { default: c+=k; case 2: c+=3; break; case 4: c+=2; break; } printf("%dn",c); return 0;}程序运行结果是:
选项:
A: 3
B: 2
C: 5
D: 7
答案: 【 3】
10、单选题:
#include <stdio.h>void main(){ int n1 = 0, n2 = 0, n3 = 0; char ch = getchar(); switch(ch) { case '1' : case '3' : n1++; break; case '2' : case '4' : n2++; break; default : n3++; break; } printf("%d %d %dn", n1, n2, n3);}若程序运行时输入1<回车>,则输出结果是:
选项:
A: 1 0 0
B: 0 0 1
C: 0 1 0
D: 1 1 0
答案: 【 1 0 0】
11、单选题:
#include <stdio.h>void main(){ int a=1,b=2,c=3,d=4,m=2,n=2; (m=a>b) && (n=c>d); printf("%d", n);}程序运行结果是:
选项:
A: 1
B: 2
C: 3
D: 4
答案: 【 2】
12、单选题:
#include <stdio.h>void main ( ){ int x=1,y=0,a=0,b=0; switch(x) { case 1: switch (y) { case 0 : a++ ; break ; case 1 : b++ ; break ; } case 2 : a++; b++; break; case 3 : a++; b++; } printf("a=%d,b=%d",a,b);}程序输出结果是:
选项:
A: a=1,b=0
B: a=2,b=1
C: a=1,b=1
D: a=2,b=2
答案: 【 a=2,b=1】
13、单选题:
对如下程序,若用户输入为A,则输出结果为( )#include <stdio.h>main(){ char ch; scanf("%c",&ch); ch=(ch>='A'&&ch<='Z')?(ch+32):ch; printf("%cn",ch);}
选项:
A: A
B: 32
C: a
D: 空格
答案: 【 a】
14、单选题:
下列表达式中能表示a在0 到100之间的是( )
选项:
A: a>0&a<100
B: !(a<0||a>100)
C: 0<a<100
D: !(a>0&&a<100)
答案: 【 !(a<0||a>100)】
15、单选题:
#include <stdio.h>main(){ int x =1, y=1 ; int m, n; m=n=1; switch (m) { case 0 : x=x*2; case 1: { switch (n) { case 1 : x=x*2; case 2 : y=y*2; break; case 3 : x++; } } case 2 : x++; y++; case 3 : x*=2; y*=2; break; default: x++; y++; } printf("x = %d y = %d", x, y);}执行完成后,x 和y 的值分别为( )
选项:
A: x=6 y=6
B: x=2 y=1
C: x=2 y=2
D: x=7 y=7
答案: 【 x=6 y=6】
16、单选题:
以下程序段中与语句:k=a>b?(b>c?1:0):0功能等价的是 ( )。
选项:
A: if((a>b)&&(b>c)) k=1; else k=0;
B: if((a>b)||(b>c)) k=1; else k=0;
C: if(a<=b) k=0; else if(b<=c) k=1;
D: if(a>b) k=1; else if(b>c) k=1; else k=0;
答案: 【 if((a>b)&&(b>c)) k=1; else k=0;】
17、单选题:
下列程序运行结果为:#include <stdio.h>#include <stdlib.h>int main(){ int x,y,z,a; x=y=z=1;a=15; if(!x) a--; else if(y); if(z) a=3; else a+=4; printf("%dn",a); system("pause"); return 0;}
选项:
A: 3
B: 14
C: 15
D: 19
答案: 【 3】
18、单选题:
下列程序运行结果是:#include <stdio.h>#include <stdlib.h>int main(){ int n=9; switch(n--) { default: printf("%d ",n++); case 8: case 7: printf("%d ",n); break; case 6: printf("%d ",n++); case 5: printf("%d ",n); } system("pause"); return 0;}
选项:
A: 8
B: 7
C: 8 7
D: 8 9
答案: 【 8 9】
19、单选题:
运行以下程序,若从键盘输入“5”,则结果是 ( )。#include <stdio.h>#include <stdlib.h>int main(){ int a,y=10; scanf("%d",&a); if(a>10) y=a+6; printf("%dn",y+a); system("pause"); return 0;}
选项:
A: 10
B: 1
C: 16
D: 15
答案: 【 15】
20、单选题:
设x=1,y=2,m=4,n=3,则表达式k=(x>y?x:m<n?y:n)的值为 ( )。
选项:
A: 1
B: 2
C: 3
D: 4
答案: 【 3】
21、单选题:
为表示关系:x>y>z,应使用c语言的表达式 ( )
选项:
A: (x>y)and(y>z)
B: (x>y)||(y>z)
C: (x>y)&&(y>z)
D: (x>y>z)
答案: 【 (x>y)&&(y>z)】
22、单选题:
下列关于switch语句与break语句的阐述中,正确的是 ( )。
选项:
A: break语句是switch语句的一部分
B: 在switch语句中必须使用break语句
C: 在switch语句中可以不用break语句
D: break语句只能用于switch语句中
答案: 【 在switch语句中可以不用break语句】
23、单选题:
已知语句:int a=3,b=4;则执行表达式(a=b++)&&(b=a++)后,变量a、b的值是 ( )。
选项:
A: 3 4
B: 4 4
C: 5 4
D: 4 5
答案: 【 5 4】
24、填空题:
将条件“y能被4整除但不能被100整除,或y能被400整除”写成逻辑表达式(_______________________)
答案: 【 (y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)】
25、填空题:
int x=3,y=-4,z=5;则表达式(x&&y)= =(x||z)的值为(___________________ )
答案: 【 1】
26、填空题:
输入一个字符,如果它是一个大写字母,则把它变成小写字母,如果它是小写字母,则把它变成一个大写字母,其他字符不变。请填空。#include <stdio.h>main(){ char ch; scanf("%c",&ch); if( ____________________ ) ch=ch+32; else if(ch>='a'&&ch<='z') ch=ch-32; printf("%c",ch);}
答案: 【 ch>=65&&ch='A'&&ch<='Z'】
27、填空题:
以下程序实现:输入三个整数,按从大到小的顺序进行输出。请填空。#include <stdio.h>main(){ int x,y,z,c; scanf("%d%d%d",&x,&y,&z); if(_____________________) { c=y; y=z; z=c; } if(z>x) { c=x; x=z; z=c; } if(y>x) { c=x; x=y; y=c; } printf("%d,%d,%d",x,y,z);}
答案: 【 z>y】
28、填空题:
以下程序对输入的一个小写字母,将字母循环后移 5 个位置后输出,如’a’变成’f’,’w’变成’b’,请在空格处填空。#include <stdio.h>main(){ char c; c=getchar(); if(c>='a'&&c<='u') (_______________) ; else if(c>='v'&&c<='z') c=c-21; //或 c-=21 putchar(c);}
答案: 【 c+=5 或 c=c+5】
第五章循环结构程序设计
第五章单元测试
1、单选题:
有以下程序:int k=0;while(k=1) k++;
选项:
A: 无限次循环
B: 有语法错误,不能执行
C: 一次也不能执行
D: 执行一次
答案: 【 无限次循环】
2、单选题:
#include <stdio.h> main() { int d, n = 1234; while(n != 0) { d = n % 10; n = n / 10; printf("%d", d); } }程序运行后的输出结果是____ _____。
选项:
A: 4321
B: 1234
C: 1
D: 4
答案: 【 4321】
3、单选题:
以下说法正确的是______。
选项:
A: continue的作用是结束整个循环的执行
B: 只能在循环体内和switch语句体内使用break语句
C: 在循环体内使用break或者continue的作用相同
D: 从多层循环嵌套中退出时,只能使用goto语句
答案: 【 只能在循环体内和switch语句体内使用break语句】
4、单选题:
#include<stdio.h>main(){int count, i=0;for(count=1;count<4;count++) { i+=2; printf("%d",i); }}
选项:
A: 20
B: 246
C: 2468
D: 2222
答案: 【 246】
5、单选题:
#include <stdio.h>void main() { int n1 = 0, n2 = 0, n3 = 0; char ch; while ((ch = getchar()) != '!') switch(ch) { case '1' : case '3' : n1++; break; case '2' : case '4' : n2++; break; default : n3++; break; } printf("%d %d %dn", n1, n2, n3); }若程序运行时输入01234567!<回车>,则输出结果是 。
选项:
A: 2 2 4
B: 1 1 6
C: 1 2 3
D: 4 4 4
答案: 【 2 2 4】
6、单选题:
int e;语句while(!e){...}中要执行循环体应满足______条件。
选项:
A: e=1
B: e=0
C: e!=1
D: e!=0
答案: 【 e=0】
7、单选题:
下列关于for循环说法正确的是____。
选项:
A: for循环只能用于循环次数已经确定情况
B: for循环是先执行循环体语句,后判定表达式
C: 在for循环中,不能用break语句跳出循环体
D: 在for循环体语句中,可以包含多条语句,但是要花括号括起来
答案: 【 在for循环体语句中,可以包含多条语句,但是要花括号括起来】
8、单选题:
#include<stdio.h>main(){ int i ;for(i=4;i<=10;i++){if(i%3==0)continue;prinf(“%d”,i);}}执行上述程序后,运行结果是______。
选项:
A: 45
B: 457810
C: 69
D: 678910
答案: 【 457810】
9、单选题:
C语言中while与do-while的主要区别是____。
选项:
A: do-while的循环体至少无条件地执行一次
B: while的循环控制条件比do-while的循环控制条件更严格
C: do-while允许从外部转到循环体内
D: do-while 的循环体不能是复合语句
答案: 【 do-while的循环体至少无条件地执行一次】
10、单选题:
以下语句不会出现死循环的是______。
选项:
A: for( ; ; x+=1);
B: for( ; x=getchar()!='n'; );
C: while(1){ x++;}
D: for(x=10; ; x--)
答案: 【 for( ; x=getchar()!='n'; );】
11、单选题:
以下程序段的输出结果为()。for(i=4;i>1;i--)for(j=1;j<i;j++)putchar('#');
选项:
A: 无
B: ######
C: ###
D: #
答案: 【 ######】
12、单选题:
以下正确的描述是_____。
选项:
A: continue语句的作用是终止整个循环的执行。
B: continue语句的作用是结束本次循环的执行。
C: continue语句和break语句都可以在switch语句中使用。
D: break语句的作用是结束本次循环的执行。
答案: 【 continue语句的作用是结束本次循环的执行。】
13、单选题:
有以下程序段int n=0,p;do { scanf("%d",&p); n++;}while(p!=12345&&n<3);此处do-while循环的结束条件可以是______。
选项:
A: p的值不等于12345并且n的值小于3
B: p的值等于12345并且n的值大于等于3
C: p的值不等于12345或者n的值小于3
D: p的值等于12345或者n的值大于等于3
答案: 【 p的值等于12345或者n的值大于等于3】
14、单选题:
for(i=0;i<10;i++)if(i<=5) break;则循环结束后i的值为( )。
选项:
A: 0
B: 1
C: 5
D: 10
答案: 【 0】
15、单选题:
有以下程序:#include <stdio.h>void main(){ int i; for(i=1;i<=5;i++) { if(i%2)printf("*"); else continue; printf("#"); } printf("$n");}程序的输出结果是______________。
选项:
A: *#*#*#$
B: #*#*#*$
C: *#*#$
D: #*#*$
答案: 【 *#*#*#$】
16、单选题:
设j和k都是int类型,则for循环语句 for(j=0,k=-1;k=1;j++,k++) printf("****n");则下列对该程序的评论正确的是_______。
选项:
A: 循环结束的条件不合法
B: 是无限循环
C: 循环体一次也不执行
D: 循环体只执行一次
答案: 【 是无限循环】
17、单选题:
设j和k都是int类型,则下面的for循环语句()。 for(j=0,k=0;j<=9&&k!=876;j++) scanf("%d",&k);
选项:
A: 最多执行10次
B: 最多执行9次
C: 循环体一次也不执行
D: 是无限循环
答案: 【 最多执行10次】
18、单选题:
以下for循环的执行次数是 for(x=0,y=0;(y=123)&&(x<4);x++);。
选项:
A: 是无限循环
B: 循环次数不定
C: 4次
D: 3次
答案: 【 4次】
19、单选题:
以下程序段中,能够正确地执行循环的是()。
选项:
A: for(i=1;i>10;i++)
B: static int a;while(a)
C: int s=6;do {s-=2;}while(s);
D: int s=6;m:if(s<100) exit(0); else s-=2;goto m:
答案: 【 int s=6;do {s-=2;}while(s);】
20、单选题:
设变量已正确定义,则以下能正确计算阶乘f=n!的程序段是______。
选项:
A: f=0; for(i=1;i<=n;i++) f*=i;
B: f=1; for(i=1;i<n;i++) f*=i;
C: f=1;for(i=n;i>1;i++) f*=i;
D: f=1;for(i=n;i>=2;i--) f*=i;
答案: 【 f=1;for(i=n;i>=2;i--) f*=i; 】
21、单选题:
在以下给出的表达式中,与 do--while(x)语句中的(x)不等价的表达式是()。
选项:
A: (!x==0)
B: (x>0||x<0)
C: (x==0)
D: (x!=0)
答案: 【 (x==0)】
22、单选题:
从循环体内某一层跳出,继续执行循环外的语句是__________。
选项:
A: break
B: return
C: goto
D: continue
答案: 【 break】
23、单选题:
从循环体内某一层跳出,继续执行该层循环的语句是____________。
选项:
A: break
B: continue
C: goto
D: return
答案: 【 continue】
24、单选题:
for(i=0;i<10;i++)if(i==5) continue;则循环结束后i的值为___________。
选项:
A: 0
B: 1
C: 5
D: 10
答案: 【 10】
25、单选题:
执行下面的程序后,a的值为________。void main(){ int a,b; for(a=1,b=1;a<=100;a++) { if(b>=20) break; if(b%3==1) { b+=3; continue; } b-=5; }}
选项:
A: 10
B: 9
C: 8
D: 7
答案: 【 8】
26、单选题:
若变量已正确定义,有下列程序段: i=0; do{ printf("%d,",i); }while(i++); printf("%dn",i) ; 其输出结果是______。
选项:
A: 0,0
B: 0,1
C: 1,1
D: 无限循环
答案: 【 0,1】
27、单选题:
以下程序的执行结果是_______. main() { int num = 0; while( num <= 2 ) { num++; printf( "%d,",num ); } }
选项:
A: 0,1,2
B: 1,2
C: 1,2,3
D: 1,2,3,4
答案: 【 1,2,3】
28、单选题:
![]()
若执行以上程序后,在键盘输入12,8回车,则结果是_____。
选项:
A: 2,6
B: 4,24
C: 4,12
D: 8,96
答案: 【 4,24】
29、单选题:
下面程序段的结果是_____。
![]()
选项:
A: 1,2,0
B: 2,1,0
C: 1,2,1
D: 2,1,1
答案: 【 1,2,0】
30、单选题:
int n=0;while(n++<=2);printf("%d",n);
选项:
A: 3
B: 2
C: 代码有错
D: 4
答案: 【 4】
31、判断题:
break不是结束本次循环,而是终止整个循环的执行。
选项:
A: 正确
B: 错误
答案: 【 正确】
32、判断题:
do-while循环的while后分号可以省略。
选项:
A: 正确
B: 错误
答案: 【 错误】
33、判断题:
若有int ⅰ=10, j=0; 则执行完语句if (j=0) ⅰ+ +; else ⅰ- -; 后ⅰ的值为11。
选项:
A: 正确
B: 错误
答案: 【 错误】
34、判断题:
已定义int i=0;则 for(;i<100;i++) 与while(i<100){ i++;}是等价的。
选项:
A: 正确
B: 错误
答案: 【 正确】
35、判断题:
C语言的三种循环语句for 、while 和do-while不可以互相嵌套。
选项:
A: 正确
B: 错误
答案: 【 错误】
第六章函数
第六章单元测验
1、单选题:
C语言中,未设定存储类别的局部变量的隐含存储类别是()
选项:
A: auto
B: static
C: extern
D: register
答案: 【 auto】
2、单选题:
以下声明函数原型错误的是( )
选项:
A: float myadd(float a,b);
B: float myadd(float b,float a);
C: float myadd(float ,float);
D: float myadd(float a,float b);
答案: 【 float myadd(float a,b); 】
3、单选题:
在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是( )
选项:
A: 地址传递
B: 单向值传递
C: 由实参传给形参,再由形参传回实参
D: 传递方式由用户指定
答案: 【 单向值传递】
4、单选题:
下面程序输出的值是( )void fun(int a)
{
a++;
}
int main()
{
int b=10;
fun(b);
printf("%d",b);
return 0;
}
选项:
A: 0
B: 11
C: 10
D: 12
答案: 【 10】
5、单选题:
(1)以下程序程序运行后的输出结果是 ( )#include<stdio.h>
int f(int n)
{
if(n==1)
{
return 1;
}
else
return f(n-1)+1;
}
int main()
{
int i,j=0;
for(i=1;i<3;i++)
{
j+=f(i);
}
printf("%dn",j);
return 0;
}
选项:
A: 1
B: 2
C: 3
D: 4
答案: 【 3】
6、单选题:
若有如下函数调用语句 func(rec1,rec2+rec3,(rec4,rec5));该函数调用语句中,含有的实参个数是( )个
选项:
A: 1
B: 2
C: 3
D: 4
答案: 【 3】
7、单选题:
有如下程序,输出结果是______________。#include<stdio.h>
int func(int ,int );
int main()
{
int k=4,m=1,p;
p=func(k,m);
printf("%d,",p);
p=func(k,m);
printf("%dn",p);
return 0;
}
int func(int a,int b)
{
static int m=0,i=2;
m++;
i=i+m;
m=i+a+b;
return m;
}
选项:
A: 8,17
B: 817
C: 9,18
D: 7,16
答案: 【 8,17】
8、单选题:
以下叙述中错误的是( )
选项:
A: 改变函数形参的值,不会改变对应实参的值
B: 函数可以返回地址值
C: 函数调用中发生的数据传送是单向的
D: 函数的实参和其对应的形参共占同一存储单元
答案: 【 函数的实参和其对应的形参共占同一存储单元】
9、单选题:
以下程序运行结果( )#include <stdio.h>
int a=1;
int f(int c)
{
static int a=2;
c=c+1;
return (a++)+c;
}
main()
{
int i,k=0;
for(i=0;i<2;i++)
{
int a=3;
k+=f(a);
}
k+=a;
printf("%dn",k);
}
选项:
A: 14
B: 15
C: 16
D: 17
答案: 【 14】
10、单选题:
以下程序的输出结果( )#include <stdio.h>
f(int b[],int m,int n)
{
int i,s=0;
for(i=m;i<n;i=i+2)
s=s+b[i];
return s;
}
main()
{
int x,a[]={1,2,3,4,5,6,7,8,9};
x=f(a,3,7);
printf("%dn",x);
}
选项:
A: 10
B: 11
C: 9
D: 12
答案: 【 10】
11、单选题:
以下程序输出结果( )#include <stdio.h>
void f(int x,int y)
{
int t;
if(x<y)
{
t=x;
x=y;
y=t;
}
}
main()
{
int a=4,b=3,c=5;
f(a,b);
f(a,c);
f(b,c);
printf("%d,%d,%dn",a,b,c);
}
选项:
A: 4,3,5
B: 3,4,5
C: 5,4,3
D: 4,5,3
答案: 【 4,3,5】
12、单选题:
以下程序输出结果( )#include <stdio.h>
int a=2;
int f(int n)
{
static int a=3;
int t=0;
if(n%2)
{
static int a=4;
t+=a++;
}
else
{
static int a=5;
t+=a++;
}
return t+a++;
}
main()
{
int s=a,i;
for(i=0;i<3;i++)
s+=f(i);
printf("%dn",s);
}
选项:
A: 28
B: 26
C: 24
D: 29
答案: 【 29】
13、单选题:
以下程序输出结果( )#include <stdio.h>
void f(int v, int w)
{
int t;
t=v;
v=w;
w=t;
}
main()
{
int x=1,y=3,z=2;
if(x>y)
f(x,y);
else if(y>z)
f(y,z);
else
f(x,z);
printf("%d,%d,%dn",x,y,z);
}
选项:
A: 1,3,2
B: 1,2,3
C: 3,1,2
D: 2,3,4
答案: 【 1,3,2】
14、单选题:
以下叙述中正确的是( )
选项:
A: 局部变量说明为static存储类,其生存期将得到延长
B: 全局变量说明为static存储类,其作用域将被扩大
C: 任何存储类的变量在未赋初值时,其值都是不确定的
D: 形参可以使用的存储类说明符与局部变量完全相同
答案: 【 局部变量说明为static存储类,其生存期将得到延长】
15、单选题:
执行以下程序时,给变量x输入10,程序的输出结果是( )#include <stdio.h>
int fun(int n)
{
if(n==1)
return 1;
else
return(n+fun(n-1));
}
main()
{
int x;
scanf("%d",&x);
x=fun(x);
printf("%dn",x);
}
选项:
A: 55
B: 45
C: 25
D: 10
答案: 【 55】
第七章数组
第七章单元测验
1、单选题:
以下对一维数组m进行正确初始化的是( )。
选项:
A: int m[10]=(0,0,0,0) ;
B: int m[10]={ };
C: int m[ ]={0};
D: int m[10]={10*2};
答案: 【 int m[ ]={0};】
2、单选题:
在C语言中,引用数组元素时,其数组下标的数据类型允许是( )。
选项:
A: 整型常量
B: 整型表达式
C: 整型常量或整型表达式
D: 任何类型的表达式
答案: 【 整型常量或整型表达式】
3、单选题:
以下对一维整型数组a的正确说明是( )。
选项:
A: int a(10);
B: int n=10,a[n];
C: int n; scanf("%d",&n); int a[n];
D: #define SIZE 10 int a[SIZE];
答案: 【 #define SIZE 10 int a[SIZE];】
4、单选题:
以下关于数组的描述正确的是( )。
选项:
A: 数组的大小是固定的,但可以有不同的类型的数组元素
B: 数组的大小是可变的,但所有数组元素的类型必须相同
C: 数组的大小是固定的,所有数组元素的类型必须相同
D: 数组的大小是可变的,可以有不同的类型的数组元素
答案: 【 数组的大小是固定的,所有数组元素的类型必须相同】
5、单选题:
若有定义:int bb[ 8];。则以下表达式中不能代表数组元bb[1]的地址的是( )。
选项:
A: &bb[0]+1
B: &bb[1]
C: &bb[0]++
D: bb+1
答案: 【 &bb[0]++】
6、单选题:
假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是( )。
选项:
A: 3
B: 6
C: 10
D: 20
答案: 【 20】
7、单选题:
若有以下说明: int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c='a',d,g; 则数值为4的表达式是( )
选项:
A: a[g-c]
B: a[4]
C: a['d'-'c']
D: a['d'-c]
答案: 【 a['d'-c]】
8、单选题:
以下程序段给数组所有的元素输入数据,请选择正确答案填入( )。 #include<stdio.h>main(){ int a[10],i=0;while(i<10) scanf("%d",________ );┇┇┇}
选项:
A: a+(i++)
B: &a[i+1]
C: a+i
D: &a[++i]
答案: 【 a+(i++)】
9、单选题:
执行下面的程序段后,变量k中的值为( )。 int k=3, s[2]; s[0]=k; k=s[1]*10;
选项:
A: 不定值
B: 33
C: 30
D: 10
答案: 【 不定值】
10、单选题:
以下程序的输出结果是( ) main(){int i, a[10];for(i=9;i>=0;i--) a[i]=10-i;printf("%d%d%d",a[2],a[5],a[8]); }
选项:
A: 258
B: 741
C: 852
D: 369
答案: 【 852】
11、单选题:
以下程序运行后,输出结果是( )。 main(){ int n[5]={0,0,0},i,k=2;for(i=0;i<k;i++) n[i]=n[i]+1;printf("%dn",n[k]);}
选项:
A: 不确定的值
B: 2
C: 1
D: 0
答案: 【 0】
12、单选题:
以下程序运行后,输出结果是( )。 main() { int y=18,i=0,j,a[8]; do { a[i]=y%2; i++; y=y/2; } while(y>=1); for(j=i-1;j>=0;j--) printf("%d",a[j]); printf("n");}
选项:
A: 10000
B: 10010
C: 00110
D: 10100
答案: 【 10010】
13、单选题:
main(){int a[10], a1[ ]={1,3,6,9,10}, a2[ ]={2,4,7,8,15},i=0,j=0,k;for(k=0;k<4;k++)if(a1[i]<a2[j]) a[k]=a1[i++];else a[k]=a2[j++]; for(k=0;k<4;k++) printf("%d",a[k]); }
选项:
A: 1234
B: 1324
C: 2413
D: 4321
答案: 【 1234】
14、单选题:
以下程序运行后,输出结果是( )。 main(){ int i,k,a[10],p[3];k=5;for (i=0;i<10;i++) a[i]=i;for (i=0;i<3;i++) p[i]=a[i*(i+1)];for (i=0;i<3;i++) k+=p[i]*2;printf("%dn",k);}
选项:
A: 20
B: 21
C: 22
D: 23
答案: 【 21】
15、单选题:
以下程序运行后输出结果是( )。 main( ){ int n[3],i,j,k;for(i=0;i<3;i++) n[i]=0;k=2;for (i=0;i<k;i++)for (j=0;j<k;j++) n[j]=n[i]+1;printf("%dn",n[1]); }
选项:
A: 2
B: 1
C: 0
D: 3
答案: 【 3】
16、单选题:
下列程序的主要功能是输入10个整数存入数组a,再输入一个整数x,在数组a中查找x。找到则输出x在10个整数中的序号(从1开始);找不到则输出0。程序缺少的是 ( )。 main(){int i,a[10],x,flag=0;for(i=0;i<10;i++) scanf("%d",&a[i]);scanf("%d",&x);for(i=0;i<10;i++) if _______ {flag=i+1; break;}printf("%dn", flag);}
选项:
A: x!=a[i]
B: !(x-a[i])
C: x-a[i]
D: !x-a[i]
答案: 【 !(x-a[i])】
17、单选题:
若说明:int a[2][3]; 则对a数组元素的正确引用是( ) 。
选项:
A: a(1,2)
B: a[1,3]
C: a[1>2][!1]
D: a[2][0]
答案: 【 a[1>2][!1]】
18、单选题:
若有定义:int b[3][4]={0};则下述正确的是( ) 。
选项:
A: 此定义语句不正确
B: 没有元素可得初值0
C: 数组b中各元素均为0
D: 数组b中各元素可得初值但值不一定为0
答案: 【 数组b中各元素均为0】
19、单选题:
若有以下数组定义,其中不正确的是( ) 。
选项:
A: int a[2][3];
B: int b[][3]={0,1,2,3};
C: int c[100][100]={0};
D: int d[3][]={{1,2},{1,2,3},{1,2,3,4}};
答案: 【 int d[3][]={{1,2},{1,2,3},{1,2,3,4}};】
20、单选题:
若有以下的定义:int t[5][4];能正确引用t数组的表达式是( )。
选项:
A: t[2][4]
B: t[5][0]
C: t[0][0]
D: t[0,0]
答案: 【 t[0][0]】
21、单选题:
在定义int m[ ][3]={1,2,3,4,5,6};后,m[1][0]的值是( )。
选项:
A: 4
B: 1
C: 2
D: 5
答案: 【 4】
22、单选题:
在定义int n[5][6]后第10个元素是( )。
选项:
A: n[2][5]
B: n[2][4]
C: n[1][3]
D: n[1][4]
答案: 【 n[1][3]】
23、单选题:
下述对C语言字符数组的描述中错误的是( )。
选项:
A: 字符数组可以存放字符串
B: 字符数组中的字符串可以整体输入、输出
C: 可以在赋值语句中通过赋值运算符"="对字符数组整体赋值
D: 不可以用关系运算符对字符数组中的字符串进行比较
答案: 【 可以在赋值语句中通过赋值运算符"="对字符数组整体赋值】
24、单选题:
下述对C语言字符数组的描述中正确的是 ( )。
选项:
A: 任何一维数组的名称都是该数组存储单元的开始地址,且其每个元素按照顺序连续占存储空间
B: 一维数组的元素在引用时其下标大小没有限制
C: 任何一个一维数组的元素,可以根据内存的情况按照其先后顺序以连续或非连续的方式占用存储空间
D: 一维数组的第一个元素是其下标为1的元素
答案: 【 任何一维数组的名称都是该数组存储单元的开始地址,且其每个元素按照顺序连续占存储空间】
25、单选题:
不能把字符串:Hello!赋给数组b的语句是( )。
选项:
A: char str[10]= {'H', 'e', 'l', 'l', 'o', '! '};
B: char str[10];str="Hello!";
C: char str[10];strcpy(str,"Hello!");
D: char str[10]="Hello!";
答案: 【 char str[10];str="Hello!";】
26、单选题:
合法的数组定义是( )。
选项:
A: int a[]="string";
B: int a[5]={0,1,2,3,4,5};
C: int s="string";
D: char a[]={0,1,2,3,4,5};
答案: 【 char a[]={0,1,2,3,4,5};】
第八章指针
第八章指针
1、单选题:
设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是______。
选项:
A: *p = *q;
B: p = q;
C: *p = &n1;
D: p = *q;
答案: 【 *p = *q; 】
2、单选题:
若有定义:int x = 0,*p = &x; 则语句printf("%dn",*p);的输出结果是______。
选项:
A: 随机值
B: 0
C: x的地址
D: p 的地址
答案: 【 0 】
3、单选题:
以下定义语句中正确的是______。
选项:
A: char *a = 'A',b='B';
B: float a=b=10.0;
C: int a=10,*b=&a;
D: float *a,b=&a;
答案: 【 int a=10,*b=&a; 】
4、单选题:
有以下程序 main(){ int a = 7,b = 8,*p,*q,*r; p = &a; q = &b; r = p; p = q; q = r; printf("%d,%d,%d,%dn",*p,*q,a,b);}程序运行后的输出结果是______。
选项:
A: 8,7,8,7
B: 7,8,7,8
C: 8,7,7,8
D: 7,8,8,7
答案: 【 8,7,7,8 】
5、单选题:
设有定义:int a,*pa = &a;以下scanf语句中能正确为变量a读入数据的是______。
选项:
A: scanf(“%d”,pa) ;
B: scanf(“%d”,a) ;
C: scanf(“%d”,&pa) ;
D: scanf(“%d”,*pa) ;
答案: 【 scanf(“%d”,pa) ; 】
6、单选题:
若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是______。
选项:
A: pb = &x;
B: pb = x;
C: *pb = &x;
D: *pb = *x;
答案: 【 pb = &x; 】
7、单选题:
若在定义语句:int a,b,c,*p = &c;之后,接着执行以下选项中的语句,则能正确执行的语句是______。
选项:
A: scanf("%d",a,b,c);
B: scanf("%d%d%d",a,b,c);
C: scanf("%d",p);
D: scanf("%d",&p);
答案: 【 scanf("%d",p); 】
8、单选题:
设有定义:int a,*pa = &a; 以下scanf语句中能正确为变量a读入数据的是______。
选项:
A: scanf("%d",pa);
B: scanf("%d",a);
C: scanf("%d",&pa);
D: scanf("%d",*pa);
答案: 【 scanf("%d",pa); 】
9、单选题:
设有定义:double x[10],*p = x;,以下能给数组x下标为6的元素读入数据的正确语句是______。
选项:
A: scanf("%f",&x[6]);
B: scanf("%lf",*(x+6));
C: scanf("%lf",p+6);
D: scanf("%lf",p[6]);
答案: 【 scanf("%lf",p+6); 】
10、单选题:
若有说明语句:int a,b,c,*d = &c;则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是______。
选项:
A: scanf("%d%d%d",&a,&b,d);
B: scanf("%d%d%d",&a,&b,&d);
C: scanf("%d%d%d",a,b,d);
D: scanf("%d%d%d",a,b,*d);
答案: 【 scanf("%d%d%d",&a,&b,d); 】
11、单选题:
若有说明:long *p,a; 则不能通过scanf语句正确给输入项读入数据的程序段是______。
选项:
A: *p = &a; scanf("%ld",p);
B: p = (long *)malloc(8); scanf("%ld",p);
C: scanf("%ld",p = &a);
D: scanf("%ld",&a);
答案: 【 *p = &a; scanf("%ld",p); 】
12、单选题:
有以下程序(注:字符a的ASCII码值为97)#include <stdio.h>main( ){ char *s = {"abc"}; do { printf("%d", *s % 10 ); ++s; } while(*s); }程序运行后的输出结果是______。
选项:
A: abc
B: 789
C: 7890
D: 979899
答案: 【 789 】
13、单选题:
设有如下定义语句int m[ ] = {2,4,6,8,10}, *k = m;以下选项中,表达式的值为6的是______。
选项:
A: *(k+2)
B: k+2
C: *k+2
D: *k+ = 2
答案: 【 *(k+2) 】
14、单选题:
设有定义:char p[] = {'1','2','3'},*q = p;,以下不能计算出一个char型数据所占字节数的表达式是______。
选项:
A: sizeof(p)
B: sizeof(char)
C: sizeof(*q)
D: sizeof(p[0])
答案: 【 sizeof(p) 】
15、单选题:
若有以下定义int x[10],*pt = x;则对x数组元素的正确引用是______。
选项:
A: *&x[10]
B: *(x+3)
C: *(pt+10)
D: pt+3
答案: 【 *(x+3)】
16、单选题:
以下程序的输出结果是______。 main(){ char a[10] = {'1','2','3','4','5','6','7','8','9',0}, *p; int i ; i = 8; p = a+i; printf("%sn",p-3);}
选项:
A: 6
B: 6789
C: '6'
D: 789
答案: 【 6789 】
17、单选题:
若已定义:int a[9],*p = a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是______。
选项:
A: p+1
B: a+1
C: a++
D: ++p
答案: 【 a++】
18、单选题:
下列程序的输出结果是______。 main( ) { char a[10] = {9,8,7,6,5,4,3,2,1,0}, *p = a+5; printf("%d", *--p); }
选项:
A: 非法
B: a[4]的地址
C: 5
D: 3
答案: 【 5 】
19、单选题:
有以下程序main( ){ int a[ ] = {1,2,3,4}, y, *p = &a[3]; --p; y = *p; printf("y = %dn",y);}程序的运行结果是______。
选项:
A: y = 0
B: y = 1
C: y = 2
D: y = 3
答案: 【 y = 3 】
20、单选题:
有以下程序main() { int a[3][3], *p, i; p = &a[0][0]; for(i = 0;i < 9;i++) p[i] = i; for(i = 0;i<3;i++) printf("%d",a[1][i]); }程序运行后的输出结果是______。
选项:
A: 012
B: 123
C: 234
D: 345
答案: 【 345】
21、单选题:
有以下程序main( ) { int a[ ] = {1,2,3,4,5,6,7,8,9,0},*p; for(p = a; p< a + 10; p++) printf("%d,",*p);}程序运行后的输出结果是______。
选项:
A: 1,2,3,4,5,6,7,8,9,0,
B: 2,3,4,5,6,7,8,9,10,1,
C: 0,1,2,3,4,5,6,7,8,9,
D: 1,1,1,1,1,1,1,1,1,1,
答案: 【 1,2,3,4,5,6,7,8,9,0, 】
22、单选题:
有如下说明:int a[10] = {1,2,3,4,5,6,7,8,9,10},*p = a; 则数值为9的表达式是______。
选项:
A: *p+9
B: *(p+8)
C: *p += 9
D: p + 8
答案: 【 *(p+8) 】
23、单选题:
有以下程序main( ) { int a[ ] = {2,4,6,8,10},y = 0,x,*p;p = &a[1];for(x = 1;x < 3; x++) y += p[x];printf("%dn",y);}程序运行后的输出结果是______。
选项:
A: 10
B: 11
C: 14
D: 15
答案: 【 14】
24、单选题:
有以下程序main() { int a[] = {10,20,30,40},*p = a, i; for(i = 0;i <= 3;i++) { a[i] = *p; p++; } printf("%dn",a[2]);}程序运行后的输出结果是______。
选项:
A: 30
B: 40
C: 10
D: 20
答案: 【 30】
25、单选题:
有以下程序#include <stdio.h>main(){ int a[] = {1,2,3,4,5,6,7,8,9,10,11,12,},*p = a+5,*q = NULL; *q = *(p+5); printf("%d %dn",*p,*q);}程序运行后的输出结果是______。
选项:
A: 运行后报错
B: 6 6
C: 6 11
D: 5 10
答案: 【 运行后报错 】
26、单选题:
若有函数void fun(double a[ ], int *n){ ...... }以下叙述中正确的是______。
选项:
A: 调用fun函数时只有数组执行按值传送,其他实参和形参之间执行按地址传送
B: 形参a和n都是指针变量
C: 形参a是一个数组名,n是指针变量
D: 调用fun函数时将把double型实参数组元素一一对应地传送给形参a数组
答案: 【 形参a是一个数组名,n是指针变量 】
27、单选题:
请选出以下程序的输出结果______。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("%d,%d,%dn",a,b,c); }
选项:
A: 5,2,3
B: -5,-12,-7
C: -5,-12,-17
D: 5,-2,-7
答案: 【 -5,-12,-7 】
28、单选题:
有以下程序void fun(char *c, int d){ *c = *c+1; d = d+1; printf("%c,%c,",*c,d );}main(){ char b = 'a', a = 'A'; fun(&b,a); printf("%c,%cn",b,a);}程序运行后的输出结果是______。
选项:
A: b,B,b,A
B: b,B,B,A
C: a,B,B,a
D: a,B,a,B
答案: 【 b,B,b,A 】
29、单选题:
有以下程序main(){ int a[3][3],*p,i; p = &a[0][0]; for(i = 0; i<9; i++) p[i] = i+1; printf("%dn",a[1][2]);}程序运行后的输出结果是______。
选项:
A: 3
B: 6
C: 9
D: 2
答案: 【 6 】
30、单选题:
下面程序的输出是______。 void prtv(int *x) { printf("%dn", ++*x ); } main( ) { int a = 25; prtv(&a); }
选项:
A: 25
B: 23
C: 24
D: 26
答案: 【 26】
31、单选题:
下列程序段的输出结果是______。 void fun(int *x,int *y) { printf("%d %d",*x,*y); *x = 3; *y = 4; } main( ) { int x = 1,y = 2; fun(&y,&x); printf(" %d %d",x,y); }
选项:
A: 2 1 4 3
B: 1 2 1 2
C: 1 2 3 4
D: 2 1 1 2
答案: 【 2 1 4 3 】
32、单选题:
有以下程序void swap1(int c0[],int c1[]){ int t; t = c0[0]; c0[0] = c1[0]; c1[0] = t;}void swap2(int *c0,int *c1){ int t; t = *c0; *c0 = *c1; *c1 = t;}main(){ int a[2] = {3,5}, b[2] = {3,5}; swap1(a,a+1); swap2(&b[0], &b[1]); printf("%d %d %d %dn",a[0],a[1],b[0],b[1]);}程序运行后的输出结果是______。
选项:
A: 3 5 5 3
B: 5 3 3 5
C: 3 5 3 5
D: 5 3 5 3
答案: 【 5 3 5 3】
33、单选题:
已定义以下函数:fun(int *p){ return *p; }该函数的返回值是______。
选项:
A: 不确定的值
B: 形参p中存放的值
C: 形参p所指存储单元中的值
D: 形参p的地址值
答案: 【 形参p所指存储单元中的值 】
34、单选题:
有以下程序: void sum(int *a){ a[0] = a[1];}main(){ int aa[10] = {1,2,3,4,5,6,7,8,9,10},i; for(i = 2;i> = 0;i--) sum(&aa[i]); printf("%dn",aa[0]);}执行后的输出结果是______。
选项:
A: 4
B: 3
C: 2
D: 1
答案: 【 4】
35、单选题:
有以下程序void f(int *q){ int i = 0; for( ;i<5;i++) (*q)++;}main( ){ int a[5] = {1,2,3,4,5},i; f(a); for(i = 0;i<5;i++) printf("%d,",a[i]);}程序运行后的输出结果是______。
选项:
A: 2,2,3,4,5,
B: 6,2,3,4,5,
C: 1,2,3,4,5,
D: 2,3,4,5,6,
答案: 【 6,2,3,4,5, 】
36、单选题:
有以下程序void f(int *p,int *q);main(){ int m = 1,n = 2,*r = &m; f(r, &n); printf("%d,%d",m,n);}void f(int *p,int *q){ p = p+1;*q = *q+1;}程序运行后的输出结果是______。
选项:
A: 1,2
B: 1,3
C: 2,3
D: 1,4
答案: 【 1,3 】
第九章结构体
第九章单元测试
1、单选题:
#include<stdio.h>
typedef struct sample
{
int a;
char m1;
int b;
}SAMPLE;
int main(void)
{
SAMPLE s1={10,'a',21};
SAMPLE s2={42,'c',78};
s1.a=s2.a++;
printf("s1.a=%dn",s1.a);
printf("s2.a=%dn",s2.a);
return 0;
}上面代码运行后,结果是________。
选项:
A: s1.a=42s2.a=43
B: s1.a=43s2.a=43
C: s1.a=43s2.a=42
D: s1.a=42s2.a=42
答案: 【 s1.a=42s2.a=43】
2、单选题:
结构体变量成员的引用方式是使用________运算符。
选项:
A: 结构体变量.成员
B: 结构体变量[成员]
C: 结构体变量->成员
D: 结构体变量(成员)
答案: 【 结构体变量.成员】
3、单选题:
#include <stdio.h>
int main(void)
{
struct
{
int a;
int b;
}x,y;
x.a=10;
x.b=5;
y=x;
printf("%dn",y.a);
return 0;
}上面程序的输出结果是________。
选项:
A: 5
B: 10
C: 随机值
D: 程序编译错误
答案: 【 10】
4、单选题:
#include <stdio.h>
typedef struct num
{
int num1;
int num2;
int num3;
};
int main()
{
struct num n[2]={{1,2,3},{4,5,6}};
int t;
t=n[0].num1+n[1].num2;
printf("%dn",t);
return 0;
}上面程序的输出结果是________。
选项:
A: 5
B: 7
C: 6
D: 8
答案: 【 6】
5、单选题:
有如下定义:#include <stdio.h>
int main()
{
struct person
{
char name[9];
int age;
};
struct person a[4]={"Johu",17,"Paul",19,"Mary",18,"Adam",16};
return 0;
}根据以上定义,能输出字母M的语句是________。
选项:
A: printf("%cn",a[2].name[1]);
B: printf("%cn",a[2].name[0]);
C: printf("%cn",a[3].name);
D: printf("%cn",a[3].name[1]);
答案: 【 printf("%cn",a[2].name[0]);】
6、单选题:
有如下定义,则以下各输入语句中错误的是_______。struct student
{
char name[10];
int age;
char gender;
}std[3], *p=std;
选项:
A: scanf("%d" ,&(*p) .age );
B: scanf("%c" ,&std[0] .gender);
C: scanf("%c" ,&(p->gender));
D: scanf("%s" ,&std.name);
答案: 【 scanf("%s" ,&std.name);】
7、单选题:
下面叙述错误的是_________。
选项:
A: 可以用typedef将已存在的类型用一个新的名字来代表。
B: 可以通过typedef增加新的类型。
C: 用typedef定义新的类型名后,原有类型名仍然有效。
D: 用typedef可以为各种类型起别名,但不能为变量起别名。
答案: 【 可以通过typedef增加新的类型。】
8、单选题:
定义下列结构体数组: struct St
{
char name[15];
int age;
}a[10]={"ZHAO",14,"WANG",15,"LIU",16,"ZHANG",17}; 执行语句printf("%d,%c",a[2].age,*(a[3].name+2));的输出结果为_________。
选项:
A: 15,A
B: 16,H
C: 16,A
D: 17,H
答案: 【 16,A】
9、单选题:
已知有结构体: struct sk
{
int a;
float b;
}data,*p; 若有p=&data,则对data的成员a的正确引用是_______。
选项:
A: (*p).data
B: (*p).a
C: p->data
D: data
答案: 【 (*p).a】
10、单选题:
对于结构体中定义的成员,其默认的访问权限为_______。
选项:
A: protected
B: public
C: static
D: private
答案: 【 public】
11、判断题:
在声明结构体变量时,关键字struct 可以省略。
选项:
A: 正确
B: 错误
答案: 【 错误】
12、判断题:
在声明了一个结构体类型后,结构体名可以像系统已定义的标准数据类型名一样被使用,比如可以使用它来定义结构体变量和结构体数组。
选项:
A: 正确
B: 错误
答案: 【 正确】
13、判断题:
在声明结构体类型时可以省略结构体变量名。
选项:
A: 正确
B: 错误
答案: 【 正确】
14、判断题:
结构体变量的引用可以使用点引用法,即“结构体名.成员名”的形式。
选项:
A: 正确
B: 错误
答案: 【 正确】
15、判断题:
结构体成员可以是另一个结构体变量。
选项:
A: 正确
B: 错误
答案: 【 正确】
16、判断题:
两个结构体变量定义如下:struct student
{
int num;
char id[15];
char name[15];
int score[4];
}stu1,stu2;其中,stu1中的成员num和stu2中的成员num是存放在相同的内存单元中的。
选项:
A: 正确
B: 错误
答案: 【 错误】
17、判断题:
结构体成员的名字不能和结构体外的其他变量名相同。
选项:
A: 正确
B: 错误
答案: 【 错误】
18、判断题:
结构体变量或结构体数组是一组数据,它们在内存中占据一片连续的存储区。
选项:
A: 正确
B: 错误
答案: 【 正确】
19、判断题:
对结构体中的成员不能单独使用。
选项:
A: 正确
B: 错误
答案: 【 错误】
20、判断题:
一个结构体指针变量的值就是结构体变量的起始地址。
选项:
A: 正确
B: 错误
答案: 【 正确】
第1周——初识C语言从认识变量和常量开始
codeblocks介绍——从HelloWorld开始
1、单选题:
#include <stdio.h>是
选项:
A: 编译预处理指令
B: 语句
C: 函数
D: 程序入口
答案: 【 编译预处理指令】
debug
1、单选题:
codeblocks中运行到下一步(next line)的快捷键是
选项:
A: F7
B: F5
C: F8
D: F11
答案: 【 F7】
变量在内存中所占的字节数
1、单选题:
C语言用sizeof计算变量在内存中的字节数,其中sizeof是()
选项:
A: 函数
B: 运算符
C: 标识符
D: 语句
答案: 【 运算符】
宏常量与const常量
1、单选题:
宏定义是()
选项:
A: 一条语句
B: 一种编译预处理指令
C: 一个标识符
D: 一个变量
答案: 【 一种编译预处理指令】
2、判断题:
const常量有数据类型。
选项:
A: 正确
B: 错误
答案: 【 正确】
第1周测验
1、单选题:
下列选项中,合法的C语言标识符是
选项:
A: _a1
B: width.x
C: #abc123
D: 123abc
E: o*k
F: a?
G: a+b
H: %a
I: b!
答案: 【 _a1】
2、单选题:
以下不适合定义为用户标识符的是
选项:
A: int
B: a2
C: def2
D: _3com_
E: PI
F: Source
G: abc
答案: 【 int 】
3、单选题:
#include <stdio.h>是
选项:
A: 编译预处理指令
B: 语句
C: 函数
D: 什么都不是
E: 有语法错误
答案: 【 编译预处理指令】
4、单选题:
在windows下,程序编译链接后形成的可执行文件是
选项:
A: .obj文件
B: .exe文件
C: .o文件
D: .c文件
E: .h文件
答案: 【 .exe文件】
5、单选题:
程序编译链接后显示" 0 error,0 warning" 代表
选项:
A: 程序中没有语法错误
B: 程序是正确的
C: 程序是不正确的
D: 程序中可能存在语法错误
E: 程序中有语义错误
答案: 【 程序中没有语法错误】
6、单选题:
用8位无符号二进制数能表示的最大十进制数为
选项:
A: 255
B: 127
C: 128
D: 256
答案: 【 255】
7、单选题:
关于可执行文件说法正确的是
选项:
A: 可执行文件是编译链接后生成的文件
B: 可执行文件就是源代码文件
C: 可执行文件后缀为.obj
D: 可执行文件就是main.c文件
答案: 【 可执行文件是编译链接后生成的文件】
8、单选题:
若变量a是int类型,并执行了语句:a='A'+1.6;,则正确的叙述是
选项:
A: 'A'+1.6的结果是浮点型
B: a的值还是整型
C: a的值是字符C
D: a的值是浮点型
E: 不允许字符型和浮点型相加
答案: 【 'A'+1.6的结果是浮点型;
a的值还是整型】
9、单选题:
C语言用sizeof计算变量在内存中的字节数,其中sizeof是()
选项:
A: 运算符
B: 一元运算符
C: 只需要一个操作数的运算符
D: 函数
E: 语句
F: 标识符
G: 变量
答案: 【 运算符;
一元运算符;
只需要一个操作数的运算符】
10、单选题:
以下不属于Codeblocks中用于调试程序的工具是
选项:
A: run
B: build
C: run to cursor
D: next line
E: stop debugger
F: watches
答案: 【 run;
build】
11、单选题:
程序的开发步骤中不包括
选项:
A: 撰写文档
B: 运行程序
C: 编译链接
D: 程序测试
E: 编辑(编写代码)
答案: 【 撰写文档】
12、单选题:
下列说法中错误的是()
选项:
A: 尾数决定了实数的表数范围,阶码决定了实数的表数精度。
B: 内存是按位编址的。
C: 有符号和无符号整数的表数范围是相同的。
D: int型在所有的计算机上都占4个字节的存储单元。
E: 编译器按变量定义的类型对不同类型的变量分配不同大小的内存空间。
F: 内存是按字节编址的。
G: 对于同样的尾数,阶码的值越大,则浮点数所表示的数值的绝对值就越大。
H: sizeof是编译时执行的运算符,不会导致额外的运行时间开销。
答案: 【 尾数决定了实数的表数范围,阶码决定了实数的表数精度。;
内存是按位编址的。;
有符号和无符号整数的表数范围是相同的。;
int型在所有的计算机上都占4个字节的存储单元。】
13、单选题:
若有定义:int a=8,b=5,c; ,执行语句c=a/b+0.4;后,c的值为
选项:
A: 1
B: 1.4
C: 2.0
D: 2
答案: 【 1】
14、单选题:
在C语言中,字符型数据在内存中以字符的( )形式存放
选项:
A: ASCII码
B: 国标码
C: BCD码
D: 反码
答案: 【 ASCII码】
15、单选题:
以下符合C语言语法的实型常量是
选项:
A: 5e-3
B: 3.14.159e
C: 1.2e0.5
D: e15
答案: 【 5e-3】
16、单选题:
以下选项中可作为C语言合法整数的是
选项:
A: 0xffa
B: 10110B
C: 038x
D: x2a2
答案: 【 0xffa】
17、单选题:
下列说法正确的是
选项:
A: 在C语言中,变量必须先定义后使用。
B: 一条变量定义语句可定义多个同类型的变量。
C: C89规定所有变量必须在第一条可执行语句前定义。
D: const常量只能在定义时赋值。
E: 实型常量的默认类型是double类型。
F: 一条变量定义语句不可以同时定义多个变量。
G: 不同类型的变量分配的存储空间大小都是相同的。
H: 在C语言中,所有变量都必须在定义时进行初始化。
I: 变量在没有初始化的时候,其值都是0
J: 宏常量有数据类型,编译器在宏替换时可以进行类型检查。
答案: 【 在C语言中,变量必须先定义后使用。;
一条变量定义语句可定义多个同类型的变量。;
C89规定所有变量必须在第一条可执行语句前定义。;
const常量只能在定义时赋值。;
实型常量的默认类型是double类型。】
18、单选题:
下列变量定义中合法的是
选项:
A: long ao=0xfdaL;
B: short _a=1-.1e-1;
C: double b=1+5e2.5;
D: float 2_and=1-e-3;
答案: 【 long ao=0xfdaL;】
练兵区——单选题——不计入总分
1、单选题:
下列选项中,合法的C语言标识符是
选项:
A: _a1
B: width
C: #abc123
D: 123abc
E: o*k
F: a?
G: a+b
H: %a
I: b!
答案: 【 _a1;
width】
2、单选题:
以下不适合定义为用户标识符的是
选项:
A: float
B: main
C: define
D: _3com_
E: PI
F: Source
G: abc
答案: 【 float ;
main;
define】
3、单选题:
#include <stdio.h>是
选项:
A: 编译预处理指令
B: 语句
C: 函数
D: 什么都不是
E: 有语法错误
答案: 【 编译预处理指令】
4、单选题:
在windows下,程序编译链接后形成的可执行文件是
选项:
A: .obj文件
B: .exe文件
C: .o文件
D: .c文件
E: .h文件
答案: 【 .exe文件】
5、单选题:
程序编译链接后显示" 0 error,0 warning" 代表
选项:
A: 程序中没有语法错误
B: 程序是正确的
C: 程序是不正确的
D: 程序中可能存在语法错误
E: 程序中有语义错误
答案: 【 程序中没有语法错误】
6、单选题:
用8位无符号二进制数能表示的最大十进制数为
选项:
A: 255
B: 127
C: 128
D: 256
答案: 【 255】
7、单选题:
关于可执行文件说法正确的是
选项:
A: 可执行文件是编译链接后生成的文件
B: 可执行文件就是源代码文件
C: 可执行文件后缀为.obj
D: 可执行文件就是main.c文件
答案: 【 可执行文件是编译链接后生成的文件】
8、单选题:
若变量a是int类型,并执行了语句:a='A'+1.6;,则正确的叙述是
选项:
A: 'A'+1.6的结果是浮点型
B: a的值还是整型
C: a的值是字符C
D: a的值是浮点型
E: 不允许字符型和浮点型相加
答案: 【 'A'+1.6的结果是浮点型;
a的值还是整型】
9、单选题:
C语言用sizeof计算变量在内存中的字节数,其中sizeof是()
选项:
A: 运算符
B: 一元运算符
C: 只需要一个操作数的运算符
D: 函数
E: 语句
F: 标识符
G: 变量
答案: 【 运算符;
一元运算符;
只需要一个操作数的运算符】
10、单选题:
以下不属于Codeblocks中用于调试程序的工具是
选项:
A: run
B: build
C: run to cursor
D: next line
E: stop debugger
F: watches
答案: 【 run;
build】
11、单选题:
程序的开发步骤中不包括
选项:
A: 撰写文档
B: 运行程序
C: 编译链接
D: 程序测试
E: 编辑(编写代码)
答案: 【 撰写文档】
12、单选题:
下列说法中错误的是()
选项:
A: 尾数决定了实数的表数范围,阶码决定了实数的表数精度。
B: 内存是按位编址的。
C: 有符号和无符号整数的表数范围是相同的。
D: int型在所有的计算机上都占4个字节的存储单元。
E: 编译器按变量定义的类型对不同类型的变量分配不同大小的内存空间。
F: 内存是按字节编址的。
G: 对于同样的尾数,阶码的值越大,则浮点数所表示的数值的绝对值就越大。
H: sizeof是编译时执行的运算符,不会导致额外的运行时间开销。
答案: 【 尾数决定了实数的表数范围,阶码决定了实数的表数精度。;
内存是按位编址的。;
有符号和无符号整数的表数范围是相同的。;
int型在所有的计算机上都占4个字节的存储单元。】
13、单选题:
若有定义:int a=8,b=5,c; ,执行语句c=a/b+0.4;后,c的值为
选项:
A: 1
B: 1.4
C: 2.0
D: 2
答案: 【 1】
14、单选题:
在C语言中,字符型数据在内存中以字符的( )形式存放
选项:
A: ASCII码
B: 国标码
C: BCD码
D: 反码
答案: 【 ASCII码】
15、单选题:
以下符合C语言语法的实型常量是
选项:
A: 5e-3
B: 3.14.159e
C: 1.2e0.5
D: e15
答案: 【 5e-3】
16、单选题:
以下选项中可作为C语言合法整数的是
选项:
A: 0xffa
B: 10110B
C: 038x
D: x2a2
答案: 【 0xffa】
17、单选题:
下列说法正确的是
选项:
A: 在C语言中,变量必须先定义后使用。
B: 一条变量定义语句可定义多个同类型的变量。
C: C89规定所有变量必须在第一条可执行语句前定义。
D: const常量只能在定义时赋值。
E: 实型常量的默认类型是double类型。
F: 一条变量定义语句不可以同时定义多个变量。
G: 不同类型的变量分配的存储空间大小都是相同的。
H: 在C语言中,所有变量都必须在定义时进行初始化。
I: 变量在没有初始化的时候,其值都是0
J: 宏常量有数据类型,编译器在宏替换时可以进行类型检查。
答案: 【 在C语言中,变量必须先定义后使用。;
一条变量定义语句可定义多个同类型的变量。;
C89规定所有变量必须在第一条可执行语句前定义。;
const常量只能在定义时赋值。;
实型常量的默认类型是double类型。】
18、单选题:
下列变量定义中合法的是
选项:
A: long ao=0xfdaL;
B: short _a=1-.1e-1;
C: double b=1+5e2.5;
D: float 2_and=1-e-3;
答案: 【 long ao=0xfdaL;】
第2周——数字间的那些事儿做点计算哈
不同类型数据的运算
1、判断题:
通常情况下,不同类型数据的运算结果的类型是取值范围较大的那种类型。
选项:
A: 正确
B: 错误
答案: 【 正确】
在定义变量的时候对变量进行初始化
1、单选题:
下列语句中错误的是()。
选项:
A: int a, b, c;a=b=c=0;
B: int a, b, c;a=0;b=0;c=0;
C: int a=0;int b=0;int c=0;
D: int a=b=c=0;
答案: 【 int a=b=c=0;】
强制类型转换
1、判断题:
强制类型转换运算符就是强制改变一个变量原有的数据类型。
选项:
A: 正确
B: 错误
答案: 【 错误】
第2周测验
1、单选题:
下列程序的输出结果是#include <stdio.h>
int main()
{
int a=7,b=5;
printf("%dn",b/a);
return 0;
}
选项:
A: 0
B: 5
C: 1
D: 0.7
答案: 【 0】
2、单选题:
下列关于单目运算符++、--的叙述中正确的是
选项:
A: a++的运算过程是:先使用变量a的值,然后再执行a=a+1。
B: ++a的运算过程是:先使用变量a的值,然后再执行a=a+1。
C: a++的运算过程是:先执行a=a+1,然后再使用变量a的值。
D: a++和++a都是最终使变量a执行a=a+1,因此对于包含a++或++a的表达式而言(如j=a++;或者j=++a;),两种情况下表达式的最终运算结果一定是相同的。
答案: 【 a++的运算过程是:先使用变量a的值,然后再执行a=a+1。】
3、单选题:
以下程序的输出结果是:#include <stdio.h>
int main()
{
int a=1, b=2;
a=a+b;
b=a-b;
a=a-b;
printf("%d,%dn", a, b );
return 0;
}
选项:
A: 2,1
B: 3,1
C: 3,2
D: 1,2
答案: 【 2,1】
4、单选题:
程序运行后的输出结果是#include <stdio.h>
int main()
{
int m=3,n=4,x;
x=m++;
++n;
x=x+8/n;
printf("%d,%dn",x,m);
return 0;
}
选项:
A: 4,4
B: 4,3
C: 5,4
D: 5,3
答案: 【 4,4】
5、单选题:
下面程序的运行结果是#include <stdio.h>
int main()
{
int a = 2, b = 3 ;
float x = 3.5, y = 2.5 ;
printf("%f", (float)(a+b) / 2 + (int)x % (int)y) ;
return 0;
}
选项:
A: 3.500000
B: 3.000000
C: 3.5
D: 3
答案: 【 3.500000】
6、单选题:
以下非法的赋值语句是
选项:
A: ++(i+1);
B: x=(j--);
C: n=++i;
D: j++;
答案: 【 ++(i+1);】
7、单选题:
设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是
选项:
A: 6.000000
B: 6.500000
C: 6
D: 5.500000
答案: 【 6.000000】
8、单选题:
以下程序的运行结果是#include <stdio.h>
int main()
{
int a = 12, b = 3;
float x = 18.5, y = 4.5;
printf("%fn", (float)(a * b) / 2);
printf("%dn", (int)x %(int)y);
return 0;
}
选项:
A: 18.0000002
B: 182
C: 182.000000
D: 18.0000002.000000
答案: 【 18.0000002】
9、单选题:
设有语句“int a = 3;”,执行语句“a += a -= a * a;”后,变量a的值是
选项:
A: -12
B: 3
C: 0
D: 9
答案: 【 -12】
10、单选题:
在C语言中,要求操作数必须是整型的运算符是
选项:
A: %
B: /
C: *
D: +
E: -
答案: 【 %】
11、单选题:
程序运行后的输出结果是#include <stdio.h>
int main()
{
char a='a';
printf("%c,",++a);
printf("%cn",a++);
return 0;
}
选项:
A: b,b
B: b,c
C: a,b
D: a,c
答案: 【 b,b】
12、单选题:
下面哪条语句可以生成0-9之间的随机数
选项:
A: magic=rand()%10;
B: magic=rand()%10+1;
C: magic=rand()/10;
D: magic=rand()/10+1;
答案: 【 magic=rand()%10;】
13、单选题:
在下面的C语言语句中,存在错误的是
选项:
A: int a=b=10;
B: int a=10,b=10;
C: int a,b;a=b=10;
D: int a,b;a=10;b=10;
答案: 【 int a=b=10;】
14、单选题:
若以下选项中的变量已正确定义,则正确的赋值语句是
选项:
A: x3=x2=x1=0;
B: x1=26.8%3;
C: 1+2=x2;
D: x4=1+2=3;
答案: 【 x3=x2=x1=0; 】
15、单选题:
若有以下定义,则表达式“a * b + d – c”的值的类型为#include <stdio.h>
int main()
{
char a;
int b;
float c;
double d;
....
return 0;
}
选项:
A: double
B: int
C: float
D: char
答案: 【 double】
16、单选题:
在C程序中如果要使用数学函数,如sin(x),log(x)等,需要在程序中加入的语句是
选项:
A: #include <math.h>
B: #include <stdio.h>
C: #define <math.h>
D: #define <stdio.h>
答案: 【 #include <math.h>】
17、单选题:
十进制3位数整数x,下面哪条语句能正确分离出它的十位上的数字d?
选项:
A: d=(x-(x/100)*100)/10;
B: d=(x%100)/10;
C: d=(x/10)%10;
D: d=x%10;
E: d=(x-x%10)/10;
F: d=x%100;
答案: 【 d=(x-(x/100)*100)/10;;
d=(x%100)/10;;
d=(x/10)%10;】
18、单选题:
在C语言中对下面的语句而言,哪个说法是错误的?int a, b;
选项:
A: 变量a和b中的值都是0
B: 变量a和b中都没有数值
C: 变量a和b中的值都是未知的随机数
D: a和b都是整型变量
E: 变量a和b占用的内存空间的大小是相同的
答案: 【 变量a和b中的值都是0;
变量a和b中都没有数值】
19、单选题:
已知int a,b;并且有a=5%3;以及b=5/3;,则a和b的值分别是( )。
选项:
A: 2和1
B: 0和1.67
C: 3和1
D: 5和1
E: 0和1
F: 3和1.67
G: 5和1.67
答案: 【 2和1】
20、单选题:
设有以下定义,则下面给出的语句中错误的是int a=0;
float b=1.25;
char c='A';
#define d 2
选项:
A: d++;
B: (a+b)++;
C: (-a)++;
D: (a+1)++;
E: a++;
F: b++;
G: c++;
答案: 【 d++;;
(a+b)++;;
(-a)++;;
(a+1)++;】
练兵区——单选题——不计入总分
1、单选题:
设有语句“int a = 3;”,执行语句“a += a -= a * a;”后,变量a的值是
选项:
A: -12
B: 3
C: 0
D: 9
答案: 【 -12】
2、单选题:
在C程序中如果要使用数学函数,如sin(x),log(x)等,需要在程序中加入的语句是
选项:
A: #include <math.h>
B: #include <stdio.h>
C: #define <math.h>
D: #define <stdio.h>
答案: 【 #include <math.h>】
3、单选题:
设有以下定义,则下面给出的语句中错误的是int a=0;
float b=1.25;
char c='A';
#define d 2
选项:
A: d++;
B: (a+b)++;
C: (-a)++;
D: (a+1)++;
E: a++;
F: b++;
G: c++;
答案: 【 d++;;
(a+b)++;;
(-a)++;;
(a+1)++;】
4、单选题:
下列关于单目运算符++、--的叙述中正确的是
选项:
A: a++的运算过程是:先使用变量a的值,然后再执行a=a+1。
B: ++a的运算过程是:先使用变量a的值,然后再执行a=a+1。
C: a++的运算过程是:先执行a=a+1,然后再使用变量a的值。
D: a++和++a都是最终使变量a执行a=a+1,因此对于包含a++或++a的表达式而言(如j=a++;或者j=++a;),两种情况下表达式的最终运算结果一定是相同的。
答案: 【 a++的运算过程是:先使用变量a的值,然后再执行a=a+1。】
5、单选题:
以下程序的输出结果是:#include <stdio.h>
int main()
{
int a=1, b=2;
a=a+b;
b=a-b;
a=a-b;
printf("%d,%dn", a, b );
return 0;
}
选项:
A: 2,1
B: 3,1
C: 3,2
D: 1,2
答案: 【 2,1】
6、单选题:
下面哪条语句可以生成0-9之间的随机数
选项:
A: magic=rand()%10;
B: magic=rand()%10+1;
C: magic=rand()/10;
D: magic=rand()/10+1;
答案: 【 magic=rand()%10;】
7、单选题:
在下面的C语言语句中,存在错误的是
选项:
A: int a=b=10;
B: int a=10,b=10;
C: int a,b;a=b=10;
D: int a,b;a=10;b=10;
答案: 【 int a=b=10;】
8、单选题:
若有以下定义,则表达式“a * b + d – c”的值的类型为#include <stdio.h>
int main()
{
char a;
int b;
float c;
double d;
....
return 0;
}
选项:
A: double
B: int
C: float
D: char
答案: 【 double】
9、单选题:
十进制3位数整数x,下面哪条语句能正确分离出它的十位上的数字d?
选项:
A: d=(x-(x/100)*100)/10;
B: d=(x%100)/10;
C: d=(x/10)%10;
D: d=x%10;
E: d=(x-x%10)/10;
F: d=x%100;
答案: 【 d=(x-(x/100)*100)/10;;
d=(x%100)/10;;
d=(x/10)%10;】
10、单选题:
在C语言中对下面的语句而言,哪个说法是错误的?int a, b;
选项:
A: 变量a和b中的值都是0
B: 变量a和b中都没有数值
C: 变量a和b中的值都是未知的随机数
D: a和b都是整型变量
E: 变量a和b占用的内存空间的大小是相同的
答案: 【 变量a和b中的值都是0;
变量a和b中都没有数值】
11、单选题:
下列程序的输出结果是#include <stdio.h>
int main()
{
int a=7,b=5;
printf("%dn",b/a);
return 0;
}
选项:
A: 0
B: 5
C: 1
D: 0.7
答案: 【 0】
12、单选题:
程序运行后的输出结果是#include <stdio.h>
int main()
{
int m=3,n=4,x;
x=m++;
++n;
x=x+8/n;
printf("%d,%dn",x,m);
return 0;
}
选项:
A: 4,4
B: 4,3
C: 5,4
D: 5,3
答案: 【 4,4】
13、单选题:
下面程序的运行结果是#include <stdio.h>
int main()
{
int a = 2, b = 3 ;
float x = 3.5, y = 2.5 ;
printf("%f", (float)(a+b) / 2 + (int)x % (int)y) ;
return 0;
}
选项:
A: 3.500000
B: 3.000000
C: 3.5
D: 3
答案: 【 3.500000】
14、单选题:
以下非法的赋值语句是
选项:
A: ++(i+1);
B: x=(j--);
C: n=++i;
D: j++;
答案: 【 ++(i+1);】
15、单选题:
已知int a,b;并且有a=5%3;以及b=5/3;,则a和b的值分别是
选项:
A: 2和1
B: 0和1.67
C: 3和1
D: 5和1
E: 0和1
F: 3和1.67
G: 5和1.67
答案: 【 2和1】
16、单选题:
设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是
选项:
A: 6.000000
B: 6.500000
C: 6
D: 5.500000
答案: 【 6.000000】
17、单选题:
以下程序的运行结果是#include <stdio.h>
int main()
{
int a = 12, b = 3;
float x = 18.5, y = 4.5;
printf("%fn", (float)(a * b) / 2);
printf("%dn", (int)x %(int)y);
return 0;
}
选项:
A: 18.0000002
B: 182
C: 182.000000
D: 18.0000002.000000
答案: 【 18.0000002】
18、单选题:
在C语言中,要求操作数必须是整型的运算符是
选项:
A: %
B: /
C: *
D: +
E: -
答案: 【 %】
19、单选题:
程序运行后的输出结果是#include <stdio.h>
int main()
{
char a='a';
printf("%c,",++a);
printf("%cn",a++);
return 0;
}
选项:
A: b,b
B: b,c
C: a,b
D: a,c
答案: 【 b,b】
20、单选题:
若以下选项中的变量已正确定义,则正确的赋值语句是
选项:
A: x3=x2=x1=0;
B: x1=26.8%3;
C: 1+2=x2;
D: x4=1+2=3;
答案: 【 x3=x2=x1=0; 】
运算符的优先级和结合性
1、判断题:
二元的算术运算符的结合性都是左结合。
选项:
A: 正确
B: 错误
答案: 【 正确】
第3周——从键盘中来到键盘中去开始输入和输出啦
%c格式转换说明
1、判断题:
用c格式符输入字符型数据的时候,为了避免将输入缓冲区中的空白字符(空格、回车换行符、Tab键)作为有效字符读入,可以在%c前面加一个空格。
选项:
A: 正确
B: 错误
答案: 【 正确】
单个字符的输入输出
1、判断题:
单个字符既可以以c格式符也可以以d格式符输出,前者是输出这个字符,后者是输出这个字符的ASCII码值。
选项:
A: 正确
B: 错误
答案: 【 正确】
格式字符
1、判断题:
在调用printf函数输出数据时,当数据的实际位宽大于printf函数中的指定位宽时,将按照数据的实际位宽输出数据。
选项:
A: 正确
B: 错误
答案: 【 正确】
第3周测验
1、单选题:
分析下列程序,写出程序运行结果#include <stdio.h>
int main()
{
char c1 = 'a', c2 = 'b', c3 = 'c';
printf("a%cb%cc%cabcn", c1, c2, c3);
return 0;
}
选项:
A: aabbccabc
B: acbcabc
C: aabcabc
D: acbbcabc
答案: 【 aabbccabc】
2、单选题:
有如下语句,为使变量a的值为1,b的值为2,从键盘输入数据的正确形式是scanf("a=%d,b=%d",&a,&b);
选项:
A: a=1,b=2
B: 1 2
C: 1,2
D: a=1 b=2
答案: 【 a=1,b=2】
3、单选题:
#include <stdio.h>
int main()
{
int a,b,c,d;
scanf("%c%c%d,%d",&a,&b,&c,&d);
printf("%c,%c,%c,%cn",a,b,c,d);
return 0;
}若运行以上程序时从键盘上输入:6565,66<回车>。则输出结果是
选项:
A: 6,5,A,B
B: 6,5,65,66
C: 6,5,6,5
D: 6,5,6,6
答案: 【 6,5,A,B】
4、单选题:
给出程序的运行结果,程序运行时从键盘输入:54321<回车>#include <stdio.h>
int main()
{
int a,b,s;
scanf("%2d%2d",&a,&b);
s=a/b;
printf("s=%d",s);
return 0;
}
选项:
A: 1
B: 1.6875
C: 2
D: 0
答案: 【 1】
5、单选题:
以下程序的输出结果为#include <stdio.h>
int main()
{
float a = 1234.567,b = 55.32;
printf("a = %4.2f, b = %5.1fn", a,b);
return 0;
}
选项:
A: a = 1234.57, b = 55.3
B: a =1234, b =55
C: a = 1234.6, b = 5.32
D: a =1234.567, b = 55.32
答案: 【 a = 1234.57, b = 55.3】
6、单选题:
以下程序的输出结果为#include <stdio.h>
int main()
{
int a=2, c=5;
printf("a = %%d, b = %%dn", a, c);
return 0;
}
选项:
A: a = %d, b = %d
B: a = %2, b = %5
C: a = 2, b = 5
D: a = %%d, b = %%d
答案: 【 a = %d, b = %d】
7、单选题:
有以下程序,运行时若输入为B,则输出是#include <stdio.h>
int main()
{
char ch;
ch=getchar();
ch=ch+32;
printf("%c",ch);
return 0;
}
选项:
A: b
B: 98
C: 32
D: 66
答案: 【 b】
8、单选题:
在调用printf函数输出数据时,当数据的实际位宽小于printf函数中的指定位宽时,下面叙述正确的是
选项:
A: 如果格式字符前面没有负号,那么输出的数据将会右对齐、左补空格;如果格式字符前面有负号,那么输出的数据将会左对齐、右补空格。
B: 如果格式字符前面没有负号,那么输出的数据将会左对齐、右补空格;如果格式字符前面有负号,那么输出的数据将会右对齐、左补空格。
C: 如果格式字符前面没有负号,那么输出的数据将会右对齐、左补0;如果格式字符前面有负号,那么输出的数据将会左对齐、右补0。
D: 如果格式字符前面没有负号,那么输出的数据将会左对齐、右补0;如果格式字符前面有负号,那么输出的数据将会右对齐、左补0。
答案: 【 如果格式字符前面没有负号,那么输出的数据将会右对齐、左补空格;如果格式字符前面有负号,那么输出的数据将会左对齐、右补空格。】
9、单选题:
设有语句“char c='72';”,则变量c
选项:
A: 包含1个字符
B: 包含2个字符
C: 包含3个字符
D: 不合法
答案: 【 包含1个字符】
10、单选题:
在下列语句中存在错误的是
选项:
A: int a,b;scanf("%d %f",&a,&b);
B: int a,b;scanf("%d %d",a,b);
C: int a,b;scanf("%d%dn",&a,&b);printf("%d %d",a,b);
D: float a,b;scanf("%3.2f %4.2f",&a,&b);printf("%f %f",a,b);
E: float a,b;scanf("%f %f",&a,&b);printf("%f %f",a,b);
F: float a,b;scanf("%f %f",&a,&b);printf("a=%4.3f,b=%4.3f",a,b);
G: int a,b;scanf("%2d%2d",&a,&b);printf("a=%d,b=%d",a,b);
H: int a,b;scanf("%d,%d",&a,&b);printf("a=%2d,b=%2d",a,b);
I: int a,b;scanf("a=%d,b=%d",&a,&b);printf("a=%d,b=%d",a,b);
答案: 【 int a,b;scanf("%d %f",&a,&b);;
int a,b;scanf("%d %d",a,b);;
int a,b;scanf("%d%dn",&a,&b);printf("%d %d",a,b);;
float a,b;scanf("%3.2f %4.2f",&a,&b);printf("%f %f",a,b);】
11、单选题:
程序运行后的输出结果是#include <stdio.h>
int main()
{
int a=666,b=888;
printf("%dn",a,b);
return 0;
}
选项:
A: 666
B: 错误信息
C: 888
D: 666,888
答案: 【 666】
12、单选题:
有以下语句段#include <stdio.h>
int main()
{
int n1=10,n2=20;
printf("_________",n1,n2);
return 0;
}要求按以下格式输出n1和n2的值,每个输出行都是从第一列开始,则空白处代码填写正确的是运行结果示例如下:n1=10n2=20
选项:
A: n1=%dnn2=%d
B: n1=%dn2=%dn
C: n1=%d,n2=%d
D: n1=%d n2=%dn
答案: 【 n1=%dnn2=%d】
13、单选题:
以下选项中合法的字符常量是
选项:
A: '10'
B: "B"
C: 68
D: D
答案: 【 '10'】
14、单选题:
写出下面程序的输出结果#include<stdio.h>
int main()
{
int x=6,y,z;
x*=18+1;
printf("%d,",x--);
x+=y=z=11;
printf("%d",x);
return 0;
}
选项:
A: 114,124
B: 113,124
C: 109,116
D: 110,116
答案: 【 114,124】
15、单选题:
给出程序的运行结果,程序运行时从键盘输入:45-12<回车>#include <stdio.h>
int main()
{
int a,b,sum;
scanf("%d%*c%d",&a,&b);
sum=a+b;
printf("sum=%d",sum);
return 0;
}
选项:
A: 57
B: 输出报错
C: 33
D: 输出一个随机数
答案: 【 57】
16、单选题:
给出程序的运行结果#include <stdio.h>
int main()
{
int a,b,s;
char op;
scanf("%d %c%d",&a,&op,&b);
s=a%b;
printf("s=%d",s);
return 0;
}程序运行时从键盘输入:15<回车>%5<回车>
选项:
A: 0
B: 程序报错
C: 输出一个随机数
D: 3
答案: 【 0】
17、单选题:
给出程序的运行结果#include <stdio.h>
int main()
{
int a,b,c,d;
char op1,op2,op3;
int sum;
printf("please input:a+b+c+dn");
scanf("%d%c%d%c%d%c%d",&a,&op1,&b,&op2,&c,&op3,&d);
sum=a+b+c+d;
printf("sum=%d",sum);
return 0;
}程序运行时从键盘输入:1<回车>2+3+1<回车>
选项:
A: 7
B: 1
C: 3
D: 6
答案: 【 7】
18、单选题:
在C语言中,字符型数据在内存中以( )形式存放
选项:
A: ASCII码
B: 国标码
C: BCD码
D: 反码
答案: 【 ASCII码】
19、单选题:
以下程序的执行结果是#include <stdio.h>
int main()
{
int a = 5, b = 4, x, y;
x = 2 * a++;
y = --b * 2;
printf("a=%d, x=%dn", a, x);
printf("b=%d, y=%dn", b, y);
return 0;
}
选项:
A: a=6, x=10b=3, y=6
B: a=6, x=10b=3, y=8
C: a=6, x=12b=3, y=6
D: 以上均不对
答案: 【 a=6, x=10b=3, y=6】
20、单选题:
以下程序运行后的输出结果是#include <stdio.h>
int main()
{
int a;
int c=10;
float f=100.0;
double x;
a=f/=c*=(x=6.5);
printf("%d,%d,%3.1f,%3.1fn",a,c,f,x);
return 0;
}
选项:
A: 1,65,1.5,6.5
B: 1,65,1,6.5
C: 1,65,1.0,6.5
D: 2,65,1.5,6.5
答案: 【 1,65,1.5,6.5】
21、单选题:
给出程序的运行结果#include <stdio.h>
int main()
{
char a,b;
int s;
printf("please input a and b:n");
a=getchar();
b=getchar();
s=a+b;
printf("a=%c,b=%c",a,b);
return 0;
}程序运行时从键盘输入:1<空格>2<回车>
选项:
A: a=1,b=
B: a=1,b=2
C: a= ,b=2
D: 输出乱码
答案: 【 a=1,b=】
22、单选题:
以下程序的输出结果是#include <stdio.h>
int main()
{
int a=1234;
printf("%2dn",a);
return 0;
}
选项:
A: 1234
B: 12
C: 34
D: 提示出错、无结果
答案: 【 1234】
练兵区——单选题——不计入总分
1、单选题:
以下程序的输出结果为#include <stdio.h>
int main()
{
float a = 1234.567,b = 55.32;
printf("a = %4.2f, b = %5.1fn", a,b);
return 0;
}
选项:
A: a = 1234.57, b = 55.3
B: a =1234, b =55
C: a = 1234.6, b = 5.32
D: a =1234.567, b = 55.32
答案: 【 a = 1234.57, b = 55.3】
2、单选题:
以下选项中合法的字符常量是
选项:
A: '10'
B: "B"
C: 68
D: D
答案: 【 '10'】
3、单选题:
给出程序的运行结果程序运行时从键盘输入:1<空格>2<回车>#include <stdio.h>
int main()
{
char a,b;
int s;
printf("please input a and b:n");
a=getchar();
b=getchar();
s=a+b;
printf("a=%c,b=%c",a,b);
return 0;
}
选项:
A: a=1,b=
B: a=1,b=2
C: a= ,b=2
D: 输出乱码
答案: 【 a=1,b=】
4、单选题:
有如下语句,为使变量a的值为1,b的值为2,从键盘输入数据的正确形式是scanf("a=%d,b=%d",&a,&b)
选项:
A: a=1,b=2
B: 1 2
C: 1,2
D: a=1 b=2
答案: 【 a=1,b=2】
5、单选题:
#include <stdio.h>
int main()
{
int a,b,c,d;
scanf("%c%c%d,%d",&a,&b,&c,&d);
printf("%c,%c,%c,%cn",a,b,c,d);
return 0;
}若运行以上程序时从键盘上输入:6565,66<回车>。则输出结果是
选项:
A: 6,5,A,B
B: 6,5,65,66
C: 6,5,6,5
D: 6,5,6,6
答案: 【 6,5,A,B】
6、单选题:
给出程序的运行结果,程序运行时从键盘输入:54321<回车>#include <stdio.h>
int main()
{
int a,b,s;
scanf("%2d%2d",&a,&b);
s=a/b;
printf("s=%d",s);
return 0;
}
选项:
A: 1
B: 1.6875
C: 2
D: 0
答案: 【 1】
7、单选题:
在调用printf函数输出数据时,当数据的实际位宽小于printf函数中的指定位宽时,下面叙述正确的是
选项:
A: 如果格式字符前面没有负号,那么输出的数据将会右对齐、左补空格;如果格式字符前面有负号,那么输出的数据将会左对齐、右补空格。
B: 如果格式字符前面没有负号,那么输出的数据将会左对齐、右补空格;如果格式字符前面有负号,那么输出的数据将会右对齐、左补空格。
C: 如果格式字符前面没有负号,那么输出的数据将会右对齐、左补0;如果格式字符前面有负号,那么输出的数据将会左对齐、右补0。
D: 如果格式字符前面没有负号,那么输出的数据将会左对齐、右补0;如果格式字符前面有负号,那么输出的数据将会右对齐、左补0。
答案: 【 如果格式字符前面没有负号,那么输出的数据将会右对齐、左补空格;如果格式字符前面有负号,那么输出的数据将会左对齐、右补空格。】
8、单选题:
程序运行后的输出结果是#include <stdio.h>
int main()
{
int a=666,b=888;
printf("%dn",a,b);
return 0;
}
选项:
A: 666
B: 错误信息
C: 888
D: 666,888
答案: 【 666】
9、单选题:
在C语言中,字符型数据在内存中以( )形式存放
选项:
A: ASCII码
B: 国标码
C: BCD码
D: 反码
答案: 【 ASCII码】
10、单选题:
以下程序运行后的输出结果是#include <stdio.h>
int main()
{
int a;
int c=10;
float f=100.0;
double x;
a=f/=c*=(x=6.5);
printf("%d,%d,%3.1f,%3.1fn",a,c,f,x);
return 0;
}
选项:
A: 1,65,1.5,6.5
B: 1,65,1,6.5
C: 1,65,1.0,6.5
D: 2,65,1.5,6.5
答案: 【 1,65,1.5,6.5】
11、单选题:
以下程序的输出结果是#include <stdio.h>
int main()
{
int a=1234;
printf("%2dn",a);
return 0;
}
选项:
A: 1234
B: 12
C: 34
D: 提示出错、无结果
答案: 【 1234】
12、单选题:
设有语句“char c='72';”,则变量c
选项:
A: 包含1个字符
B: 包含2个字符
C: 包含3个字符
D: 不合法
答案: 【 包含1个字符】
13、单选题:
有以下语句段#include <stdio.h>
int main()
{
int n1=10,n2=20;
printf("_________",n1,n2);
return 0;
}要求按以下格式输出n1和n2的值,每个输出行都是从第一列开始,则空白处代码填写正确的是运行结果示例如下:n1=10n2=20
选项:
A: n1=%dnn2=%d
B: n1=%dn2=%dn
C: n1=%d,n2=%d
D: n1=%d n2=%dn
答案: 【 n1=%dnn2=%d】
14、单选题:
给出程序的运行结果,程序运行时从键盘输入:45-12<回车>#include <stdio.h>
int main()
{
int a,b,sum;
scanf("%d%*c%d",&a,&b);
sum=a+b;
printf("sum=%d",sum);
return 0;
}
选项:
A: 57
B: 输出报错
C: 33
D: 输出一个随机数
答案: 【 57】
15、单选题:
给出程序的运行结果#include <stdio.h>
int main()
{
int a,b,s;
char op;
scanf("%d %c%d",&a,&op,&b);
s=a%b;
printf("s=%d",s);
return 0;
}程序运行时从键盘输入:15<回车>%5<回车>
选项:
A: 0
B: 程序报错
C: 输出一个随机数
D: 3
答案: 【 0】
16、单选题:
分析下列程序,写出程序运行结果#include <stdio.h>
int main()
{
char c1 = 'a', c2 = 'b', c3 = 'c';
printf("a%cb%cc%cabcn", c1, c2, c3);
return 0;
}
选项:
A: aabbccabc
B: acbcabc
C: aabcabc
D: acbbcabc
答案: 【 aabbccabc】
17、单选题:
以下程序的输出结果为#include <stdio.h>
int main()
{
int a=2, c=5;
printf("a = %%d, b = %%dn", a, c);
return 0;
}
选项:
A: a = %d, b = %d
B: a = %2, b = %5
C: a = 2, b = 5
D: a = %%d, b = %%d
答案: 【 a = %d, b = %d】
18、单选题:
有以下程序,运行时若输入为B,则输出是#include <stdio.h>
int main()
{
char ch;
ch=getchar();
ch=ch+32;
printf("%c",ch);
return 0;
}
选项:
A: b
B: 98
C: 32
D: 66
答案: 【 b】
19、单选题:
在下列语句中存在错误的是
选项:
A: int a,b;scanf("%d %f",&a,&b);
B: int a,b;scanf("%d %d",a,b);
C: int a,b;scanf("%d%dn",&a,&b);printf("%d %d",a,b);
D: float a,b;scanf("%3.2f %4.2f",&a,&b);printf("%f %f",a,b);
E: float a,b;scanf("%f %f",&a,&b);printf("%f %f",a,b);
F: float a,b;scanf("%f %f",&a,&b);printf("a=%4.3f,b=%4.3f",a,b);
G: int a,b;scanf("%2d%2d",&a,&b);printf("a=%d,b=%d",a,b);
H: int a,b;scanf("%d,%d",&a,&b);printf("a=%2d,b=%2d",a,b);
I: int a,b;scanf("a=%d,b=%d",&a,&b);printf("a=%d,b=%d",a,b);
答案: 【 int a,b;scanf("%d %f",&a,&b);;
int a,b;scanf("%d %d",a,b);;
int a,b;scanf("%d%dn",&a,&b);printf("%d %d",a,b);;
float a,b;scanf("%3.2f %4.2f",&a,&b);printf("%f %f",a,b);】
20、单选题:
写出下面程序的输出结果#include<stdio.h>
int main()
{
int x=6,y,z;
x*=18+1;
printf("%d,",x--);
x+=y=z=11;
printf("%d",x);
return 0;
}
选项:
A: 114,124
B: 113,124
C: 109,116
D: 110,116
答案: 【 114,124】
21、单选题:
给出程序的运行结果#include <stdio.h>
int main()
{
int a,b,c,d;
char op1,op2,op3;
int sum;
printf("please input:a+b+c+dn");
scanf("%d%c%d%c%d%c%d",&a,&op1,&b,&op2,&c,&op3,&d);
sum=a+b+c+d;
printf("sum=%d",sum);
return 0;
}程序运行时从键盘输入:1<回车>2+3+1<回车>
选项:
A: 7
B: 1
C: 3
D: 6
答案: 【 7】
22、单选题:
以下程序的执行结果是#include <stdio.h>
int main()
{
int a = 5, b = 4, x, y;
x = 2 * a++;
y = --b * 2;
printf("a=%d, x=%dn", a, x);
printf("b=%d, y=%dn", b, y);
return 0;
}
选项:
A: a=6, x=10b=3, y=6
B: a=6, x=10b=3, y=8
C: a=6, x=12b=3, y=6
D: 以上均不对
答案: 【 a=6, x=10b=3, y=6】
第4周——无处不在的抉择
判断ch是英文字母大写或者小写
1、判断题:
下面判断ch是大写或者小写英文字母的表达式是否正确?ch >= 'A' && ch <= 'Z' || ch >= 'a' && ch <= 'z'
选项:
A: 正确
B: 错误
答案: 【 正确】
条件运算符
1、单选题:
下列关于if-else语句的说法中哪个是正确的。
选项:
A: else总是和离它最近的if配对
B: else总是和前面离它最近的且还未和其他else匹配的在同一语句块内同一层次的if配对
C: else总是和前面离它最近的且位于花括号内的if配对
D: else可以和它前面的尚未与其他else匹配的任何一个if配对
答案: 【 else总是和前面离它最近的且还未和其他else匹配的在同一语句块内同一层次的if配对】
2、判断题:
条件运算符是C语言中唯一的一个三元运算符.
选项:
A: 正确
B: 错误
答案: 【 正确】
浮点数的表数精度
1、单选题:
下列说法错误的是()。
选项:
A: 浮点数并非真正意义上的实数,只是其在某种范围内的近似。
B: 浮点数能精确表示的数字位数取决于这种类型的浮点数的有效数字位数。
C: 使用更多的位来存储阶码,将会扩大浮点数的表数精度。
D: 受浮点数表数精度的限制,因此对于浮点数不能直接比较其是否相等,应该比较其是否近似相等。
答案: 【 使用更多的位来存储阶码,将会扩大浮点数的表数精度。】
程序测试
1、单选题:
下列说法错误的是()。
选项:
A: 软件测试的目的就是证明程序的正确性,即给定特定的输入,通过运行被测程序,检查程序的输出是否与预期结果一致,进而验证程序的正确性。
B: 白盒测试就是在完全了解程序的结构和处理过程的情况下,按照程序内部的逻辑测试程序,检验程序中的每条逻辑路径是否都能按预定要求正确工作。黑盒测试就是把系统看成一个黑盒子,不考虑程序内部的逻辑结构和处理过程,只根据需求规格说明书的要求,设计测试用例,检查程序的功能是否符合它的功能说明。
C: 在选择测试用例时,不仅要选取合理的输入数据,还要选取一些不合理的输入数据,以及某些极端的边界点或临界点等,对程序进行测试
D: 由于修复了旧的bug的同时,往往又会产生新的bug,因此往往还需要对所有出现过的bug重新测试一遍,看其是否会重新出现,并给确认代码修改后没有引入新的bug,即修改代码后需要进行回归测试。
答案: 【 软件测试的目的就是证明程序的正确性,即给定特定的输入,通过运行被测程序,检查程序的输出是否与预期结果一致,进而验证程序的正确性。】
第4周测验
1、单选题:
程序代码如下:#include <stdio.h>
int main()
{
int a,b;
printf("please input a and b:n");
scanf("%d%d",&a,&b);
printf("the output data is %dn",a<b?b:a);
return 0;
}从键盘输入以下数据:2<回车>7<回车>则程序输出为
选项:
A: the output data is 7
B: the output data is 2
C: the output data is 1
D: the output data is 0
答案: 【 the output data is 7】
2、单选题:
以下程序运行后的输出结果是#include <stdio.h>
int main()
{ int a,b,c;
a=10;
b=20;
c=(a%b<1)||(a/b>1);
printf("%d,%d,%d",a%b,a/b,c);
return 0;
}
选项:
A: 10,0,0
B: 10,1,0
C: 10,0,1
D: 10,1,1
答案: 【 10,0,0】
3、单选题:
从键盘输入三角形的三边长为a,b,c,按下面公式计算并输出三角形的面积。
![]()
程序代码如下,但程序运行后输出结果不正确,请找出有问题的语句。
#include <stdio.h>
#include <math.h>
int main()
{
float a, b, c;
float s, area;
printf("Input a,b,c:");
scanf("%f,%f,%f",&a,&b,&c);
if (a+b>c && b+c>a && a+c>b)
{
s = 1/2 * (a + b + c);
area = sqrt(s * (s - a) * (s - b) * (s - c));
printf("area=%.2fn", area);
}
else
{
printf("It is not a trianglen");
}
return 0;
}
选项:
A: 第11行: s = 1/2 * (a + b + c);
B: 第9行: if (a+b>c && b+c>a && a+c>b)
C: 第12行: area = sqrt(s * (s - a) * (s - b) * (s - c));
D: 第8行: scanf("%f,%f,%f",&a,&b,&c);
答案: 【 第11行: s = 1/2 * (a + b + c); 】
4、单选题:
编程设计一个简单的计算器程序,要求用户从键盘输入如下形式的表达式: 操作数1 运算符op 操作数2然后,计算并输出表达式的值指定的运算符为: 加(+) 减(-) 乘(*) 除(/)代码如下,所给程序是否存在错误,若有,找出错误所在并改正。#include <stdio.h>
int main()
{
float data1, data2;
char op;
printf("Please enter the expression:");
scanf("%f %c%f", &data1, &op, &data2); /* %c前有一个空格 */
switch (op)
{
case '+':
printf("%f + %f = %fn", data1, data2, data1 + data2);
break;
case '-':
printf("%f - %f = %fn", data1, data2, data1 - data2);
break;
case '*':
printf("%f * %f = %fn", data1, data2, data1 * data2);
break;
case '/':
printf("%f/%f = %fn", data1, data2,data1/data2);
break;
default:
printf("Invalid operator!n");
}
return 0;
}
选项:
A: 第20行语句有错误,改成:if (fabs(data2)<=EPS) printf("Division by zero!n");else printf("%f/%f = %fn", data1, data2, data1/data2);同时,第1行语句下方应加入#include <math.h>#define EPS 1e-6
B: default分支缺少break语句
C: 没有错误
D: 第20行语句有错误,改成:if (data2=0) printf("Division by zero!n");else printf("%f/%f = %fn", data1, data2, data1/data2);
答案: 【 第20行语句有错误,改成:if (fabs(data2)<=EPS) printf("Division by zero!n");else printf("%f/%f = %fn", data1, data2, data1/data2);同时,第1行语句下方应加入#include <math.h>#define EPS 1e-6】
5、单选题:
若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是
选项:
A: (x-y)<-10||!(y-x)>10
B: fabs(x-y)<10
C: x-y>-10 && x-y<10
D: (x-y)*(x-y)<100
答案: 【 (x-y)<-10||!(y-x)>10】
6、单选题:
下列复合语句中,不能实现两数交换的是
选项:
A: {
a=b;
b=a;
}
B: {
b = a * b;
a = b / a;
b = b / a;
}
C: {
t=a;
a=b;
b=t;
}
D: {
a = a + b;
b = a – b;
a = a – b;
}
答案: 【 {
a=b;
b=a;
}】
7、单选题:
写出下面程序的输出结果#include <stdio.h>
int main()
{
int x=1, y=0, a=0, b=0;
switch(x)
{
case 1:
switch(y)
{
case 0: a++;
case 1: b++;
}
case 2: a++;
b++;
}
printf("a=%d, b=%dn", a, b) ;
return 0;
}
选项:
A: a=2, b=2
B: a=2, b=1
C: a=1, b=1
D: a=1, b=0
答案: 【 a=2, b=2】
8、单选题:
以下程序运行后的输出结果是#include <stdio.h>
int main()
{
int a=5,b=4,c=3,d;
d=(a>b>c);
printf("%dn",d);
return 0;
}
选项:
A: 0
B: 1
C: 5
D: 4
E: 3
答案: 【 0】
9、单选题:
执行以下程序后的输出结果为#include <stdio.h>
int main()
{
int a=1,b=0;
switch (a)
{
case 1:
switch (b)
{
case 0: printf("**0**");break;
case 1: printf("**1**");break;
}
case 2: printf("**2**");break;
}
return 0;
}
选项:
A: **0****2**
B: **0**
C: **0****1****2**
D: 有语法错误
答案: 【 **0****2**】
10、单选题:
下面程序运行后的输出结果是#include <stdio.h>
int main()
{
int a=3,b=4,c=5,d=2;
if(a>b)
{
if(b>c)
{
printf("%d",d++ +1);
}
else
{
printf("%d",++d +1);
}
}
printf("%dn",d);
return 0;
}
选项:
A: 2
B: 3
C: 43
D: 44
答案: 【 2】
11、单选题:
下面程序代码的功能是判断输入整数的正负性和奇偶性,请将第19行和22行标号处缺少的代码填写完整。#include <stdio.h>
int main()
{
int m;
printf("Input m: ");
scanf("%d", &m); //输入一个整数
if (m > 0) //是否为正数
{
if (m % 2 == 0) //是正数,且能被2整除,则是正偶数
{
printf("%d is a positive evenn", m);
}
else //不能被2整除,则是正奇数
{
printf("%d is a positive oddn", m);
}
}
_______________ //判断是否为负数
{
_______________
{
printf("%d is a negative evenn", m); //是负偶数
}
else
{
printf("%d is a negative oddn", m); //是负奇数
}
}
else
{
printf("%d is zero.It is an evenn", m);
}
return 0;
}
选项:
A: 第19行代码: else if(m < 0)第22行代码: if (m % 2 == 0)
B: 第19行代码: if(m < 0)第22行代码: if (m % 2 == 0)
C: 第19行代码: else if(m < 0)第22行代码: if (m % 2 != 0)
D: 第19行代码: if(m < 0)第22行代码: if (m % 2 != 0)
答案: 【 第19行代码: else if(m < 0)第22行代码: if (m % 2 == 0)】
12、单选题:
程序功能:从键盘输入一个字符,判别它是否为大写字母。如果是,将它转换成小写字母,如果不是,不转换。在屏幕上输出最后得到的字符。程序代码如下,为实现上述功能,请将第8行标号处缺少的语句填写完整。&rl
