大学MOOC 程序设计基础(西南石油大学)1206753801 最新慕课完整章节测试答案
第一章程序设计概述
文章目录
- 第一章程序设计概述
- 第二章输入输出函数
- 第三章运算符及选择结构
- 第四章循环
- 第五章函数
- 第六章数组
- 第七章指针
- 第1周——初识C语言从认识变量和常量开始
- 第2周——数字间的那些事儿做点计算哈
- 第3周——从键盘中来到键盘中去开始输入和输出啦
- 第4周——无处不在的抉择
- 第5周——周而复始的循环之道
- 第6周——函数分工与合作的艺术
- 第7周——盗梦空间的逻辑探寻递归的奥秘
- 第8周——一堆数据来了你准备好了吗
- 第9周——指针C语言世界中所向披靡的金箍棒”
- 第10周——字符串C语言世界中的大力水手
- 第11周——指针的孪生兄弟
- 第12周——海陆空齐上阵又来了一堆数据
- 第13周——原来内存也可以这么玩我是指针我怕谁
- 第14周——结构设计的艺术
- 第15周——学会保存你的数据
- 结课考试
第一章测验
1、单选题:
以下不正确的叙述是( )。
选项:
A: 在C程序中所用的变量必须先定义赋初值后使用
B: 程序中,APH和aph是两个不同的变量
C: 若a和b类型相同,在执行了赋值语句a=b;后b中的值将放入a中,b中的值不变
D: 可以定义一个名字叫做void的变量
答案: 【 可以定义一个名字叫做void的变量】
2、单选题:
下列字符序列中,不可用作C语言标识符的是( )。
选项:
A: b70
B: #ab
C: symbol
D: a_1
答案: 【 #ab】
3、单选题:
下列数据中,为字符串常量的是( )。
选项:
A: A
B: "house"
C: How do you do.
D: $abc
答案: 【 "house"】
4、单选题:
以下数据中,不正确的数值或字符常量是( )。
选项:
A: 8.9e1.2
B: 10
C: 0xff00
D: 82.5
答案: 【 8.9e1.2】
5、单选题:
以下数据中,不正确的常量是( )。
选项:
A: 0
B: 5L
C: o13
D: 9861
答案: 【 o13】
6、单选题:
C语言源程序的基本单位是( )。
选项:
A: 过程
B: 函数
C: 子程序
D: 标识符
答案: 【 函数】
7、单选题:
以下数据中,不正确常量是( )。
选项:
A: c
B: 66
C: 0xaa
D: 5.5f
答案: 【 c】
8、单选题:
以下数值中,不正确的八进制数或十六进制数是( )。
选项:
A: ox16
B: 016
C: -016
D: 0xaaaa
答案: 【 ox16】
9、单选题:
以下标识符中,不能作为合法的C用户定义标识符的是( )。
选项:
A: answer
B: to
C: signed
D: _if
答案: 【 signed】
10、单选题:
下列程序的输出结果是( )。void main(){ int a=7,b=5; printf( "%dn ",b=b/a);}
选项:
A: 0
B: 5
C: 1
D: 不确定值
答案: 【 0】
11、单选题:
2019年9月的TIOBE编程语言排行榜上,前4名不包括( )
选项:
A: C
B: C++
C: Python
D: FoxPro
答案: 【 FoxPro】
12、单选题:
关于计算机存储容量,不正确的是( )
选项:
A: 1KB=1024B
B: 1MB=1024KB
C: 1GB=1024MB
D: 1TB=1024MB
答案: 【 1TB=1024MB】
13、单选题:
C程序的编译环境不包括( )
选项:
A: VC2010
B: Code::Blocks
C: Dev C++
D: JDK
答案: 【 JDK】
14、单选题:
#include <stdio.h>是( )
选项:
A: 函数
B: 编译预处理指令
C: 有语法错误
D: 什么都不是
答案: 【 编译预处理指令】
15、单选题:
在C语言中,字符型数据在内存中以字符的( )形式存放
选项:
A: 国标码
B: GB2312
C: ASCII码
D: Unicode编码
答案: 【 ASCII码】
第二章输入输出函数
第二章测验
1、单选题:
下面代码执行后,输出的结果是( )#include <stdio.h>int main(){ printf("%dn" , (int)3.14159265 ); return 0; }
选项:
A: 3
B: 4
C: 3.0
D: 4.0
答案: 【 3】
2、单选题:
下面代码执行后,输出的结果是( )#include <stdio.h>int main(){ printf("%dn" , (int)4.56 ); return 0; }
选项:
A: 4
B: 5
C: 4.0
D: 5.0
答案: 【 4】
3、单选题:
下面代码执行后,输出的结果是( )#include <stdio.h>int main(){ printf("%.0fn" , 3.14159265 ); return 0; }
选项:
A: 3
B: 4
C: 3.0
D: 4.0
答案: 【 3】
4、单选题:
下面代码执行后,输出的结果是( )#include <stdio.h>int main(){ printf("%.0fn" , 4.56 ); return 0; }
选项:
A: 4
B: 5
C: 4.0
D: 5.0
答案: 【 5】
5、单选题:
下面哪一种不属于基本程序结构( )
选项:
A: 顺序结构
B: 选择结构
C: 循环结构
D: 层次结构
答案: 【 层次结构】
6、单选题:
对用户使用的变量、数组、函数等操作对象取的名字,下面哪个描述不正确( )
选项:
A: 以字母或下划线开头,由字母、数字和下划线三种字符组成
B: 不能定义与32个”关键字”相同的标识符
C: 严格区分大小写
D: 不用区分大小写
答案: 【 不用区分大小写】
7、单选题:
已经有如下的代码:char c='A';要打印输出一个大写字母A,下面哪一个代码无法做到( )
选项:
A: putchar(c);
B: putchar(65);
C: putchar('A');
D: putchar(A);
答案: 【 putchar(A);】
8、单选题:
变量a和b的值分别是7和9,要输出如下的内容:a=7b=9下面正确的代码是( )
选项:
A: printf("a=%b,b=%dn" ,a,b);
B: printf("a=%btb=%dn" ,a,b);
C: printf("a=%d,b=%dn" ,a,b);
D: printf("a=%dnb=%dn" ,a,b);
答案: 【 printf("a=%dnb=%dn" ,a,b);】
9、单选题:
让用户从键盘输入一个数字,存入双精度(double)类型的变量d,正确的代码是( )
选项:
A: scanf("%f" ,&d);
B: scanf("%lf" ,&d);
C: scanf("%f" ,d);
D: scanf("%lf" ,d);
答案: 【 scanf("%lf" ,&d);】
10、单选题:
以下不符合C语言语法的赋值语句是( )。
选项:
A: j++;
B: j=5;
C: k=2*4, k*4;
D: y=float(j);
答案: 【 y=float(j);】
11、单选题:
执行下列语句后变量x和y的值是()。y=10; 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】
12、单选题:
下列语句的输出结果是()。 printf( "%dn", (int)(2.5+3.0)/3 );
选项:
A: 有语法错误不能通过编译
B: 2
C: 1
D: 0
答案: 【 1】
13、单选题:
以下的代码中,正确的赋值语句是()。
选项:
A: a=1,b=2;
B: 5+=1;
C: 1=a;
D: y=int(x);
答案: 【 a=1,b=2;】
14、单选题:
对以下语句的功能描述正确的是:int r=2;float s = 1/2 * 3.14 *r *r;
选项:
A: s是半径为2的圆的面积
B: s是半径为2的 半圆的面积
C: 运算结果为0,不能计算是半圆的面积
D: 其他三个说法均不正确
答案: 【 运算结果为0,不能计算是半圆的面积】
15、单选题:
关于占位符,不正确的是( )
选项:
A: char类型对应的占位符是%c
B: double类型对应的占位符是%d
C: float类型对应的占位符是%f
D: 需要根据数据类型,正确的选取占位符
答案: 【 double类型对应的占位符是%d】
第三章运算符及选择结构
第三章测验
1、单选题:
在C语言中,能代表逻辑值“真”的是( )。
选项:
A: True
B: 大于0的数
C: 非0整数
D: 非0的数
答案: 【 非0的数】
2、单选题:
下列运算符中,不属于关系运算符的是( )。
选项:
A: <
B: >
C: >=
D: !
答案: 【 !】
3、单选题:
以下运算符中,优先级最高的运算符是( )。
选项:
A: =
B: !=
C: *(乘号)
D: ()
答案: 【 ()】
4、单选题:
以下程序的输出结果是:void main(){int a=1;switch(a){case 1:printf("hello");case 3:printf(" word");case 5:printf("!");break;default: printf("errorn");}}
选项:
A: hello
B: hello word
C: hello word!
D: hello word!error
答案: 【 hello word!】
5、单选题:
以下程序的输出是:void main(){int a=1;switch(a){default: printf("errorn");case 1:printf("hello");break;case 3:printf(" word");break;case 5:printf("!");break;}}
选项:
A: hello
B: hello word
C: hello word!
D: error
答案: 【 hello】
6、单选题:
以下程序的运行结果是:void main(){int a=5;if(a=0)printf("a=%dn",a);else{++a;printf("a=%dn",a);}}
选项:
A: a=1
B: a=0
C: a=5
D: a=6
答案: 【 a=1】
7、单选题:
#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: 3
C: 4
D: 5
答案: 【 0】
8、判断题:
程序中的“=”是“等于”符号,其功能是判断两个表达式是否相等。
选项:
A: 正确
B: 错误
答案: 【 错误】
9、判断题:
switch语句不能嵌套到if语句中。
选项:
A: 正确
B: 错误
答案: 【 错误】
10、判断题:
if(表达式) 语句1;else 语句2 ;此结构中,如表达式为a>10,则else的条件隐含为a<10。
选项:
A: 正确
B: 错误
答案: 【 错误】
11、判断题:
switch…case结构中条件表达式和常量表达式值可以为float类型。
选项:
A: 正确
B: 错误
答案: 【 错误】
12、判断题:
可以用switch结构实现的程序都可以使用if语句来实现。
选项:
A: 正确
B: 错误
答案: 【 正确】
13、判断题:
switch后面圆括号内的表达式的值和case后面的常量表达式的值都必须是整型或字符型,不允许是浮点型。
选项:
A: 正确
B: 错误
答案: 【 正确】
14、判断题:
C语言规定,else总是与它上面、最近的、尚未配对的if配对。
选项:
A: 正确
B: 错误
答案: 【 正确】
15、判断题:
所有的if语句能够实现的逻辑,都可以修改为用switch实现。
选项:
A: 正确
B: 错误
答案: 【 错误】
第四章循环
第4章测验
1、单选题:
1、有以下程序#include <stdio.h> #include <math.h> void main( ) { int a=15,b=21,m=0; switch(a%3) { case 0: m++;break; case 1: m++; switch(b%2) { default:m++; case 0:m++;break; } } printf("%dn",m); }程序运行后的输出结果是______。
选项:
A: 1
B: 2
C: 3
D: 4
答案: 【 1】
2、单选题:
t为int类型,进入下面的循环之前,t的值为0,while(t=1){ ...... }则以下叙述中正确的是______。
选项:
A: 循环控制表达式的值为0
B: 循环控制表达式的值为1
C: 循环控制表达式不合法
D: 以上说法都不对
答案: 【 循环控制表达式的值为1】
3、单选题:
有如下程序main(){ int n= 9; while(n>6) { n--; printf("%d",n); }}该程序的输出结果是______。
选项:
A: 987
B: 876
C: 8765
D: 9876
答案: 【 876】
4、单选题:
有以下程序段 int k=0; while(k=1) k++;while循环执行的次数是______。
选项:
A: 无限次
B: 有语法错,不能执行
C: 一次也不执行
D: 执行1次
答案: 【 无限次 】
5、单选题:
以下程序的输出结果是______。main(){ int x=10, y=10, i; for( i=0; x>8; y=++i) printf("%d %d ",x--, y );}
选项:
A: 10 1 9 2
B: 9 8 7 6
C: 10 9 9 0
D: 10 10 9 1
答案: 【 10 10 9 1 】
6、单选题:
请读程序 #include main() { int ai, bi ; for(ai = 1 , bi= 1 ; ai <= 100 ; ai++) { if(bi>= 20) break ; if (bi%3 == 1) { bi += 3 ;continue ; } bi -= 5 ; } printf("%dn", ai) ; }上面程序的输出结果是______。
选项:
A: 7
B: 8
C: 9
D: 10
答案: 【 8】
7、单选题:
下面程序的运行结果是:() #include<stdio. h> main() {int a=1,b=10;do{b-=a;a++;}while(b--<0);printf("a=%d,b=%dn",a,b); }
选项:
A: a=3,b=11
B: a=2,b=8
C: a=1, b=-1
D: a=4,b=9
答案: 【 a=2,b=8 】
8、单选题:
若x是int型变量,且有下面的程序片段for(x=3;x<6;x++) printf( (x%2)?("**%d"):("##%dn"),x);上面程序片段的输出结果是______。1 **3 2 ##3 3 ##3 4 **3##4 ##4 **4 **4##5 **5 **5 ##5
选项:
A: 1
B: 2
C: 3
D: 4
答案: 【 4】
9、单选题:
有如下程序main( ){ int i,sum; for(i=1;i<=3;sum++) sum +=i; printf("%dn",sum);}该程序的执行结果是______。
选项:
A: 输出随机值
B: 3
C: 死循环,无法输出
D: 6
答案: 【 死循环,无法输出】
10、单选题:
有以下程序main(){ int i=0,s=0; do{ if(i%2) { i++; continue; } i++; s+=i; } while(i<7); printf("%dn",s);}执行后输出的结果是______。
选项:
A: 16
B: 12
C: 28
D: 21
答案: 【 16】
11、单选题:
以下程序的功能是、按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出,程序如下、main() { int n,k; float score,sum,ave; sum=0.0; for(n=1;n<=10;n++) { for(k=1;k<=4;k++) { scanf("%f",&score); sum+=score; } ave=sum/4.0; printf("NO%d:%fn",n,ave); } }上述程序运行后结果不正确,调试中发现有一条语句出现在程序的位置不正确。这条语句是______。
选项:
A: sum=0.0;
B: sum+=score;
C: ave=sum/4.0;
D: printf("NO%d:%fn",n,ave);
答案: 【 sum=0.0;】
12、单选题:
以下程序的输出结果是______。 main() { int num=0; while(num<=2) { num++; printf("%dn",num); } }(1) (2) (3) (4)1 1 1 12 2 23 34
选项:
A: (1)
B: (2)
C: (3)
D: (4)
答案: 【 (2)】
13、单选题:
以下程序中,while循环的循环次数是______。main(){ int i=0; while(i<10) { if(i<1) continue; if(i==5)break; i++; } ......}
选项:
A: 1
B: 10
C: 6
D: 死循环,不能确定次数
答案: 【 死循环,不能确定次数】
14、单选题:
执行下面程序片段的结果是______。 int x=23; do { printf("%2d",x--); } while(!x);
选项:
A: 打印出321
B: 打印出23
C: 不打印任何内容
D: 陷入死循环
答案: 【 打印出23 】
15、单选题:
以下程序的输出结果是______。 main() { int a,b; for(a=1,b=1; a<=100; a++) { if(b>=10) break; if(b%3==1) { b+=3; continue; } } printf("%dn",a); }
选项:
A: 101
B: 6
C: 5
D: 4
答案: 【 4】
16、单选题:
以下程序执行后sum的值是______。 main() { int i, sum; for(i=1;i<6;i++) sum+=i; printf("%dn",sum); }
选项:
A: 15
B: 14
C: 不确定
D: 0
答案: 【 不确定】
17、单选题:
以下的for循环: for( x=0,y=0; (y!=123)&&(x<4); x++ ) ;
选项:
A: 是无限循环
B: 循环次数不定
C: 执行4次
D: 执行3次
答案: 【 执行4次】
18、单选题:
有如下程序main(){ int i,sum=0; for(i=1; i; i--) sum +=i; printf("%dn",sum);}该程序的执行结果是______。
选项:
A: 输出随机值
B: 1
C: 死循环,无法输出
D: 0
答案: 【 1】
19、单选题:
有以下程序main(){ int i; for(i=0;i<3;i++) switch(i) { case 1: printf("%d",i); case 2: printf("%d",i); default: printf("%d",i); }}执行后输出的结果是______。
选项:
A: 011122
B: 012
C: 012020
D: 120
答案: 【 011122】
20、单选题:
下面的程序 main() { int x=3; do{ printf("%dn",x-=2); }while(!(--x) ); } 的执行结果是?
选项:
A: 输出的是1
B: 输出的是1和-2
C: 输出的是3和0
D: 是死循环
答案: 【 输出的是1和-2 】
第五章函数
第五章测验
1、单选题:
有以下程序float fun(int x,int y){ return(x+y); }void main(){int a=2,b=5,c=8;printf("%3.0fn",fun((int)fun(a+c,b),a-c));}程序运行后的输出结果是( )。
选项:
A: 编译出错
B: 9
C: 21
D: 9.0
答案: 【 9】
2、单选题:
C语言程序中,当函数调用时( )。
选项:
A: 实参和形参各占一个独立的存储单元
B: 实参和形参共用一个存储单元
C: 可以由用户指定是否共用存储单元
D: 计算机系统自动确定是否共用存储单元
答案: 【 实参和形参各占一个独立的存储单元】
3、单选题:
有如下函数调用语句func(rec1,rec2+rec3,(rec4,rec5));该函数调用语句中,含有的实参个数是( )。
选项:
A: 3
B: 4
C: 5
D: 6
答案: 【 3】
4、单选题:
下列哪种数据不存放在动态存储区中( )。
选项:
A: 函数形参变量
B: 局部自动变量
C: 函数调用时的现场保护和返回地址
D: 局部静态变量
答案: 【 局部静态变量】
5、单选题:
以下对C语言函数的有关描述中,正确的是( )。
选项:
A: 调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B: C函数既可以嵌套定义又可以递归调用
C: 函数必须有返回值,否则不能使用函数
D: C程序中有调用关系的所有函数必须放在同一个源程序文件中
答案: 【 调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参】
6、单选题:
以下描述正确的是( )。
选项:
A: 函数调用可以出现在执行语句或表达式中
B: 函数调用不能作为一个函数的实参
C: 函数调用可以作为一个函数的形参
D: 以上都不正确
答案: 【 函数调用可以出现在执行语句或表达式中 】
7、单选题:
C语言是由( )构成。
选项:
A: 主程序和子程序
B: 主函数和若干子函数
C: 一个主函数和一个其他函数
D: 主函数和子程序
答案: 【 主函数和若干子函数】
8、单选题:
如果在一个函数的复合语句中定义了一个变量,则该变量( )。
选项:
A: 只在该复合语句中有效,在该复合语句外无效
B: 此定义方法错误,其变量为非法变量
C: 在该函数中任何位置都有效
D: 在本程序的源文件范围内均有效
答案: 【 只在该复合语句中有效,在该复合语句外无效】
9、单选题:
若有以下程序#include <stdio.h>void f(int n);main(){ void f(int n);f(5);}void f(int n){printf("%dn",n); }则以下叙述中不正确的是( )。
选项:
A: 若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f
B: 若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数f
C: 对于以上程序,编译时系统会提示出错信息:提示对f函数重复说明
D: 函数f无返回值,所以可用void将其类型定义为无值型
答案: 【 对于以上程序,编译时系统会提示出错信息:提示对f函数重复说明】
10、单选题:
请读程序:#include<stdio.h>func( 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("%dn",r);}上面程序的输出结果是( )
选项:
A: 11
B: 19
C: 21
D: 31
答案: 【 19】
11、单选题:
下列说法不正确的是( )。
选项:
A: 主函数main中定义的变量在整个文件或程序中有效
B: 不同函数中,可以使用相同名字的变量
C: 形式参数是局部变量
D: 在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效
答案: 【 主函数main中定义的变量在整个文件或程序中有效】
12、单选题:
C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是( )。
选项:
A: void
B: int
C: float
D: double
答案: 【 int】
13、单选题:
在C语言中,函数的隐含存储类别是( )。
选项:
A: auto
B: static
C: extern
D: 无存储类别
答案: 【 auto】
14、单选题:
以下函数值的类型是( )。fun (float x){ float y;y= 3*x-4;return y;}
选项:
A: int
B: 不确定
C: void
D: float
答案: 【 int】
15、单选题:
关于return语句,下列正确的说法是( )。
选项:
A: 在主函数和其他函数中均要出现
B: 必须在每个函数中出现
C: 可以在同一个函数中出现多次
D: 只能在除主函数之外的函数中出现一次
答案: 【 可以在同一个函数中出现多次】
16、单选题:
以下说法中正确的是( )。
选项:
A: C语言程序总是从第一个的函数开始执行
B: 在C语言程序中,要调用的函数必须在main()函数中定义
C: C语言程序总是从main()函数开始执行
D: C语言程序中的main()函数必须放在程序的开始部分
答案: 【 C语言程序总是从main()函数开始执行】
17、单选题:
有如下程序int func(int a,int b){ return(a+b); }main(){int x=2,y=5,z=8,r;r=func(func(x,y),z);printf("%dn",r);}该程序的输出的结果是( )。
选项:
A: 12
B: 13
C: 14
D: 15
答案: 【 15】
18、单选题:
在一个源程序文件中定义的全局变量的有效范围是( )。
选项:
A: 本源程序文件的全部范围
B: 一个C程序的所有源程序文件
C: 函数内全部范围
D: 从定义变量的位置开始到源程序文件结束
答案: 【 从定义变量的位置开始到源程序文件结束】
19、单选题:
以下程序的输出结果是( )。fun(int x, int y, int z){ z=x*x+y*y; }main(){int a=31;fun(5,2,a);printf("%d",a);}
选项:
A: 0
B: 29
C: 31
D: 不确定
答案: 【 31】
20、单选题:
有以下程序#include <stdio.h>int abc(int u,int v);main (){ int a=24,b=16,c;c=abc(a,b);printf("%dn",c);}int abc(int u,int v){ int w;while(v) { w=u%v; u=v; v=w ;}return u;}
选项:
A: 6
B: 7
C: 8
D: 9
答案: 【 8】
第六章数组
第六章测验
1、单选题:
以下关于数组的描述正确的是( )。
选项:
A: 数组的大小是固定的,但可以有不同的类型的数组元素。
B: 数组的大小是可变的,但所有数组元素的类型必须相同。
C: 数组的大小是固定的,所有数组元素的类型必须相同。
D: 数组的大小是可变的,可以有不同的类型的数组元素
答案: 【 数组的大小是固定的,所有数组元素的类型必须相同。】
2、单选题:
以下程序运行后,输出结果是( )。 #include<stdio.h>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】
3、单选题:
若有以下数组定义,其中不正确的是( ) 。
选项:
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}};】
4、单选题:
若有以下的定义:int t[5][4];能正确引用t数组的表达式是( )。
选项:
A: t[2][4]
B: t[5][0]
C: t[0][0]
D: t[0,0]
答案: 【 t[0][0]】
5、单选题:
以下程序的输出结果是( ) 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】
6、单选题:
在定义int n[5][6];后第10个元素是( )。
选项:
A: n[2][5]
B: n[2][4]
C: n[1][3]
D: n[1][4]
答案: 【 n[1][3]】
7、单选题:
请读程序:#include<stdio.h>f(int b[], int n){ int i, r; r=1; for(i=0; i<=n; i++) r=r*b[i]; return r;}main(){ int x, a[]={ 2,3,4,5,6,7,8,9}; x=f(a, 3); printf("%dn",x);} 上面程序的输出结果是( )。
选项:
A: 720
B: 120
C: 24
D: 6
答案: 【 120】
8、单选题:
若定义如下变量和数组: int i;intx[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
答案: 【 3 5 7】
9、单选题:
下面程序运行后,输出结果是( )。 main(){char ch[7]={ "65ab21"};int i,s=0;for(i=0; ch[i]>='0'&&ch[i]<='9';i+=2) s=10*s+ch[i]- '0';printf("%dn",s);}
选项:
A: 12ba56
B: 6521
C: 6
D: 62
答案: 【 6】
10、单选题:
若有定义和语句: char s[10]="abcd";printf("%sn",s);则结果是(以下└┘代表空格) ( )。
选项:
A: 输出abcd
B: 输出a
C: 输出abcd└┘└┘└┘└┘
D: 编译不通过
答案: 【 输出abcd】
11、单选题:
以下程序中函数reverse的功能是将a所指数组中的内容进行逆置。void reverse(int a[ ],int n){ int i,t;for(i=0;i<n/2;i++){ t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}}main(){ int b[10]={1,2,3,4,5,6,7,8,9,10}; int i,s=0;reverse(b,8);for(i=6;i<10;i++) s+=b[i];printf("%dn",s);}程序运行后的输出结果是( )。
选项:
A: 22
B: 10
C: 34
D: 30
答案: 【 22】
12、单选题:
以下程序运行后,输出结果是( )。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】
13、单选题:
若有数组定义: char array [ ]="China"; 则数组 array所占的空间为( )。
选项:
A: 4个字节
B: 5个字节
C: 6个字节
D: 7个字节
答案: 【 6个字节】
14、单选题:
以下程序运行后输出结果是( )。 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】
15、单选题:
下列程序的主要功能是输入10个整数存入数组a,再输入一个整数x,在数组a中查找x。找到则输出x在10个整数中的序号(从1开始);找不到则输出0。程序缺少的是 ( )。 #include<stdio.h>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])】
16、单选题:
在定义int m[ ][3]={1,2,3,4,5,6};后,m[1][0]的值是( )。
选项:
A: 4
B: 1
C: 2
D: 5
答案: 【 4】
17、单选题:
在C语言中,引用数组元素时,其数组下标的数据类型允许是( )。
选项:
A: 整型常量
B: 整型表达式
C: 整型常量或整型表达式
D: 任何类型的表达式
答案: 【 整型常量或整型表达式】
18、单选题:
假定int类型变量占用4个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是( )。
选项:
A: 3
B: 4
C: 12
D: 40
答案: 【 40】
19、单选题:
以下程序运行后,输出结果是( )。 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】
20、单选题:
下面程序的输出是( )。fun(int h) { static int a[3]={1,2,3}; int k; for(k=0;k<3;k++) a[k]+=a[k]-h; for(k=0;k<3;k++) printf("%d",a[k]); return(a[h]); } main() { int t=1; fun(fun(t)); }
选项:
A: 123159
B: 135135
C: 1,3,5, 0,4,8,
D: 135-137
答案: 【 135-137】
21、单选题:
若有以下说明: 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]】
22、单选题:
以下对一维整型数组a的正确说明是( )。
选项:
A: int a(10);
B: int n=10,a[n];
C: int n; scanf("%d",&n); int a[n];
D: #define SIZE 10int a[SIZE];
答案: 【 #define SIZE 10int a[SIZE];】
23、单选题:
以下程序的输出结果是( )。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: 18
C: 8
D: 15
答案: 【 10】
24、单选题:
若有以下定义语句: float x[3][3]={{1.0,2.0,3.0},{4.0,5.0,6.0}};则表达式“x[1][1]*x[2][2]”的值是( )。
选项:
A: 0.0
B: 4.0
C: 5.0
D: 6.0
答案: 【 0.0】
25、单选题:
阅读以下函数:fun(char s[],char t[]){int i=-1;while(++i,s[i]==t[i]&&s[i]!=’’);return(s[i]==’’&&t[i]==’’);}以上函数的功能是( )。
选项:
A: 比较串s和t的长度
B: 比较串s和t的大小
C: 比较串s和t是否相等
D: 将串t赋给串s
答案: 【 比较串s和t是否相等】
26、单选题:
若给出以下定义: char x[]="abcdefg";char y[]={'a','b','c','d','e','f','g'}; 则正确的叙述为( )。
选项:
A: 数组x和数组y等价
B: 数组x和数组y的长度相同
C: 数组x的长度大于数组y的长度
D: 数组x的长度小于数组y的长度
答案: 【 数组x的长度大于数组y的长度】
27、单选题:
合法的数组定义是( )。
选项:
A: char 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};】
28、单选题:
以下程序运行后,输出结果是( )。 main(){ int aa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};int i,s=0;for(i=0;i<4;i++) s+=aa[i][1];printf(“%dn”,s);}
选项:
A: 11
B: 19
C: 13
D: 20
答案: 【 19】
29、单选题:
下列程序执行后的输出结果是( )。void func1(int i);void func2(int i);char st[]="hello,friend!";void func1(int i){ printf("%c",st[i]);if(i<3){ i+=2; func2(i);}}void func2(int i){printf("%c",st[i]);if(i<3){ i+=2; func1(i);}}main(){int i=0; func1(i); printf("n");}
选项:
A: hello
B: hel
C: hlo
D: hlm
答案: 【 hlo】
30、单选题:
以下程序运行后,输出结果是( )。 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】
31、单选题:
不能把字符串: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!";】
32、单选题:
下列语句中,不正确的是( )。
选项:
A: static char a[2]={1,2};
B: static char a[2]={ '1', '2'};
C: static char a[2]={ '1', '2', '3'};
D: static char a[2]={ '1'};
答案: 【 static char a[2]={ '1', '2', '3'};】
33、单选题:
下面的程序中______错误(每行程序前面的数字是行号)。1 #include <stdio.h>2 main()3 {4 float a[3]={0.0};5 int i;6 for(i=0;i<3;i++) scanf("%d",a[i]);7 for(i=1;i<3;i++)a[0]=a[0]+a[i];8 printf("%fn",a[0]);9 }
选项:
A: 没
B: 第4行
C: 第6行
D: 第8行
答案: 【 第6行】
34、单选题:
下述对C语言字符数组的描述中正确的是 ( )。
选项:
A: 任何一维数组的名称都是该数组存储单元的开始地址,且其每个元素按照顺序连续占存储空间
B: 一维数组的元素在引用时其下标大小没有限制
C: 任何一个一维数组的元素,可以根据内存的情况按照其先后顺序以连续或非连续的方式占用存储空间
D: 一维数组的第一个元素是其下标为1的元素
答案: 【 任何一维数组的名称都是该数组存储单元的开始地址,且其每个元素按照顺序连续占存储空间】
35、单选题:
下述对C语言字符数组的描述中错误的是( )。
选项:
A: 字符数组可以存放字符串
B: 字符数组中的字符串可以整体输入、输出
C: 可以在赋值语句中通过赋值运算符"="对字符数组整体赋值
D: 不可以用关系运算符对字符数组中的字符串进行比较
答案: 【 可以在赋值语句中通过赋值运算符"="对字符数组整体赋值】
36、单选题:
以下对一维数组m进行正确初始化的是( )。
选项:
A: int m[10]=(0,0,0,0) ;
B: int m[10]={ };
C: int m[ ]={0};
D: int m[10]; m[10]={10*2};
答案: 【 int m[ ]={0};】
37、单选题:
执行下面的程序段后,变量k中的值为( )。 int k=3, s[2]; s[0]=k; k=s[1]*10;
选项:
A: 不定值
B: 33
C: 30
D: 10
答案: 【 不定值】
38、单选题:
以下程序运行后,输出结果是( )。 main(){ int a[4][4]={{1,3,5},{2,4,6},{3,5,7}};printf("%d%d%d%dn",a[0][3],a[1][2],a[2][1],a[3][0]);}
选项:
A: 0650
B: 1470
C: 5430
D: 输出值不定
答案: 【 0650】
39、单选题:
若说明: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]】
40、单选题:
若有定义:int b[3][4]={0};则下述正确的是( ) 。
选项:
A: 此定义语句不正确
B: 没有元素可得初值0
C: 数组b中各元素均为0
D: 数组b中各元素可得初值但值不一定为0
答案: 【 数组b中各元素均为0】
第七章指针
第7章测验
1、单选题:
设P1 和P2 是指向同一个int 型一维数组的指针变量,k 为int 型变量,则不能正确执行的语句是 。
选项:
A: k=*P1+*P2;
B: P2=k;
C: P1=P2;
D: k=*P1 * (*P2);
答案: 【 P2=k;】
2、单选题:
若有以下的定义: int a[ ]={1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10} , *p=a ; 则值为3 的表式是 。
选项:
A: p+=2,*(p++)
B: p+=2 ,*++p
C: p+=3,*p++
D: p+=2 ,++*p
答案: 【 p+=2,*(p++)】
3、单选题:
说明语句:int *f(); 中,标识符代表的是:
选项:
A: 一个用于指向整型数据的指针变量
B: 一个用于指向一维数组的指针
C: 一个用于指向函数的指针变量
D: 一个返回值为指针型的函数名
答案: 【 一个返回值为指针型的函数名】
4、单选题:
数组a的两个元素中各自存放了字符’a’、’A’的地址, char *s="t\Name\Addressn";指针s所指字符串的长度为: 。
选项:
A: 说明不合法
B: 19
C: 18
D: 15
答案: 【 15】
5、单选题:
定义:int a[9] ,*p=a;不能表示a[1] 的表达式是( )
选项:
A: p+1
B: a+1
C: a++
D: ++p
答案: 【 a++】
6、单选题:
int x ,*pb; ,则正确的赋值表达式是
选项:
A: pb=&x
B: pb=x;
C: *pb=&x;
D: *pb=*x
答案: 【 pb=&x 】
7、单选题:
下列函数的功能是 。 int fun1(char * x) { char *y=x; while(*y++) ; return(y-x-1); }
选项:
A: 求字符串的长度
B: 比较两个字符串的大小
C: 将字符串X 复制到字符串Y
D: 将字符串X 连接到字符串Y 后面
答案: 【 求字符串的长度】
8、单选题:
设有如下定义: char *aa[2]={"abcd","ABCD"}; 则以下说法中正确的是 。
选项:
A: aa 数组元素的值分别是"abcd"和ABCD"
B: aa 是指针变量,它指向含有两个数组元素的字符型一维数组
C: aa 数组的两个元素都是指针,分别指向两个字符串的首地址
D: aa 数组的两个元素中各自存放了字符
答案: 【 aa 数组的两个元素都是指针,分别指向两个字符串的首地址】
9、单选题:
分析下面函数,以下说法正确的是 。 swap(int *p1,int *p2) { int *p; *p=*p1; *p1=*p2; *p2=*p; }
选项:
A: 交换*p1和*p2的值
B: 正确,但无法改变*p1和*p2的值
C: 交换*p1和*p2的地址
D: 可能造成系统故障,因为使用了空指针
答案: 【 可能造成系统故障,因为使用了空指针】
10、单选题:
请读程序:#include <stdio.h>#include <string.h>void main(){ char*s1="ABCDEF",*s2="aB"; s1++; s2++; printf("%dn", strcmp( s1,s2));} 上面程序的输出结果是 。
选项:
A: 正数
B: 负数
C: 零
D: 不确定的值
答案: 【 正数】
11、单选题:
下面函数的功能是 。 sss(char *s ,char *t ) { while((*s)&&(*t)&&(*t++== *s++)) ; return(*s-*t) ; }
选项:
A: 求字符串的长度
B: 比较两个字符串的大小
C: 将字符串s 复制到字符串t 中
D: 将字符串s 接续到字符串t 中
答案: 【 比较两个字符串的大小】
12、单选题:
有如下程序段 int *p ,a=10 ,b=1 ; p=&a ; a=*p+b ; 执行该程序段后,a 的值为 。
选项:
A: 12
B: 11
C: 10
D: 编译出错
答案: 【 11】
13、单选题:
若有以下定义和语句: double r=99 , *p=&r ; *p=r ; 则以下正确的叙述是 。
选项:
A: 以下两处的*p 含义相同,都说明给指针变量p 赋值
B: 在"double r=99,*p=&r;"中,把r 的地址赋值给了p 所指的存储单元
C: 语句"*p=r;"把变量r 的值赋给指针变量p
D: 语句"*p=r;"取变量r 的值放回r 中
答案: 【 语句"*p=r;"取变量r 的值放回r 中】
14、单选题:
下面程序输出数组中的最大值,由s 指针指向该元素. void main() { inta[10]={6,7,2,9,1,10,5,8,4,3,},*p,*s; for(p=a, s=a;p-a<10; p++) if(【 】)s=p; printf("The max:%d",*s): } 则在if 语句中的判断表达式应该是 。
选项:
A: p>s
B: *p>*s
C: a[p]>a[s]
D: p-a>p-s
答案: 【 *p>*s】
15、单选题:
类型相同的两个指针变量之间,不能进行的运算是 。
选项:
A: <
B: =
C: +
D: -
答案: 【 +】
16、单选题:
设有如下的程序段: char str[ ]="Hello" ; char *ptr ; ptr=str ; 执行上面的程序段后 ,*(ptr+5)的值为 。
选项:
A: 'o'
B: ''
C: 不确定的值
D: 'o'的地址
答案: 【 ''】
17、单选题:
若有以下定义和语句,且0≤i<10则对数组元素的错误引用是( )。 inta[10]={1,2,3,4,5,6,7,8,9,10},*p,i; p=a;
选项:
A: *(a+i)
B: a[p-a]
C: p+i
D: *(&a[i])
答案: 【 p+i 】
18、单选题:
下面各语句行中,不能正确进行字符串赋值操作的语句是
选项:
A: char ST[5]={"ABCDE"};
B: char S[6]={"ABCDE"};
C: char *S; S="ABCDE";
D: char s[50]; scanf("%s",s);
答案: 【 char ST[5]={"ABCDE"};】
19、单选题:
若有以下说明: int a[10]={1,2,3,4,5,6,7,8,9,10} ,*p=a ; 则数值为6的表达式是 。
选项:
A: *p+6
B: *(p+6)
C: *p+=5
D: p+5
答案: 【 *p+=5】
20、单选题:
若有以下定义和语句: int a[10]={1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10} ,*p=a ; 则不能表示a数组元素的表达式是
选项:
A: *p
B: a[10]
C: *a
D: a[p-a]
答案: 【 a[10]】
第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行标号处缺少的语句填写完整。#include<stdio.h>
int main()
{
char c;
printf("Please input a character:");
scanf("%c",&c);
if(c >='A'&&c <= 'Z')
c =_______________;
printf("%cn",c);
return 0;
}
选项:
A: c+32
B: c+48
C: C+65
D: C+97
答案: 【 c+32 】
13、单选题:
执行下列程序,k输入为1时的输出结果是#include <stdio.h>
int main()
{
int k;
scanf("%d",&k);
switch(k)
{
case 1: printf("%d",k++);
case 2: printf("%d",k++);
case 3: printf("%d",k++);
break;
default: printf("Full!");
}
return 0;
}
选项:
A: 123
B: 1
C: 2
D: 3
答案: 【 123】
14、单选题:
编程计算下面的分段函数,根据从键盘输入的x值,在屏幕上输出y值。

程序代码如下,为完成以上功能,请将第13行标号处缺少的代码填写完整。
#include <stdio.h>
#include <math.h>
int main()
{
int x;
double y;
printf("Input x: ");
scanf("%d", &x); // 输入一个整数
if (x > 0)
{
y = exp(-x); //如果大于0,计算y=exp(-x)的值
}
_____________
{
y = 1; //x=0,则y=1
}
else
{
y = -exp(x); //x<0,则y=-exp(x)
}
printf("y=%fn", y);
return 0;
}
选项:
A: else if (x == 0)
B: else if (x = 0)
C: if (x == 0)
D: if (x = 0)
答案: 【 else if (x == 0)】
15、单选题:
以下程序运行后的输出结果是#include <stdio.h>
int main()
{
int a=1,b=2,m=0,n=0,k;
k=(n=b>a)||(m=a<b);
printf("%d,%dn",k,m);
return 0;
}
选项:
A: 1,0
B: 0,0
C: 0,1
D: 1,1
答案: 【 1,0】
16、单选题:
以下程序的功能是计算一元二次方程的根。代码如下,请将第10行标号处缺少的语句填写完整。
![]()
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define EPS 1e-6
int main()
{
float a, b, c, disc, p, q;
printf("Please enter the coefficients a,b,c:");
scanf("%f,%f,%f", &a, &b, &c);
_________________________________ /* a=0时,输出"不是二次方程" */
{
printf("It is not a quadratic equation!n");
exit(0); /* C标准库函数,用于终止整个程序的执行,强制返回操作系统 */
}
disc = b * b - 4 * a * c; /* 计算判别式 */
p = - b / (2 * a);
q = sqrt(fabs(disc)) / (2 * a);
if (fabs(disc) <= EPS) /* 判别式等于0时,输出两相等实根 */
{
printf("x1 = x2 = %.2fn", p);
}
else
{
if (disc > EPS) /* 判别式大于0时,输出两不等实根 */
{
printf("x1 = %.2f, x2 = %.2fn", p+q, p-q);
}
else /* 判别式小于0时,输出两共轭复根 */
{
printf("x1 = %.2f+%.2fi, ", p, q);
printf("x2 = %.2f-%.2fin", p, q);
}
}
return 0;
}
选项:
A: if (fabs(a) <= EPS)
B: if (a <= EPS)
C: if (a=0)
D: if (a<= EPS || a>=-EPS)
答案: 【 if (fabs(a) <= EPS)】
17、单选题:
下列说法错误的是()。
选项:
A: case后的“常量表达式”的类型只能是整型。
B: 若case后面的语句省略不写,则表示它什么也不做。
C: switch语句中的break和default可有可无。
D: 每个case后的“常量表达式”的类型应该与switch后括号内表达式的类型一致。
E: 程序执行到switch语句时,先计算表达式的值,然后自上而下寻找与该值匹配的case常量,找到后则按顺序执行此case后的所有语句,而不再进行判断,直到遇break语句或右花括号}为止。
F: 若所有的case常量都不能与表达式的值相匹配,那么就执行default后面的语句。通常用于处理不在合理区间内的非法数据。
G: 每个case后的常量只起语句标号的作用,所以case常量的值必须互不相同,而且在每个case的语句序列后都有break的情况下,改变case常量出现的次序,不影响程序的运行结果。
H: case后面的表达式不能是含有变量的关系表达式和逻辑表达式,它不能像if语句那样起到判断表达式真假的作用。
答案: 【 case后的“常量表达式”的类型只能是整型。;
若case后面的语句省略不写,则表示它什么也不做。;
switch语句中的break和default可有可无。】
练兵区——单选题——不计入总分
1、单选题:
下面程序代码的功能是判断输入整数的正负性和奇偶性,请将第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)】
2、单选题:
执行以下程序后的输出结果为#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**】
3、单选题:
以下程序运行后的输出结果是#include <stdio.h>
int main()
{
int a=1,b=2,m=0,n=0,k;
k=(n=b>a)||(m=a<b);
printf("%d,%dn",k,m);
return 0;
}
选项:
A: 1,0
B: 0,0
C: 0,1
D: 1,1
答案: 【 1,0】
4、单选题:
以下程序运行后的输出结果是#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】
5、单选题:
编程设计一个简单的计算器程序,要求用户从键盘输入如下形式的表达式: 操作数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】
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、单选题:
执行下列程序,k输入为1时的输出结果是#include <stdio.h>
int main()
{
int k;
scanf("%d",&k);
switch(k)
{
case 1: printf("%d",k++);
case 2: printf("%d",k++);
case 3: printf("%d",k++);
break;
default: printf("Full!");
}
return 0;
}
选项:
A: 123
B: 1
C: 2
D: 3
答案: 【 123】
9、单选题:
编程计算下面的分段函数,根据从键盘输入的x值,在屏幕上输出y值。

程序代码如下,为完成以上功能,请将第13行标号处缺少的代码填写完整。
#include <stdio.h>选项:
#include <math.h>
int main()
{
int x;
double y;
printf("Input x: ");
scanf("%d", &x); // 输入一个整数
if (x > 0)
{
y = exp(-x); //如果大于0,计算y=exp(-x)的值
}
_____________
{
y = 1; //x=0,则y=1
}
else
{
y = -exp(x); //x<0,则y=-exp(x)
}
printf("y=%fn", y);
return 0;
}
A: else if (x == 0)
B: else if (x = 0)
C: if (x == 0)
D: if (x = 0)
答案: 【 else if (x == 0)】
10、单选题:
以下程序的功能是计算一元二次方程的根。代码如下,请将第10行标号处缺少的语句填写完整。

#include <stdio.h>选项:
#include <stdlib.h>
#include <math.h>
#define EPS 1e-6
int main()
{
float a, b, c, disc, p, q;
printf("Please enter the coefficients a,b,c:");
scanf("%f,%f,%f", &a, &b, &c);
_________________________________ /* a=0时,输出"不是二次方程" */
{
printf("It is not a quadratic equation!n");
exit(0); /* C标准库函数,用于终止整个程序的执行,强制返回操作系统 */
}
disc = b * b - 4 * a * c; /* 计算判别式 */
p = - b / (2 * a);
q = sqrt(fabs(disc)) / (2 * a);
if (fabs(disc) <= EPS) /* 判别式等于0时,输出两相等实根 */
{
printf("x1 = x2 = %.2fn", p);
}
else
{
if (disc > EPS) /* 判别式大于0时,输出两不等实根 */
{
printf("x1 = %.2f, x2 = %.2fn", p+q, p-q);
}
else /* 判别式小于0时,输出两共轭复根 */
{
printf("x1 = %.2f+%.2fi, ", p, q);
printf("x2 = %.2f-%.2fin", p, q);
}
}
return 0;
}
A: if (fabs(a) <= EPS)
B: if (a <= EPS)
C: if (a=0)
D: if (a<= EPS || a>=-EPS)
答案: 【 if (fabs(a) <= EPS)】
11、单选题:
从键盘输入三角形的三边长为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); 】
12、单选题:
若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】
13、单选题:
程序功能:从键盘输入一个字符,判别它是否为大写字母。如果是,将它转换成小写字母,如果不是,不转换。在屏幕上输出最后得到的字符。程序代码如下,为实现上述功能,请将第8行标号处缺少的语句填写完整。#include<stdio.h>
int main()
{
char c;
printf("Please input a character:");
scanf("%c",&c);
if(c >='A'&&c <= 'Z')
c =_______________;
printf("%cn",c);
return 0;
}
选项:
A: c+32
B: c+48
C: c+65
D: c+97
答案: 【 c+32】
14、单选题:
程序代码如下:#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】
15、单选题:
以下程序运行后的输出结果是#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】
16、单选题:
下面程序运行后的输出结果是#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】
17、单选题:
下列说法错误的是()。
选项:
A: case后的“常量表达式”的类型只能是整型。
B: 若case后面的语句省略不写,则表示它什么也不做。
C: switch语句中的break和default可有可无。
D: 每个case后的“常量表达式”的类型应该与switch后括号内表达式的类型一致。
E: 程序执行到switch语句时,先计算表达式的值,然后自上而下寻找与该值匹配的case常量,找到后则按顺序执行此case后的所有语句,而不再进行判断,直到遇break语句或右花括号}为止。
F: 若所有的case常量都不能与表达式的值相匹配,那么就执行default后面的语句。通常用于处理不在合理区间内的非法数据。
G: 每个case后的常量只起语句标号的作用,所以case常量的值必须互不相同,而且在每个case的语句序列后都有break的情况下,改变case常量出现的次序,不影响程序的运行结果。
H: case后面的表达式不能是含有变量的关系表达式和逻辑表达式,它不能像if语句那样起到判断表达式真假的作用。
答案: 【 case后的“常量表达式”的类型只能是整型。;
若case后面的语句省略不写,则表示它什么也不做。;
switch语句中的break和default可有可无。】
赋值中的自动类型转换
1、单选题:
在赋值操作中,当赋值表达式左侧的变量的类型与右侧的表达式的类型不一致的时候,下面说法正确的是()。
选项:
A: 在赋值操作中,当赋值运算符左侧的变量的类型与右侧的表达式的类型不一致的时候,会发生自动类型转换,赋值表达式的结果类型是赋值运算符左侧变量的类型。
B: 在赋值操作中,当赋值运算符左侧的变量的类型与右侧的表达式的类型不一致的时候,赋值表达式的结果类型是赋值运算符右侧表达式的类型。
C: 在赋值操作中,只要赋值运算符左侧的变量的类型与右侧的表达式的类型不一致,就会发生数值溢出。
D: 在赋值操作中,当赋值运算符左侧的变量的类型与右侧的表达式的类型不一致的时候,要么发生数值溢出,要么发生数值精度的损失。
答案: 【 在赋值操作中,当赋值运算符左侧的变量的类型与右侧的表达式的类型不一致的时候,会发生自动类型转换,赋值表达式的结果类型是赋值运算符左侧变量的类型。】
第5周——周而复始的循环之道
嵌套循环
1、单选题:
下列说法错误的是( )。
选项:
A: 执行嵌套循环时是先执行内层循环,后执行外层循环。
B: 嵌套循环的内层和外层循环的循环控制变量不能同名。
C: 嵌套循环的循环次数等于外层循环的循环次数与内层循环的循环次数之积。
D: 如果一个循环的循环体中又完整地包含了另一个循环,则称为嵌套循环。
答案: 【 执行嵌套循环时是先执行内层循环,后执行外层循环。】
流程的转移控制
1、单选题:
下面程序段中的break语句是转移到哪里去执行()。for(...)
{
for(...)
{
switch(...)
{
case 1: ...
break;
case 2:...
...
}
A: //code
}
B: //code
}
C: //code
选项:
A: 转到标号A所在的语句行与执行
B: 转到标号B所在的语句行与执行
C: 转到标号C所在的语句行与执行
D: 不进行流程转移,而是继续执行break后面的语句
答案: 【 转到标号A所在的语句行与执行】
程序调试
1、单选题:
下列说法错误的是()。
选项:
A: 程序测试的目的就是验证程序的正确性。
B: 程序中常见的错误有三种:编译错误,链接错误,以及运行时错误。
C: 编译错误通常是由语法错误造成的。
D: 运行时错误是指在程序运行时发生的错误,运行时错误有两种:一种是导致程序的运行结果与预期的不一致,另一种是导致程序无法正常运行。
答案: 【 程序测试的目的就是验证程序的正确性。】
第5周测验
1、单选题:
程序运行后的输出结果是#include <stdio.h>
int main()
{
int i;
for(i=0;i<3;i++)
switch(i)
{
case 0: printf("%d",i);
case 2: printf("%d",i);
default: printf("%d",i);
}
return 0;
}
选项:
A: 000122
B: 022111
C: 021021
D: 012
答案: 【 000122】
2、单选题:
若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是
选项:
A: for( i=1; i<=5; i++ )
{
p=1;
p*=i;
}
B: for(i=1,p=1;i<=5;i++) p*=i;
C: i=1;
p=1;
while ( i<=5 )
{
p*=i;
i++;
}
D: i=1;
p=1;
do {
p*=i;
i++;
} while ( i<=5 );
答案: 【 for( i=1; i<=5; i++ )
{
p=1;
p*=i;
}】
3、单选题:
以下程序执行后的输出结果是#include <stdio.h>
int main( )
{
int x=0,y=5,z=3;
while(z-->0 && ++x<5)
{
y=y-1;
}
printf("%d,%d,%dn",x,y,z);
return 0;
}
选项:
A: 3,2,-1
B: 3,2,0
C: 4,3,-1
D: 5,-2,-5
答案: 【 3,2,-1】
4、单选题:
下面程序的输出是#include <stdio.h>
int main()
{
int y=9;
for( ; y>0; y--)
{
if(y%3==0)
{
printf("%d", --y);
continue;
}
}
return 0;
}
选项:
A: 852
B: 741
C: 963
D: 875421
答案: 【 852 】
5、单选题:
爱因斯坦数学题。爱因斯坦曾出过这样一道数学题:有一条长阶梯,若每步跨2阶,最后剩下1阶;若每步跨3阶,最后剩下2阶;若每步跨5阶,最后剩下4阶;若每步跨6阶,最后剩下5阶;只有每步跨7阶,最后才正好1阶不剩。请问,这条阶梯共有多少阶?代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>
int main()
{
int x = 1, find = 0;
while (__________)
{
if (______________________)
{
printf("x = %dn", x);
find = 1;
}
x++;
}
return 0;
}
选项:
A: 第5行: !find第7行: x%2==1 && x%3==2 && x%5==4 && x%6==5 && x%7==0
B: 第5行: find==1第7行: x%2==1 && x%3==2 && x%5==4 && x%6==5 && x%7==0
C: 第5行: find
