报名本机构合作学校,赠送复习资料,复习课程,确保录取。并且可以申请学校奖学金500元~1500元不等!
第一周单元测试
1、【单选题】以下关于C语言说法错误的是( )。
A、C语言简洁、紧凑
B、C语言程序习惯使用大写英文字母
C、C语言可以直接对硬件进行操作
D、C语言使用大括号对表示程序的结构层次范围
2、【单选题】以下不正确的C语言标识符是( )。
A、XYZ
B、xyz
C、x_yz
D、xy.z
3、【单选题】以下正确的C语言标识符是( )。
A、%d
B、b+c
C、x123
D、D.test!
4、【单选题】一个C语言程序的执行是从( )。
A、第一条语句开始,直到最后一条语句结束
B、main()函数开始,直到main()函数结束
C、第一个函数开始,直到最后一个函数结束
D、main()函数开始,直到最后一个函数结束
5、【单选题】在C语言程序中,main()函数的位置( )。
A、必须作为第一个函数
B、必须作为最后一个函数
C、可以任意
D、必须放在它所调用的函数之后
6、【单选题】一个C程序是由( )。
A、一个或多个函数组成
B、一个主程序和若干个子程序
C、若干个过程组成
D、若干个子程序组成
7、【单选题】C语言源程序的基本单位( )。
A、过程
B、函数
C、子程序
D、标识符
8、【单选题】编辑程序的功能是( )。
A、建立并修改程序
B、将C源程序编译成目标程序
C、调试程序
D、命令计算机执行指定的操作
9、【单选题】C编译程序是( )。
A、C程序的机器语言版本
B、将C源程序编译成目标程序
C、一组机器语言指令
D、命令计算机执行指定的操作
10、【单选题】C编译程序能发现源程序的( )。
A、程序的设计逻辑错误
B、程序的注释错误
C、书写格式错误
D、语句的语法错误
11、【单选题】带C语言编译器的CodeBlocks集成开发环境不能完成( )。
A、建立并修改源程序
B、将C源程序编译成目标程序
C、运行目标程序并查看运行结果
D、设计C程序
12、【单选题】CodeBlocks调试程序进入调试状态后,可以( )。
A、查看当前函数的变量
B、查看当前函数中有效作用域的变量
C、查看任何一个变量
D、当前函数所调用函数里的变量
13、【判断题】一个C语言程序可以有多个main()函数
A、正确
B、错误
14、【判断题】C语言程序区分大小写
A、正确
B、错误
15、【判断题】C语言程序的变量名可以是关键字
A、正确
B、错误
16、【判断题】C语言编译程序可以发现注释错误
A、正确
B、错误
17、【判断题】CodeBLocks集成开发环境,可以设计C程序
A、正确
B、错误
第二周单元测验
1、【单选题】已知字符'A'的ASCII代码值是65,字符变量c1的值是'A',c2的值是'D'。执行语句“printf(%d,%d, c1, c2 - 2);”后,输出的结果是( )。
A、65,66
B、A,B
C、A,68
D、65,68
2、【单选题】字符串\\\ABC\\\的长度是( )。
A、7
B、11
C、5
D、3
3、【单选题】设有整型变量i ,其值为020;整型变量j,其值为20。执行语句: printf(%d,%d\n, i , j); 后,输出结果是( )。
A、16,20
B、20,20
C、20,16
D、16,16
4、【单选题】设整型变量x为5,y为2,结果值为1的表达式是( )。
A、x != y || x >= y
B、 !(y == x / 2)
C、 y != x % 3
D、x > 0 && y < 0
5、【单选题】二进制加法10010100 + 00110010的和为( )。
A、11000110
B、10100110
C、10110110
D、11100110
6、【单选题】属于整型常量的是( )。
A、14
B、14.0
C、14.0E20
D、-14.5
7、【单选题】x, a , b 均为整型变量,执行语句“x = a = 3 , b =( a--);” 后, x、a、b的值依次为( )。
A、3,2,3
B、3,3,2
C、3,2,2
D、2,3,2
8、【单选题】设整型变量x的值为35,则表达式“(x 15) (x | 15)”的值是( )。
A、1
B、0
C、15
D、35
9、【单选题】属于实型常量的是( )。
A、 'A'
B、"120"
C、120
D、1E-1
10、【单选题】设整型变量a为5,使整型变量b 不为2的表达式是( )。
A、b = a / 2;
B、b = 6 - (--a);
C、b = a % 2;
D、b = a > 3 ? 2 : 1;
11、【单选题】设有整型变量n1、n2,其值均为3,执行语句“n2 = (n1++, n2++, ++n1);”后,n2的值是( )。
A、3
B、4
C、5
D、6
12、【单选题】设单精度型变量f、g均为5.0,使f为10.0的表达式是( )。
A、f += g;
B、f -= g + 5;
C、f *= g – 15;
D、f /= g * 10
13、【单选题】表达式“1 ? (0 ? 3 : 2) : (10 ? 1 : 0)”的值为( )。
A、3
B、2
C、1
D、0
14、【单选题】设x、y、z均为实型变量,代数式“x / (yz)”的C表达式写法正确的是( )。
A、x / (y * z)
B、x % y % z
C、x / y * z
D、x % y* z
15、【单选题】下面程序的输出是( )。#include stdio.hvoid main( ){ int x=10, y=3; printf(%d\n,y=x/y);}
A、3
B、1
C、2
D、不确定的值
16、【单选题】下列不正确的转义字符是( )。
A、'\\'
B、'\"'
C、'\084'
D、'\0'
17、【单选题】若有以下定义:char a; int b;float c; double d;则表达式a*b+d-c值的类型为( )。
A、float
B、int
C、char
D、double
18、【单选题】以下程序的输出结果是( )。#include stdio.hvoid main( ) { int a=10,b=10; printf(%d,%d\n, --a, ++b);}
A、8,9
B、10,10
C、9,8
D、9,11
19、【单选题】表达式1.5-7/2+4.3+5%2的值是( )。
A、4.3
B、4.8
C、3.5
D、3.8
20、【单选题】若有以下程序:#include stdio.hvoid main( ){ int k=2,i=2,m; m=(k+=i*=k); printf(%d,%d\n,m,i);}执行后的输出结果是( )。
A、6,4
B、8,6
C、8,3
D、7,4
21、【单选题】能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是( )。
A、a>=10 or a<=0
B、a>=0|a<=10
C、a>=10 &&a<=0
D、a>=10‖a<=0
22、【单选题】已知unsigned int x = 012, y = 0x0f; 则表达式x y的结果为( )。
A、10
B、12
C、9
D、15
23、【单选题】已知unsigned int x = 012, y = 0x0f; 则表达式x | y的结果为( )。
A、15
B、14
C、16
D、13
24、【单选题】已知unsigned int x = 012, y = 0x0f; 则表达式x ^ y的结果为( )。
A、5
B、12
C、15
D、10
25、【单选题】已知unsigned int x = 012, y = 0x0f; 则表达式x (y^y) 的结果为( )。
A、0
B、1
C、15
D、10
26、【单选题】已知unsigned int x = 012, y = 0x0f; 则表达式(x 3) (y 4) 的结果为( )。
A、0
B、10
C、1
D、12
27、【单选题】已知 int a = 5, b = 4; 则表达式 !a ++b运行后,变量a,b的值分别为( )。
A、5,4
B、5,5
C、0,4
D、0,5
28、【单选题】已知 int a = 5, b = 3; 则表达式 a || (b + 4) ((++a) * (b++))运行后,表达式、变量a与b的值分别为( )。
A、1,5,3
B、1,6,4
C、1,6,3
D、0,6,4
29、【单选题】已知 int a = 10, b = 20,c; max = b; 则表达式 c= (a b) (max = a)运行后,变量c与max的值分别为( )。
A、0,20
B、0,10
C、1,20
D、1,10
30、【单选题】已知 unsigned int a = 1, b = 2, c = 3, d = 4; float f = 1.0;则表达式 f =(((a-bd-c)?a++:b++),a*b)运行后,变量f的值为( )。
A、4.0
B、1.0
C、6.0
D、2.0
31、【单选题】在C语言中,表达式“56”的值为( )。
A、1
B、0
C、5
D、6
32、【单选题】有以下程序#include stdio.hvoid main( ){ int a,b,c=290; a=(c/100)%9; b=(-1)(-1); printf(%d,%d\n,a,b);}输出结果是( )。
A、2,1
B、3,1
C、2,0
D、2,-1
33、【单选题】下面程序的输出是( )。#include stdio.hvoid main( ){ int a=-1,b=4,k; k=(a++0)(!(b--=0)); printf(%d,%d,%d%\n,k,a,b);}
A、1,0,3
B、0,0,3
C、0,-1,2
D、1,-1,3
34、【单选题】有以下程序#include stdio.hvoid main( ){ int a,b,d=25; a=d/10%9; b=a(-1); printf(%d,%d\n,a,b);}程序运行后的输出结果是( )。
A、2,1
B、6,1
C、3,1
D、2,0
35、【判断题】在C语言程序中对用到的所有变量都必须先进行定义并指定其数据类型。
A、正确
B、错误
36、【判断题】一个变量在内存中占据一定的存储单元。
A、正确
B、错误
37、【判断题】在C语言程序中语句”float a=b=c=1.0;”是合法的。
A、正确
B、错误
38、【判断题】自增运算符(++)或自减运算符(--)不能用于常量。
A、正确
B、错误
39、【判断题】在C程序的表达式中,为了明确表达式的运算次序,提倡使用小括号”( )”。
A、正确
B、错误
40、【判断题】%运算符要求运算的操作数必须是整型数。
A、正确
B、错误
41、【判断题】关系表达式的值可以是任意整数。
A、正确
B、错误
42、【判断题】在C语言中,逗号运算符的优先级最低。
A、正确
B、错误
43、【判断题】C语言允许混合类型数据之间进行运算。
A、正确
B、错误
44、【判断题】转义字符表示法只能表示字符不能表示数字。
A、正确
B、错误
45、【判断题】在C语言标识符定义中,大小写字母是不加区分的。
A、正确
B、错误
第三周单元测验
1、【单选题】C语言的结构化程序设计所包含的结构是( )。
A、顺序结构、选择结构和循环结构
B、只有顺序结构
C、只有条件结构
D、只有循环结构
2、【单选题】下面哪个语句不便于C语言结构化编程的是( )。
A、goto语句
B、break语句
C、continue语句
D、switch case 语句组
3、【单选题】C语言的流程控制语句不包括( )。
A、表达式语句
B、if语句
C、while语句
D、for语句
4、【单选题】C语言的辅助控制语句不包括( )。
A、swicth ...case语句
B、break语句
C、 continue语句
D、goto语句
5、【单选题】关于C语言的复合语句,下面哪种说法是正确的( )。
A、将若干条语句用括弧{ }括起来就构成了复合语句;
B、复合语句破坏了程序的结构化;
C、复合语句的大括弧对{ }加不加都可以
D、一条语句加大括弧对{ }不叫复合语句。
6、【单选题】关于C语言的空语句,下面哪种说法是正确的( )。
A、只有分号的语句就叫空语句;
B、空语句没什么用;
C、空语句只能用于if语句中;
D、空语句只能用于循环语句中。
7、【单选题】关于表达式语句,下面哪种说法是正确的( )。
A、任何一个表达式加上一个分号就是一条表达式语句;
B、表达式和表达式语句是一样的;
C、表达式语句一般是指算术运算表达式语句;
D、表达式语句不会给程序带来错误。
8、【单选题】关于while循环,下面哪种说法是错误的( )。
A、while循环的循环体不能为空语句;
B、while循环的条件表达式是循环进行的条件;
C、while循环的条件表达式和if语句的条件表达式的写法一样;
D、while循环用条件表达式中的条件或者循环体中的break退出循环。
9、【单选题】阅读以下程序:#include stdio.hvoid main( ) { int x; scanf(%d,x); if(x--5) printf(%d, x); else printf(%d, x++); }程序运行后,如果从键盘上输入5,则输出结果是 ( )。
A、4
B、3
C、5
D、6
10、【单选题】有如下程序,该程序的输出结果是( )。#include stdio.hvoid main( ){ int x=1,a=0,b=0; switch(x) { case 0: b++; case 1: a++; case 2: a++; b++; } printf(a=%d,b=%d\n,a,b);}
A、a=2,b=1
B、a=1,b=1
C、a=1,b=0
D、a=2,b=2
11、【单选题】有以下程序#include stdio.hvoid main( ){ int a=16,b=21,m=0; switch(a%3) { case 0: m++; break; case 1: m++; switch(b%2) { default: m++; case 0: m++; break; } } printf(%d\n,m);}程序运行后的输出结果是( )。
A、3
B、1
C、2
D、4
12、【单选题】有以下程序#include stdio.hvoid main( ){ int a=5,b=4,c=3,d=2; if(ab bc) printf(%d\n,d); else if(c-1=d) printf(%d\n,d+1); else printf(%d\n,d+2);}执行后输出结果是( ) 。
A、2
B、3
C、4
D、编译时有错,无结果
13、【单选题】有以下程序#include stdio.hvoid main( ){ int a=3,b=4,c=5,d=2; if(ab) { if(bc) printf(%d ,d++ +1); else printf(%d ,++d +1); } printf(%d\n,d);} 程序运行后的输出结果是( )。
A、4 3
B、2
C、3
D、4 4
14、【单选题】有以下程序#include stdio.hvoid main( ){ int i,s=0; for(i=1;i10;i+=2) s+=i+1; printf(%d\n,s);}程序运行后的输出结果是( )。
A、数1~10中的偶数之和
B、数1~9的累加和
C、数1~10的累加和
D、数1~9中的奇数之和
15、【单选题】以下程序段的输出结果是( )。 int x=3; do { printf(%3d,x-=2); } while(!(--x));
A、1 -2
B、1
C、30
D、死循环
16、【单选题】以下程序中,while循环的循环次数是( )。#include stdio.hvoid main( ){ int i=0; while(i10) { if(i1) continue; if(i==5) break; i++; }......}
A、死循环,不能确定次数
B、1
C、10
D、6
17、【单选题】有以下程序#include stdio.hvoid main( ){ int a = 12, b = -34, c = -56, min; min = a; if(min b) min = b; if(min c) min = c; printf(min = %d, min);}输出结果是( )。
A、min = -56
B、min = -34
C、min = 12
D、-56
18、【单选题】有以下程序#include stdio.hvoid main( ){ int a ; scanf(%d,a); if(a = 0) { if( a % 2 ==0) printf(%d is a positive even number.\n, a); else printf(%d is a positive odd number.\n, a); } else { if( a % 2 ==0) printf(%d is a negative even number.\n, a); else printf(%d is a negative odd number.\n, a); }}若通过键盘输入-11,则运行结果是( )。
A、-11 is a negative odd number.
B、11 is a negative even number.
C、-11 is a positive odd number.
D、-11 is a positive even number.
19、【单选题】有以下程序#include stdio.hvoid main( ){ char c ; while(( c = getchar( )) != '$') { if('A' = c c = 'Z') putchar(c + 32); else if('a' = c c = 'z') putchar(c); }}当输入为abc*%ABC#!$时,运行结果是( )。
A、abcabc
B、ABCABC
C、abc*&%ABC
D、!
E、abc*&%abc
F、!
20、【单选题】输入一个字符,判断该字符是数字、字母、空格还是其它字符。请选择正确的答案填空 ( )。#include stdio.hvoid main( ){ char c ; c = getchar( ); if(____________________________) printf(It is an ENGLISH character.\n); else if('0' = c c = '9') printf(It is a DIGITAL character.\n); else if(c == 32) printf(It is a SPACE character.\n); else printf(It is other character.\n);}当输入为abc*%ABC#!$时,运行结果是( )。
A、('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z')
B、'A' <= c && c <= 'Z'
C、'a' <= c && c <= 'z'
D、'A' <= c && c <= 'z'
21、【单选题】程序读入10个整数,统计其中非负数的个数,并计算非负数之和。请选择正确的答案填空 ( )。#include stdio.hvoid main( ){ int i, a, s = 0, count = 0 ; for(i = 0; i 10; i ++) { scanf(%d,a); if( a 0) continue; ____________________ } printf(s = %d \t count = %d \n, s,count);}
A、s+=a; count++;
B、s += a;
C、count ++;
D、其它选项均不正确
22、【判断题】C语言程序的结构和版式是没有任何规律的;
A、正确
B、错误
23、【判断题】初学者编写C语言的程序不需要养成加注释的习惯;
A、正确
B、错误
24、【判断题】使用复合语句便于程序的结构化;
A、正确
B、错误
25、【判断题】结构化程序设计的三种基本结构是顺序结构、选择结构和循环结构。
A、正确
B、错误
26、【判断题】break语句的功能只是用于退出循环;
A、正确
B、错误
27、【判断题】C语言中一般情况下不推荐使用goto 语句;
A、正确
B、错误
28、【判断题】switch多分支选择语句的功能可以用条件分支嵌套语句来实现
A、正确
B、错误
29、【判断题】空语句就是程序中没有什么作用的语句;
A、正确
B、错误
30、【判断题】while循环和for循环可以相互替代;
A、正确
B、错误
31、【判断题】在一些特定的应用中,用switch多分支选择语句代替条件分支嵌套语句可以提高程序的可读性。
A、正确
B、错误
第四周单元测验
1、【单选题】如下程序,求序列:1、3、5、7.......的前20项之和,请选择正确的答案填空( )。#includestdio.h void main( ) { int i; int sum, t ; //sum代表和, t代表某项 sum = 0 ; t = 1 ; for (i=1 ; ___________ ; i++) { sum + = t; t += 2; } printf( sum = %d,sum);}
A、i<=20
B、i < 20
C、i >=20
D、i >20
2、【单选题】计算2+4+6+8+......+100的值,请选择正确的答案填空( )。#includestdio.h void main( ) { int i; int s, t ; //s代表和, t代表某项 s = 0 ; t = 2 ; for (i=1 ; i = 50 ; i++) { _____________; t += 2; } printf( sum = %d,s);}
A、s =s +t
B、s = t
C、s =s+2
D、s = s * t
3、【单选题】如下程序,求序列:1!, 2!, 3!, 4!………..的前八项之和.请选择正确的答案填空 ( )。#includestdio.hvoid main( ){ int i; ________________ ; //sum代表和, t代表某项 sum = 0 ; t = 1 ; for (i=1;i=8;i++) { sum += t; t *= (i+1); } printf( sum = %ld,sum);}
A、long sum,t
B、 int sum,t
C、long sum
D、float sum,t
4、【单选题】求序列:2!+3!+4!+5!+……+11!的值.请选择正确的答案填空( )。#includestdio.hvoid main( ){ int i; long sum,t ; //sum代表和, t代表某项 sum = 0 ; t = 2 ; for (i=1;i=10;i++) { sum + = t; _________________; } printf(sum = %ld,sum);}
A、 t *=(i+2)
B、sum *=(i+2);
C、 t = i+2
D、sum = i +2
5、【单选题】编一程序,求100-999之间所有的水仙花数, 所谓水仙花数就是说数的百位。十位和个位数的立方和恰好等于它本身。请选择正确的答案填空 ( )。#includestdio.hvoid main( ) { int i,a,b,c; for (_______________________) { a = i/100 ; //求百位数 b =( i- a*100)/10; //求十位数 c = i%10; //求个位数 if( a*a*a + b*b*b +c*c*c == i) { printf( %6d, i ); } } }
A、i =100 ; i<=999 ; i++
B、 i =100 , i<999 , i++
C、i =0 ; i<999 ; i++
D、i =0 , i<=999 , i++
6、【单选题】有以下程序#include stdio.hvoid main( ) { int a=1,b; for(b=1;b=10;b++) { if(a=8) break; if(a%2==1) { a+=5; continue; } a-=3; } printf(%d\n,b); }程序运行后的输出结果是( )。
A、4
B、5
C、6
D、3
7、【单选题】有以下程序#include stdio.hvoid main( ){ int i; for(i=0;i3;i++) { switch(i) { case 1: printf(%3d,i); case 2: printf(%3d,i); default: printf(%3d,i); } } }执行后输出结果是( )。
A、0 1 1 1 2 2
B、0 1 2
C、0 1 2 0 2 0
D、1 2 0
8、【单选题】下面程序的输出是( )。#include stdio.hvoid main( ){ int y=9; for( ; y0 ; y--) { if(y%3==0) { printf(%3d,--y); continue; } }}
A、 8 5 2
B、 7 4 1
C、 9 6 3
D、 8 7 5 4 3 2
9、【单选题】有以下程序#include stdio.hvoid main( ){ int x,i; for(i=1;i=50;i++) { x=i; if(++x%2==0) if(x%3==0) if(x%7==0) printf(%d,i); }}输出结果是( )。
A、41
B、28
C、27
D、42
10、【单选题】以下程序为求序列:1/2、3/4、5/8、7/16、9/32、……所有大于或等于0.000001的数据项之和。请选择正确的答案填空( )。#includestdio.hvoid main( ){ float sum, a , b ; //sum代表和, a代表分子, b代表分母 sum = 0.0 ; a = 1; //分子赋初值 b = 2 ; //分母赋初值 while (a / b =1e-6) { _________________; a = a + 2; //求下一项分子 b = b * 2; //求下一项分母 } printf(sum = %f\n,sum);}
A、sum += (a / b)
B、sum *= (a / b)
C、sum = a + a/b;
D、sum = a / b
11、【单选题】已知abc + cba = 1333,a, b, c,为一位数,以下程序为求所有可能的a, b, c的程序。请选择正确的答案填空( )。#includestdio.hvoid main( ) { int i,a,b,c; for (i =100 ; i=999 ; i++) { a = i/100 ; //求百位数 b =( i- a*100)/10; //求十位数 c = i%10; //求个位数 if( _______________________) { printf( a=%d,b=%d,c=%d\n,a,b,c ); } } }
A、(a*100+b*10+c+c*100+b*10+a)==1333
B、(a+b+c)*2==1333
C、(a*100+b*10+c+c*100+b*10+a)=1333
D、(a*100+b*10+c)==1333
12、【单选题】以下程序为求两个正整数的最大公约数的程序。请选择正确的答案填空( )。#includestdio.hvoid main( ) { int i, a, b; scanf(%d%d,a,b); for (_______________________ ; i 0 ; i --) { if( (a % i == 0) (b % i == 0)) { printf( the max = %d , i ) ; break ; } } }
A、i = (a<b ? a : b)
B、i = a
C、i = b
D、i = 1000
13、【单选题】以下程序为判断一个正整数是否为素数的程序。请选择正确的答案填空( )。#includestdio.hvoid main( ) { int i, a ; scanf(%d,a); for (i = 2 ; i a ; i ++) { if(________________) { break ; } } if(i = a) { printf(%d is a sushu.\n,a); } else { printf(%d is not a sushu.\n,a); } }
A、a % i = 0
B、a % i == 0
C、a / i == 0
D、a / i = 0
14、【单选题】用100元钱买100只鸡,其中母鸡每只3元,公鸡每只2元,小鸡1元3只,且每种鸡至少买1只。以下程序为计算百钱买百鸡所有可能购买方案的程序。请选择正确的答案填空( )。#includestdio.hvoid main( ){ int a, b, c; //a,b,c分别代表母鸡、公鸡和小鸡数 for (a = 1 ; a = 98 ; a ++) { for (b = 1 ; b = 98 ; b ++) { for (c = 1 ; c = 98 ; c ++) { if(_______________________________________) { printf(muji : %d, gongji: %d, xiaoji: %d\n,a,b,c); } } } }}
A、(a+b+c==100) && (a*3+b*2+c/3 ==100) && (c %3 ==0)
B、(a+b+c=100) && (a*3+b*2+c/3 =100) && (c %3 =0)
C、a+b+c==100
D、a*3+b*2+c/3 =100
15、【单选题】计算1!, 2!, 3!, ……,10! 的值,并输出结果。请选择正确的答案填空( )。#includestdio.hvoid main( ){ int i; long int s =1 ; //s代表阶乘的结果 for (i=1;i=10;i++) { ______________________; printf(%d! = %ld, i, s); }}
A、s *= i
B、s *= (i+1)
C、s += i
D、s = i +1
16、【判断题】for循环语句中的三个表达式起着不同的作用,表达式1一般用于进入循环前给某些变量赋初值;
A、正确
B、错误
17、【判断题】在for循环语句中,表达式1、表达式2和表达式3都是逗号运算表达式;
A、正确
B、错误
18、【判断题】在C语言编程中应该尽量少用空格或者空行;
A、正确
B、错误
19、【判断题】在C语言编程中,如果出现嵌套的大括弧对{ },使用缩进对齐的格式能增强程序的可读性;
A、正确
B、错误
20、【判断题】C语言的辅助控制语句包括break,continue、return和goto语句;
A、正确
B、错误
21、【判断题】C语言编程中,不提倡把多个语句写在一行中,提倡一行只写一条语句;
A、正确
B、错误
22、【判断题】在C语言编程时,要养成修改代码同时修改相应注释的习惯,以保证注释与代码的一致性。
A、正确
B、错误
23、【判断题】在C语言编程中,相对独立的程序块之间、变量说明之后加上空行可以增加程序的可读性。
A、正确
B、错误
第五周单元测试
1、【单选题】下列关于C语言程序的结构化设计,说法错误的是( )
A、自顶向下
B、逐步求精
C、模块化设计
D、只有一个源文件,对函数大小没有限制
2、【单选题】定义函数void fun()函数,函数的返回值类型为()
A、int
B、char
C、函数可以返回任意类型的数据
D、函数无返回值
3、【单选题】下面关于函数描述正确的是()
A、函数的定义和调用均可以嵌套
B、函数的定义和调用均不可以嵌套
C、函数的定义可以嵌套,但是调用不可以嵌套
D、函数的定义不可以嵌套,但是调用可以嵌套
4、【单选题】若定义函数时函数的返回类型缺省,则函数的默认数据类型为()
A、int
B、void
C、char
D、float
5、【单选题】一个函数返回值的类型是由( )决定的
A、return语句中表达式的类型
B、在调用函数时临时指定
C、定义函数时指定的函数数据类型
D、调用该函数的主调函数的类型
6、【单选题】下面叙述中正确的是( )
A、对于用户自己定义的函数,在使用前必须加以说明
B、说明函数时只需要说明返回类型
C、函数必须返回一个值
D、空函数不完成任何操作,所以在程序设计中没有用处
7、【单选题】函数的形参可以是()
A、局部自动变量
B、全局变量
C、局部静态变量
D、全局静态变量
8、【单选题】有如下定义的函数:func(int a){ printf(%d,a);}则该函数的返回值类型是()
A、int类型
B、void 类型
C、没有返回值
D、无法确定
9、【单选题】函数内部的局部静态变量,下列说法正确的是( )
A、在函数退出后不被释放,程序执行结束释放
B、被调用时,进入函数分配内存,函数退出被释放
C、没有初始化时,初值是随机值
D、必须使用特定的库函数释放内存
10、【单选题】局部自动变量,下列说法正确的是()
A、进入函数分配内存,退出函数,释放内存
B、进入程序分配内存,退出程序释放
C、进入函数分配内存,退出程序释放内存
D、没有初始化,初值为零
11、【单选题】下列说法不正确的是( )
A、extern不是存储类型,它只是一般全局变量的引用说明
B、全局变量和静态变量,没有初始化,初值为0
C、静态变量是全局寿命,作用域由变量位置来决定
D、全局静态变量和局部静态变量,作用域和寿命相同
12、【单选题】下面程序段运行的结果为()#include stdio.hint f();int f() { static int i=0; int s=1; s+=i; i++; return s; } void main() { int i,a=0; for(i=0;i5;i++) a+=f(); printf(%d\n,a); }
A、25
B、24
C、20
D、15
13、【单选题】下面程序段运行的结果为( )#include stdio.hint try1( );int try1( ){ static int x=3; x++; return x;}void main(){ int i,x; for(i=0; i=2; i++) x=try1( ); printf(%d\n, x);}
A、3
B、5
C、6
D、4
14、【单选题】下面程序的运算结果为( )#include stdio.hvoid fun();int main(){ int a=10; fun(); printf(%3d,a); return 0;}void fun(){ int a=20; printf(%3d,a);}
A、 20 20
B、 10 10
C、 10 20
D、 20 10
15、【单选题】以下正确的函数形式是( )
A、int fun(int x,int y){ z=x+y; return z;}
B、int fun(int x,y){ int z; return z;}
C、int fun(x,y){ int x,y; double z; z=x+y; return z; }
D、int fun(int x,int y){ double z; z=x+y; return z;}
16、【单选题】以下程序的输出结果是()#include stdio.hint i=10;int func();void main(){ int j=1; j=func(); printf(%3d,j); j=func(); printf(%3d,j);}int func(){ int k=0; k=k+i; i=i+10; return k;}
A、 0 0
B、 10 20
C、 10 10
D、 20 20
17、【判断题】函数内定义的局部变量可以在函数运行结束后继续被调用
A、正确
B、错误
18、【判断题】变量根据其作用域的范围可以分作局部变量和全局变量
A、正确
B、错误
19、【判断题】当变量的存储类型定义缺省时,系统默认为变量的存储类型为auto类型,分配在静态区
A、正确
B、错误
20、【判断题】在一个函数内定义的静态局部变量不能被另外一个函数所调用
A、正确
B、错误
21、【判断题】函数调用语句:func(rec1,rec2+rec3,(rec4,rec5));中,含有的实参个数是5
A、正确
B、错误
22、【判断题】变量被定义后,它的作用域和寿命就被确定了,并且不可改变。
A、正确
B、错误
23、【判断题】在同一个作用域不可定义同名变量,在不同的作用域可以定义同名变量
A、正确
B、错误
24、【判断题】函数内部的静态变量,在函数退出后不被释放
A、正确
B、错误
25、【判断题】C语言中函数返回值的类型由return语句中的表达式的类型决定
A、正确
B、错误
26、【判断题】C语言中一般全局变量与静态全局变量生存期不同
A、正确
B、错误
27、【判断题】程序进行编译时,不为形式参数分配存储空间
A、正确
B、错误
28、【判断题】编译器根据函数的原型来检查函数的调用正确与否
A、正确
B、错误
第六周单元测验
1、【单选题】下列说法中正确的是()
A、在C语言中,只有当实参与其对应的形参同名时,才共占同一个存储单元,此时形参值的变化会影响到实参的值
B、函数只有一个返回值,所以有多个return语句编译器会报错
C、无论何种情况,只要把用户自定义的所有函数都放在main函数的前面,就可以不用写函数原型了
D、函数原型是一条语句,不包括函数体
2、【单选题】在调用函数时,如果实参是整型变量,它与对应形参之间的数据传递方式是()
A、地址传递
B、单向值传递
C、由实参传给形参,再由形参传回实参
D、传递方式由用户指定
3、【单选题】若定义函数float *fun( ),则函数fun的返回值为( )
A、一个实数
B、一个指向变量的指针
C、一个指向函数的指针
D、一个实型函数的入口地址
4、【单选题】C程序中各函数之间可以通过多种方式传递数据,下列不能用于实现数据传递的方式是( )
A、参数的形实结合
B、函数返回值
C、全局变量
D、同名的局部变量
5、【单选题】以下结论中只有( )是正确的
A、所有的递归程序均可以采用非递归算法实现
B、只有部分递归程序可以用非递归算法实现
C、所有的递归程序均不可以采用非递归算法实现
D、其余都不正确
6、【单选题】main()函数的数据类型,可以是( )
A、int *
B、void
C、float
D、double
7、【单选题】下面程序段运行的结果为( )#include stdio.hint fun(float x,float y);int fun(float x,float y){ return x y ? x : y;}void main(){ printf(%d,%d\n,fun(3,5),fun(4.8,4.6));}
A、3,4.6
B、5,4.8
C、5,4
D、3,4
8、【单选题】下面程序的运算结果为( )#include stdio.hint fun(int n);int fun(int n){ if(n == 1 || n == 2) return 1; return fun(n-1)+fun(n-2);}void main(){ printf(%d\n,fun(6));}
A、5
B、1
C、2
D、8
9、【单选题】以下程序运行结果是( )#include stdio.hvoid f(int a, int b);void f(int a, int b){ int t; t = a; a = b; b = t;}void main(){ int x = 3, y = 2, z = 1; if (x y) f(x, y); if (y z) f(y, z); if (x y) f(x, y); printf(%d, %d, %d, x, y, z);}
A、1, 2, 3
B、3, 2, 1
C、1, 3, 2
D、2, 3, 1
10、【单选题】以下程序的输出结果是( )#include stdio.hint func(int s);void main( ){ int i,x=0; for(i=0;i4;i++) { x=func(i+1); printf(%3d,x); } printf(\n);}int func(int s){ int x; static int t=3; x=s+t; t++; return x;}
A、 4 5 6 7
B、 4 6 8 10
C、 4 4 4 4
D、 4 3 2 1
11、【单选题】以下程序的执行结果是()#include stdio.hint swap(int a,int b);void main(){ int a,b; a=3,b=10; swap(a,b); printf(a=%d,b=%d\n,a,b); }int swap(int a,int b){ int temp; temp=a; a=b; b=temp; return 0;}
A、a=3,b=10
B、a=10,b=3
C、3,10
D、10,3
12、【单选题】以下程序的执行结果是()#include stdio.hint sum(int k);void main(){ int s,i; for(i=1;i=10;i++) s=sum(i); printf(s=%d\n,s);}int sum(int k){ int x=0; return (x+=k); }
A、s=10
B、s=55
C、55
D、10
13、【单选题】以下程序的执行结果是()#include stdio.hint func(int );void main(){ int a=1,i; for(i=0;i4;i++) { printf(%3d,func(a+i)); }}int func(int b){ static int i; return b+i;}
A、 1 2 3 4
B、 2 3 4 5
C、 1 3 5 7
D、 0 1 2 3
14、【单选题】以下程序的执行结果是()#include stdio.hint multi(int x,int y);void main(){ int a,b,c; a=10,b=12; c=mult(a,b); printf(%d*%d=%d,a,b,c);}int multi(int x,int y){ return x*y;}
A、10*12=120
B、120
C、10
D、12
15、【单选题】以下程序的执行结果是()#include stdio.hint n;void func();void main(){ static int x=6; int y; y=n; func(); printf(x=%d,y=%d,n=%d\n,x,y,n);}void func(){ static int x; int y=10; x=x+20; n=n+2; y=y+n;}
A、x=6,y=0,n=2
B、x=20,y=12,n=2
C、x=6,y=12,n=2
D、x=20,y=0,n=2
16、【判断题】C语言中,函数调用时,形参与实参的个数可以不必保持一致
A、正确
B、错误
17、【判断题】C语言函数间使用值传递数据时,对形参进行写操作,会影响主调函数里相关变量的值
A、正确
B、错误
18、【判断题】C语言中,一个函数可以有多个返回值
A、正确
B、错误
19、【判断题】C语言函数间使用传址方式传递数据时,对形参进行写操作,可以影响主调函数里相关变量的值
A、正确
B、错误
20、【判断题】C语言中,使用全局变量可以使程序设计简单,移植性好
A、正确
B、错误
21、【判断题】函数的递归调用是一个函数直接或间接地调用它自身
A、正确
B、错误
第七周单元测验
1、【单选题】下列一维数组定义正确的是( )
A、int a[3];
B、int size; int a[size];
C、int size=3; int a[size];
D、int a[size=3];
2、【单选题】下列一维数组定义与初始化错误的是( )
A、int a[3] = 0;
B、int a[3] = {0};
C、int a[3] = {1,2,3};
D、int a[3] = {‘a’, ‘b’};
3、【单选题】下列二维数组定义和初始化错误的是( )
A、int a[3][];
B、int a[2][3];
C、int a[3][3] = {1,2,3};
D、int a[2][3] = {{1,2,3}, {1,2,3}};
4、【单选题】在下列语句条件下,二维数组的定义和初始化错误的是( )#define SIZE 9
A、int a[][SIZE];
B、int a[SIZE][SIZE];
C、int a[SIZE*2][SIZE];
D、int a[SIZE/2][SIZE];
5、【单选题】假定int型变量在内存中占2个字节,那么二维数组int a[3][4]所占的字节数为 ( )
A、24
B、6
C、12
D、48
6、【单选题】若有说明:int a[][3]={{1,2,3},{4,5},{6,7}}; 则数组a的第一维的大小为 ( )
A、3
B、2
C、4
D、无法确定
7、【单选题】下列关于数组概念的描述中,错误的是( )
A、数组定义后,它的元素个数是可以改变的
B、一个一维数组中每个元素的数据类型都是相同的
C、数组在定义时可以被初始化,也可以不被初始化
D、数组元素的个数与定义时的每维大小有关
8、【单选题】已知double dd[ ][3]={{1.2, 2.4, 3.6}, {4.8, 5.2},{6.4}}; dd[2][2]的值为( )
A、0.0
B、1.2
C、5.2
D、无法确定
9、【单选题】若有定义语句:int m[][3]={1,2,3,4,5,6,7};,则与该语句等价的是( )
A、int m[][3]={{1,2,3},{4,5,6},{7}};
B、int m[][3]={{1,2},{3,4},{5,6,7}};
C、int m[][3]={{1,2,3},{4,5},{6,7}};
D、int m[][3]={{1},{2,3,4},{5,6,7}};
10、【单选题】程序填空。程序功能:求矩阵的最小值,并记录最小值的行列号。#include stdio.hvoid main(){ int i, j, min; int row=0,column=0; int a[3][3]={{1,2,3},{2,-3,4},{9,4,7}}; min=a[0][0]; for(i=0;i3;i++) { for(j=0;j3;j++) { if(___________) { min=a[i][j]; row=i+1; column=j+1; } } } printf(min=%d,row=%d,column=%d\n,min,row,column);}程序中空白处所填语句正确的为( )
A、min>a[i][j]
B、min=a[i][j]
C、min<a[i][j]
D、min<=a[i][j]
11、【单选题】若有定义语句int a[10]; 以下叙述中正确的是( )
A、a[0]是合法的数组元素,a[10]不是合法的数组元素
B、a[0]是合法的数组元素,a[10]是合法的数组元素
C、a[0]不是合法的数组元素,a[10]不是合法的数组元素
D、a[0]不是合法的数组元素,a[10]是合法的数组元素
12、【单选题】下列有一行是错误的(每行程序前的数字表示行号),程序有错误的行数是( )1 include stdio.h2 void main( )3 {4 int a[3] = {2*3};5 int i, sum=0;6 for( i=0; i3; i++ )7 {8 scanf(%d, a[i]);9 sum += a[i];10 }11 printf( %d\n, sum );12 }
A、第8行有错误
B、第3行有错误
C、第9行有错误
D、第11行有错误
13、【单选题】若有以下数组说明,则a[a[i]]元素数值是( )。int a[12]={1,4,7,10,2,5,8,11,3,6,9,12}, int i=10;
A、6
B、10
C、9
D、5
14、【单选题】以下叙述中正确的是( )
A、语句int a[8]={0};是合法的
B、语句int a[]={0};是不合法的,遗漏了数组的大小
C、语句char a[2]={12, 125, 1};是合法的
D、定义char a[3]; 则数组a在内存中占6个字节
15、【单选题】程序填空。程序功能:计算两个矩阵的乘积。#include stdio.hvoid main(){ int valueA[3][4]={{2,3,-5,0},{12,-1,2,8},{1,12,-2,1}}; int valueB[4][5]={{5,13,0,1,5},{-2,0,4,1,5},{5,3,2,1,0},{0,1,2,0,1}}; int valueC[3][5]={{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}}; int i,j,k; for(i=0; i3; i++) for(j=0; j5; j++) for(k=0; k4;k++) __________________; for(i=0;i3;i++) { printf(\n); for(j=0;j5;j++) printf(%5d,valueC[i][j]); }}程序中空白处所填语句正确的为( )
A、valueC[i][j] += valueA[i][k] * valueB[k][j]
B、valueC[i][j] = valueA[i][k] * valueB[k][j]
C、valueC[i][j] = valueA[i][k] + valueB[k][j]
D、valueC[i][k] = valueA[i][j] * valueB[j][k]
16、【判断题】一维数组在内存中的存储空间是连续的;二维数组在存储中的存储空间每一行是连续,不同行之间则不连续。
A、正确
B、错误
17、【判断题】数组可以动态指定大小。
A、正确
B、错误
18、【判断题】数组初始化时可以仅初始化部分元素的值。
A、正确
B、错误
19、【判断题】数组所占的元素取决于数组的大小,如果数组大小为N,则在该数组所占内存大小为N个字节。
A、正确
B、错误
20、【判断题】同一个数组可以存放不同数据类型的数值。
A、正确
B、错误
21、【判断题】二维数组初始化语句int a[2][2] = {{0},{2}}; 是正确的。
A、正确
B、错误
第八周单元测验
1、【单选题】下列程序的输出结果为( )。#includestdio.hvoid main(){ int a[5] = {1, 3, 5}; int i, sum = 0; for (i = 0; i 5; i++) { sum += a[i]; } printf (sum = %d\n, sum); }
A、sum = 9
B、9
C、sum = 25
D、sum = 15
2、【单选题】下列程序的输出结果为( )。#includestdio.hvoid main() { int a[5] = {1,2,3,4,5}; int i,j,temp; for (i = 0, j = 4; i j; i++, j--) { temp = a[i]; a[i] = a[j]; a[j] = temp; } for (i = 0; i 5; i++) printf (%d, a[i]);}
A、54321
B、12345
C、123
D、13542
3、【单选题】下列程序的输出结果为( )。#include stdio.hvoid main(){ int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}}; int i, j, sum = 0; for (i = 0; i 3; i++) { sum += a[i][i]; } printf (sum = %d\n, sum); }
A、sum = 15
B、sum = 9
C、sum = 25
D、sum = 45
4、【单选题】下列程序的输出结果为( )。#include stdio.hvoid main(){ int k=3, s[2]={0}; s[0]=k; k=s[0]*s[1]*10; printf (%d\n, k); }
A、0
B、不定值
C、30
D、10
5、【单选题】利用选择排序(边比较边交换)算法对一个大小为N的一维数组进行排序,外循环需要()次操作。
A、N-1
B、3
C、N
D、2N
6、【单选题】利用冒泡排序算法对一个大小为N的一维数组进行排序,在第M轮外循环中(M从1开始),内循环需要( )次比较操作。
A、N-M
B、N
C、N-M+1
D、N-M-1
7、【单选题】有下列一组数据,现利用选择排序(边比较边交换)算法对其进行从小到大排序,在排序的过程中需要( )次交换。3 5 8 2
A、3
B、2
C、4
D、5
8、【单选题】有下列一组数据,现利用冒泡排序算法对其进行从大到小排序,在排序的过程中需要()次交换。3 5 8 2
A、3
B、2
C、4
D、5
9、【单选题】程序填空。程序功能:将一组整数从大到小排序。#include stdio.h#define N 5void main( ){ int i, j, temp, score[N] = {12,4,25,8,3}; for ( i=0 ;___________;i++) { for (j=i+1; jN; j++) { if(score[i] score[j]) { temp = score[i]; score[i] = score[j]; score[j] = temp; } } } for ( i=0;iN;i++) printf(%d\t, score[i]);}上面程序代码中空白处所填语句正确的为( )
A、i<N-1
B、i<N
C、i<=N-1
D、i<=N
10、【单选题】程序填空。程序功能:将一组整数从大到小排序。#include stdio.h#define N 5void main( ){ int i, j, temp, score[N] = {12,4,25,8,3}; for ( i=0 ;iN-1;i++) { for (j=i+1;__________; j++) { if(score[i] score[j]) { temp = score[i]; score[i] = score[j]; score[j] = temp; } } } for ( i=0;iN;i++) printf(%d\t, score[i]);}上面程序代码中空白处所填语句正确的为( )
A、j<N
B、j<N-1
C、j<=N
D、j<N-1-i
11、【单选题】下列程序的输出结果为( )。#include stdio.hvoid main(){ int i, j, min; int x = 0, y= 0; int a[3][3] = { {1, 2, 3}, {2, -3, 4},{7, 4, 7} }; min = a[0][0]; for (i = 0; i 3; i++) { for (j = 0; j 3; j++) { if (a[i][j] = min) { min = a[i][j]; x = i+1; y = j+1; } } } printf(min=%d at (x,y):(%d,%d)\n, min, x, y);}
A、min=7 at (x,y):(3,3)
B、min=7 at (x,y):(3,1)
C、min=3 at (x,y):(1,3)
D、7 3 3
12、【单选题】有下列一组数据(3 5 8 2),现利用选择排序(边比较边交换)算法对其进行从小到大排序,第二轮排序(i=1)结束之后数组中的值为()。
A、2 3 8 5
B、3 5 8 2
C、2 5 8 3
D、2 3 5 8
13、【单选题】有下列一组数据(3 5 8 2),现利用冒泡排序算法对其进行从小到大排序,第二轮排序(i=1)结束之后数组中的值为()。
A、3 2 5 8
B、3 5 8 2
C、3 5 2 8
D、2 3 5 8
14、【单选题】下列程序的输出结果为( )。#include stdio.h#define N 4void print(int a[], int n);void InsertSort(int a[], int n);void print(int a[], int n){ int j; for(j=0; jn; j++) { printf(%d,a[j]); } printf(\n);}void InsertSort(int a[], int n){ int i; for(i= 1; in; i++) { if(a[i] a[i-1]) { int j= i-1; int x = a[i]; while(j-1 x a[j]) { a[j+1] = a[j]; j--; } a[j+1] = x; } }} int main(){ int a[N] = {3,1,7,5}; InsertSort(a,N); print(a,N); return 0;}
A、1357
B、3157
C、1375
D、7531
15、【单选题】下列程序的输出结果为( )。#include stdio.hvoid main( ){ int a[] = {1, 2, 3, 4, 5}, i; for(i=1; i5; i++) { printf(%d, a[i]-a[i-1]); }}
A、1111
B、11111
C、1234
D、2345
第九周单元测验
1、【单选题】在“int a = 3, *p = a ; ”语句中,*p的值为( )。
A、变量a的地址值
B、无意义
C、变量p的地址值
D、3
2、【单选题】下面关于指针的运算中,描述( )是错误的。
A、两个指针在一定条件下可以进行相等或者不等的运算
B、可以用一个空指针赋给某个指针
C、两个指针在一定的条件下可以相减
D、两个指针在一定的条件下可以相加
3、【单选题】若有下面语句“int i , a[5] ; int *p ; p=a; ”,则( )是对数组元素的错误表示。
A、*(a+i)
B、p[i]
C、*(p+i)
D、p+i
4、【单选题】将二维数组名作为主调函数传入的实参,则被调函数的形参可以是( )。
A、一维数组指针
B、二维数组指针
C、普通的一级指针
D、普通的二级指针
5、【单选题】下面程序的运算结果为( )。#include stdio.hvoid swap(char *px,char *py);void swap(char *px,char *py){ int t; t=*px; *px=*py; *py=t;}void main( ){ char a=3,b=5; swap(a,b); printf(%d,%d\n,a, b);}
A、3,5
B、3,3
C、5,3
D、5,5
6、【单选题】下面程序的运算结果为( )。#include stdio.hint *fun(int n);int *fun(int n){ static int i, a; for( i=0; in ; i++ ) { a = a + i+1; } return a;}void main( ){ int *p; p = fun(3); printf(%d\n,*p);}
A、1
B、3
C、&a
D、6
7、【单选题】下面程序段运行的结果为( )。#include stdio.hint fun(int *px, int *py);int fun(int *px, int *py){ return (*px *py? *px : *py);}void main( ){ int a=3,b=5; printf(%d-%d\n,fun(a,b),fun(b,a));}
A、5-3
B、3-5
C、5-5
D、3-3
8、【单选题】有以下C语言程序语句: int a[10] = {1,2,3,4,5,6,7,8,9,10},*p=a[3],b; b=p[5]; 运行后 b中的值是:( )。
A、5
B、6
C、8
D、9
9、【单选题】有如下C语言程序段的输出结果为:( )。 int arr[]={6,7,8,9}; int *ptr; ptr=arr; *(ptr+2)+=2; Printf(“%d,%d\n”,*ptr, *(ptr+2));
A、8,10
B、6,8
C、7,9
D、6,10
10、【单选题】设已有定义:int a[10] = {15,12,7,31,47,20,16,28,13,19}, *p;下列语句中正确的是:( )。
A、for(p=a; a<(p+10); a++){ printf("%d\t",*p);}
B、for(p=a; p<(a+10); p++){ printf("%d\t",*p);}
C、for(p=a,a=a+10; p<a; p++){ printf("%d\t",*p);}
D、for(p=a; a<p+10; ++a){ printf("%d\t",*p);}
11、【单选题】若有定义:int x[5], *p=x;,则不能代表x数组首地址的是:( )。
A、x
B、&x[0]
C、&x
D、p
12、【单选题】若有定义:int x[10], *p=x;,则*(p+5)表示:( )。
A、数组元素x[5]的地址
B、 数组元素x[5]的值
C、数组元素x[6]的地址
D、 数组元素x[6]的值
13、【单选题】下面程序的运行结果是: ( )。#include stdio.hvoid main( ){ int a[5]={1,2,3,4,5}; int *p =a; printf(%d-%d,*p, *(p+4));}
A、1-5
B、1-4
C、1-1
D、1-3
14、【单选题】将数组名作为函数传入的实参,则形参接收到的是( )。
A、数组的首地址
B、数组的第一个元素的值
C、数组中全部元素的值
D、数组元素的个数
15、【单选题】若定义函数float *fun( ),则函数fun的返回值为( )。
A、一个实数
B、一个指向变量的指针
C、一个指向函数的指针
D、一个实型函数的入口地址
16、【单选题】若main( )函数带参数,参数个数最多是( )。
A、0
B、1
C、2
D、3
17、【单选题】以下程序运行结果是( )。#include stdio.hvoid f(int *a, int *b);void f(int *a, int *b){ int t; t = *a; *a = *b; *b = t;}void main( ){ int x = 3, y = 2, z = 1; if (x y) f(x, y); if (y z) f(y, z); if (x y) f(x, y); printf(%d, %d, %d, x, y, z);}
A、1, 2, 3
B、3, 1, 2
C、1, 3, 2
D、2, 3, 1
18、【单选题】以下程序的输出结果是( )。#include stdio.hint func(int s);void main ( ){ int a[ ]={1,2,3,4},i,x=0; for(i=0;i4;i++) { x=func(a[i]); printf(%d-,x); } printf(\n);}int func(int s){ int x; static int t=3; x=s+t; t++; return x;}
A、4-5-6-7-
B、4-6-8-10-
C、4-4-4-4-
D、4-3-2-1-
19、【单选题】以下程序的执行结果是( )。#include stdio.hvoid func(int *b,int n);void main( ){ int a[ ]={5,6,7,8}; func(a,4); for(i=0;i4;i++) printf(%3d,a[i]);}void func(int *b,int n){ int i; for(i=0;in;i++) b[i]=2*i;}
A、5 6 7 8
B、10 12 14 16
C、0 2 4 6
D、2 4 6 8
20、【判断题】指针变量和C语言的其它变量不一样,它没有数据类型和存储类型;
A、正确
B、错误
21、【判断题】指针常量和普通的整型常量一样,它是一个整型值;
A、正确
B、错误
22、【判断题】在C语言编程中应该尽量使用数组,少使用指针;
A、正确
B、错误
23、【判断题】变量的地址是指针常量;
A、正确
B、错误
24、【判断题】空指针就是没有什么作用的指针;
A、正确
B、错误
25、【判断题】C语言的指针可以进行关系运算;
A、正确
B、错误
26、【判断题】C语言的指针可以进行任意算术运算;
A、正确
B、错误
27、【判断题】2个C语言的指针不能进行加法运算,加法运算没有意义。
A、正确
B、错误
28、【判断题】2个相同类型的C语言指针,如果它们指向同一片连续的存储空间,如数组,则他们各自可以进行自加或者自减运算;之间也可以进行减法运算;
A、正确
B、错误
29、【判断题】在C语言的指针中,无论是变量还是常量,可以是一级也可以是多级的。
A、正确
B、错误
30、【判断题】数组名作为函数调用时的实参,实际上传递给形参的是数组第一个元素的值。
A、正确
B、错误
31、【判断题】调用函数时,如果实参是数组名,它与对应形参之间的数据传递方式是地址传递。
A、正确
B、错误
32、【判断题】C程序的main函数可以有参数,但参数不能是指针类型。
A、正确
B、错误
第十周测验题
1、【单选题】下面语句( )是错误的。
A、int a[10], *p; p=a;
B、int a[10], *p; p = &a[0];
C、int a[10], *p; p = a++;
D、int a[10], *p; p= a+1;
2、【单选题】对于语句int *p[5] ;,下面的描述( )是正确的
A、p是一个具有5个元素的指针数组,每一个元素是一个 int 型指针
B、p是指向数组的指针变量
C、p是指向元素p[i]的指针变量
D、p[5]是一个int 指针
3、【单选题】如有下面语句void *fun(int) ;声明的函数,则函数返回值是( )
A、地址
B、无返回值
C、整型变量
D、整型指针
4、【单选题】关于指针型函数,哪种说法( )是正确的。
A、函数的形参是指针
B、函数中大量使用指针变量
C、函数的返回值是地址
D、调用该函数的主调函数的类型是指针型
5、【单选题】C语言程序中,如果指针变量做函数的形参,则当函数调用时( )是正确的说法。
A、实参和形参都应该具有相同的数据类型
B、实参和形参都应该是相同类型的指针变量
C、形参是指针常量,实参是指针变量
D、实参是指针常量,形参是指针变量
6、【单选题】关于函数指针变量,下面叙述中正确的是( )。
A、定义的指针变量,用于存放函数的入口地址
B、所谓函数指针就是函数的返回值是指针类型
C、定义的指针变量,用于存放函数的返回值的地址
D、所谓函数指针就是函数的所有形参都是指针
7、【单选题】若函数的形参为一维数组指针,则下列说法中正确的是( )。
A、调用函数时对应实参必须为一维数组名
B、调用函数时对应实参一般为对应的二维数组名
C、调用函数时实参可以为一级指针
D、调用函数时实参可以为二级指针
8、【单选题】关于指针变量的存储类型,下面哪种说法是正确的( )。
A、其它选项的类型均有可能
B、只能是auto型
C、只能是register型
D、只能是static型
9、【单选题】关于二级指针,以下说法正确的是( )。
A、二级指针指向的目标对象是一级指针
B、二级指针是指指向二维数组的指针
C、二级指针指向的目标对象可以是一维数组指针
D、二级指针可以指向整型数组元素
10、【单选题】对于存储类型缺省的局部指针变量,则其存储类型为( )。
A、extern型
B、register型
C、static型
D、auto型
11、【单选题】在调用指针型函数时,如果被调函数的形参是指针变量,则主调和被调函数之间的的数据传递方式是:( )。
A、地址值传递 ,没返回值
B、数值传递,返回值是地址值
C、数值传递,返回值也是数值
D、地址值传递,返回值也是地址值
12、【单选题】下面程序的输出结果为( )。#include stdio.hint main(){ int a[5][2] = {{0, 1}, {2, 3}, {4, 5}, {6, 7}, {8, 9} }; int *p[5]={a[0],a[1],a[2],a[3],a[4]} ; printf(%d-, **(p+1)); printf(%d, *(*p+1)); return 0;}
A、2-1
B、2-2
C、2-4
D、1-1
13、【单选题】下面程序的输出结果为( )#include stdio.hint main(){ int a[2][3] = {{1, 2, 3}, {4, 5, 6} }; int m, *p[2] ={ a[1],a[0]}; printf(%d-, p[0][0]); printf(%d-, *(*(p+1))); printf(%d, *(*p+1)); return 0;}
A、4-1-5
B、1-3-4
C、4-4-5
D、4-3-1
14、【单选题】下面程序运行的结果为( ) #include stdio.h int *fun(int *px, int *py); int *fun(int *px, int *py){ return (*px *py? px : py);}void main( ){ int a=5,b=8; int *p1=fun(a,b),*p2=fun(b,a); printf(%d-%d\n, *p1 , *p2 );}
A、5-8
B、8-5
C、8-8
D、5-5
15、【单选题】如下程序的输出结果如下( )#include stdio.hvoid main( ){ int a[5][2] = {{0, 1}, {2, 3}, {4, 5}, {6, 7}, {8, 9} }; int *p[]={a[0],a[1],a[2],a[3],a[4]}; int **pp[] ={p+4 , p+3 , p+2 , p+1 , p}; int ***ppp = pp ; printf(%d---, ***++ppp); printf(---%d---, **pp[2]); printf(---%d, **--*++ppp+1);}
A、6------4------3
B、6------2------2
C、6------4------2
D、8-------4-----3
16、【单选题】下面程序的输出结果为( )。#include stdio.hint main( ){ int a[2][3] = {{1, 2, 3}, {4, 5, 6} }; int m, (*p)[3] = a+1; printf(%d-, p[0][0]); printf(%d-, *(*(p-1))); printf(%d, *(*p-1)); return 0;}
A、4-1-3
B、1-0-0
C、4-4-5
D、4-3-1
17、【单选题】下面程序的输出结果为( )。#include stdio.hint main( ){ int a[5][2] = {{0, 1}, {2, 3}, {4, 5}, {6, 7}, {8, 9} }; int* p = a[0]; int (*p2)[2] = a; ++p; ++p2; printf(%d-, *p); printf(%d-, **p2); printf(%d, p2[1][1]); return 0;}
A、1-2-5
B、1-2-8
C、1-1-7
D、0-5-8
18、【判断题】int **p, *pa[5]; p = pa ;
A、正确
B、错误
19、【判断题】int **p, (*pa)[5], a[5][5]; p=pa=a ;
A、正确
B、错误
20、【判断题】char *str[5]; scanf(%s,str[0]);
A、正确
B、错误
21、【判断题】int x, *p =x , a[5][5];*p = a[0][0];
A、正确
B、错误
22、【判断题】float a[10]; int *p=a;
A、正确
B、错误
23、【判断题】char *p=hust66; gets(p);
A、正确
B、错误
24、【判断题】char str[]=hust66; printf(%c,*(str+2));
A、正确
B、错误
25、【判断题】float a=1, *b=a, **c=b;
A、正确
B、错误
26、【判断题】float *p,a[2][3]; p=*a + 2;
A、正确
B、错误
27、【判断题】int *p,a[3][4]; p=a;
A、正确
B、错误
第十一周测验题
1、【单选题】下面程序的运行结果是:#include stdio.hvoid main( ){ char *s=hello; s++; printf(%d,*s);}
A、d
B、elo
C、e
D、101
2、【单选题】若有语句char *s1=abcd, *s2=abcd;则下列描述不正确的是:
A、s1与s2所指向的内容是相同的
B、s1与s2是完全相同的指针
C、s1与s2都指向字符串的首地址
D、s1与s2是指向字符串的指针
3、【单选题】若有语句char string[20];则此数组存储字符串的最大长度是:
A、18
B、19
C、20
D、21
4、【单选题】下面程序的运行结果是:#include stdio.hvoid main( ){ char s[]=ABCD,*p; for(p=s+1;ps+4;p++) printf(%s,p);}
A、ABCDBCDCDD
B、ABCD
C、BCD
D、BCDCDD
5、【单选题】下述哪个库函数可以将字符串转换为整数:
A、double atof(char *nPtr)
B、int atoi(char *nPtr)
C、int strlen(char *nPtr)
D、void itoa(int n,char s[],int radix)
6、【单选题】下列能正确定义字符串的语句是:
A、char str[]={'\084'};
B、char str="kx43";
C、char str="";
D、char str[]="\0";
7、【单选题】下列字符数组长度为5的是:
A、char a[10]={'h','a','b','c','d'};
B、char b[]={'h','a','b','e','d','\0'};
C、char c[]={'h','a','b','c','\0'};
D、char d[6]={'h','a','b','c','\0'};
8、【单选题】以下关于字符串的叙述中正确的是:
A、C语言中有字符串类型的常量和变量
B、两个字符串中的字符个数相同时才能进行字符串大小的比较
C、可以用关系运算符对字符串的大小进行比较
D、空串不是空格字符串
9、【单选题】定义了字符串char str[10] = stronger; 下面叙述正确的是:
A、strlen(str)的结果为9
B、sizeof(str)的结果为8
C、通过printf("%s",str);输出这个字符串
D、通过printf("%c",str);输出这个字符串
10、【单选题】下面程序的功能是:#includestdio.hvoid main(){ char ch[80]=123abcdEFG*; int j; long s=0; puts(ch); for(j=0;ch[j]'\0';j++) { if(ch[j]='A'ch[j]='Z') ch[j]=ch[j]+'e'-'E'; } puts(ch); }
A、测字符数组 ch 的长度
B、将数字字符串 ch 转换成十进制数
C、将字符数组 ch 中的小写字母转换成大写
D、将字符数组 ch 中的大写字母转换成小写
11、【单选题】已知 char x[]=hello, y[]={'h','e','a','b','e'}; 则关于两个数组长度的正确描述是:
A、相同
B、x 大于 y
C、x 小于 y
D、其它选项答案都不对
12、【单选题】下面各语句中,能正确进行字符串赋值操作的语句是:
A、char s[5]={"ABCDE"};
B、char s[5]={'A','B','C','D','E','\0'};
C、char *s="ABCDE";
D、char *s;scanf("%s", &s);
13、【单选题】已知:char a[] = program;char *p = a+1;则执行以下语句,不会输出字符a的是:
A、putchar(*p+4);
B、putchar(*(p+4));
C、putchar(a[sizeof(a)-3]);
D、putchar(*(a+5));
14、【单选题】已知:char s[20] = programming, *ps = s; 则不能读取字符串中第3个字符的表达式是:
A、ps+2
B、s[2]
C、ps[2]
D、ps+=2,*ps
15、【单选题】已知:char c[8] = beijing, *s = c; int i;则下面的输出语句中,错误的是:
A、printf("%s\n", s);
B、printf("%s\n", *s);
C、for(i=0;i<7;i++) printf("%c",c[i]);
D、for(i=0;i<7;i++) printf("%c",s[i]);
16、【单选题】已知:char s[100];int i=10;则在下列引用数组元素的语句中,错误的表示形式是:
A、s[i+10]
B、*(s+i)
C、*(i+s)
D、*((s++)+i)
17、【单选题】以下程序的运行结果是: #include stdio.hvoid abc(char *p);void main() { char str[]=morning; abc(str); puts(str);}void abc(char *p){ int i, j; for(i=j=0; *(p+i)!='\0'; i++) { if(*(p+i)'n') { *(p+j)=*(p+i); j++; } } *(p+j)='\0';}
A、morig
B、morning
C、mig
D、or
18、【单选题】以下程序的运行结果是: #include stdio.hvoid main( ){ char *p=hello, *s = world; p=p+2; s++; printf(%s-%s,p, s);}
A、hello-world
B、ello-world
C、hello-orld
D、llo-orld
19、【判断题】字符串是由字符组成的,只能包含英文字母。
A、正确
B、错误
20、【判断题】char string[5]可以用来存放abcde字符串。
A、正确
B、错误
21、【判断题】在字符指针初始化时,可以直接用字符串常量作为初始值。
A、正确
B、错误
22、【判断题】在初始化或程序中向指针赋予字符串,相当于把该字符串复制到指针指向的地址中。
A、正确
B、错误
23、【判断题】使用C语言库函数的gets函数输入字符串时,字符串可以包含空格。
A、正确
B、错误
第十二周测验题
1、【单选题】下面函数的功能是:int fun(char *s,char *t){ while( (*s) (*t) (*t++ == *s++) ); return(*s-*t); }
A、求字符串的长度
B、比较两个字符串的大小
C、将字符串s复制到字符串t中
D、将字符串s接续到字符串t中
2、【单选题】下面函数是输出两个字符串中对应字符相等的字符。请选择正确的选项进行填空: void fun(){ char x[]=programming; char y[]=Fortran; int i=0; while(x[i]!='\0' y[i]!='\0') { if(x[i]==y[i]) printf(%c,_______); else i++; } }
A、x[i++]
B、y[++i]
C、x[i]
D、y[i]
3、【单选题】以下程序运行结果是: #include stdio.hvoid swap(char *x, char *y);void main(){ char s1[] = abc, s2[]=123; swap(s1,s2); printf(%s,%s\n,s1,s2);}void swap(char *x, char *y){ char t; t = *x; *x = *y; *y = t;}
A、1bc,a23
B、123,abc
C、321,cba
D、abc,123
4、【单选题】以下程序运行结果是:#include stdio.h #include string.h void main() { char str[ ] = ABCDEFG; char *p1, *p2; p1 = abcd; p2 = efgh; strcpy (str+1, p2+1); strcpy (str+3, p1+3); printf(%s, str);}
A、Afgd
B、AfgdEFG
C、Abfhd
D、Afghd
5、【单选题】定义compare(char *s1, char *s2)函数,以实现比较两个字符串大小的功能。以下程序运行结果为-32,选择正确答案填空:#include stdio.hint compare(char *s1, char *s2);void main(){ printf(%d\n, compare(abCd, abc));}int compare(char *s1, char *s2){ while(*s1*s2_____) { s1++; s2++; } return *s1-*s2;}
A、*s1!=*s2
B、*s1==*s2
C、*s1=*s2
D、s1!=s2
6、【单选题】下列可以实现两个字符串之间比较的库函数是:
A、void strcmp(char *s1 ,char *s2)
B、int strcmp(char *s1 ,char *s2)
C、char *strcat(char* dest,char *src)
D、itoa(int n,char *s)
7、【单选题】下面描述正确的是:
A、两个字符串所包含的字符个数相同时,才能比较字符串
B、字符个数多的字符串比字符个数少的字符串大
C、字符串"STOP"与"Stop"相等
D、字符串"That"小于字符串"The"
8、【单选题】判断字符串a和b是否相等,应使用:
A、if(a==b)
B、if(a=b)
C、if(strcpy(a,b))
D、if(strcmp(a,b)==0)
9、【单选题】以下正确的叙述是:
A、C语言允许main函数带形参,且形参个数和形参名均可由用户指定
B、C语言允许main函数带形参,形参名只能是argc和argv
C、当main函数带有形参时,传给形参的值只能从命令行中得到
D、若有说明:main(int argc,char *arg),则形参argc的值必须大于1
10、【单选题】在一个C语言程序中,下面叙述正确的是:
A、main函数必须出现在所有函数之前
B、main函数可以有多个
C、main函数可以有参数
D、main函数可以没有参数,也可以去掉main后面的括号
11、【单选题】设有定义:char *cc[2]={1234,5678};则正确的叙述是:
A、cc数组的两个元素中各自存放了字符串"1234"和"5678"的首地址
B、cc数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
C、cc是指针变量,它指向含有两个数组元素的字符型一维数组
D、cc元素的值分别为"1234"和"5678"
12、【单选题】设有定义: char *p[]={Shanghai,Beijing,Hongkong}; 则结果为'j'字符的表达式是:
A、*p[1]+3
B、*(p[3]+1)
C、p[3][1]
D、*(p[1]+3)
13、【单选题】下面程序执行后的输出结果是:#include stdio.h #include string.h void main( ){ char arr[2][4]; strcpy(arr[0],you); strcpy(arr[1],me); arr[0][3]=''; printf(%s,arr);}
A、you&me
B、you
C、me
D、错误
14、【单选题】下面程序的输出是: #include stdio.h#include string.hvoid main(){ char p1[10]=abc,*p2=ABC,str[50]=abc; strcpy(str+2,strcat(p1,p2)); printf(%s\n,str);}
A、ababcABC
B、yzabcABC
C、xyzabcABC
D、zabcABC
15、【单选题】以下程序中,函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址。#include stdio.h#include string.hchar *scmp(char *s1, char *s2);void main( ){ int i; char string[20],str[3][20]; for(i=0;i3;i++) gets(str[i]); strcpy(string,scmp(str[0],str[1])); strcpy(string,scmp(string,str[2])); printf(%s\n,string);}char *scmp(char *s1, char *s2){ if(strcmp(s1,s2)0) return(s1); else return(s2);}若运行时依次输入:abcd、abba和abc三个字符串,则输出结果为:
A、abcd
B、abba
C、abc
D、abca
16、【单选题】如下程序的输出结果如下( )#include stdio.hvoid main( ){ char str[][20]={china,hubei,wuhan}; int i ; for(i=0;i3;i++) { printf(%c-, *(str[i]+i)); }}
A、c-u-h-
B、china-hubei-wuhan-
C、c-b-a-
D、ina-ubei-wuhan-
17、【单选题】以下程序的运行结果是: #include stdio.hvoid main( ){ char str[][20]={china,hubei,wuhan}; int i ; for(i=0;i3;i++) { printf(%s-, str[i]+i); }}
A、china-ubei-han-
B、china-hubei-wuhan-
C、hina-bei-an-
D、ina-ubei-wuhan-
18、【单选题】以下程序的运行结果是: #include stdio.hchar *fun(char *px,char *py);void main( ){ printf(%s%s\n,fun(abc,abcd),fun(1234,123));}char *fun(char *px,char *py){ return (*px *py? px : py);}
A、abcd1234
B、abc1234
C、abcd123
D、abc123
19、【判断题】strcat(strcpy(str1,str2),str3)的功能是:将串str2复制到串str1中后再将串str1连接到串str3之后。
A、正确
B、错误
20、【判断题】char *ps[5]定义了一个包含5个字符指针的一维字符指针数组ps。
A、正确
B、错误
21、【判断题】C语言中,带参数main函数的参数可以在程序内部取得实际值。
A、正确
B、错误
22、【判断题】在C语言程序中,malloc等内存分配函数的使用次数一定要和free相等,并一一配对使用。
A、正确
B、错误
23、【判断题】下面的语句能正确执行: char *str[5]; scanf(%s,str[0]);
A、正确
B、错误
第十三周测验题
1、【单选题】当定义一个结构体变量时,系统为它分配的内存空间大小是( )
A、结构中任意一个成员所需的内存容量
B、结构中第一个成员所需的内存容量
C、结构体中占内存容量最大者所需的容量
D、结构中各成员所需内存容量之和
2、【单选题】定义以下结构体数组struct C{ int x; int y;};struct C s[2]={1,3,2,7};语句printf(%d,s[0].x*s[1].x)的输出结果为( )
A、14
B、6
C、2
D、21
3、【单选题】若有定义语句:struct a{ int a1; int a2;};struct a a3;以下赋值语句正确的是( )
A、a.a1=4;
B、 a2=4;
C、a3={4,5};
D、a3.a2=5;
4、【单选题】某结构型变量定义如下,对该结构型变量中成员的引用形式正确的是( )struct abc{ int s; char ch;};struct abc a1,*p;p=a1;
A、a1->s
B、p->ch
C、p.ch
D、*p.s
5、【单选题】若有以下说明语句struct date{ int year; int month; int day;};struct date birthday;则下面的叙述不正确的是( )
A、struct 是声明结构体类型时用的关键字
B、struct date是用户定义的结构体类型名
C、birthday是用户定义的结构体类型名
D、year, day都是结构体成员名
6、【单选题】以下对结构变量stu1中成员age的非法引用是( )struct student{ int age; int num;};struct student stu1, *p;p=stu1;
A、stu1.age
B、student.age
C、p->age
D、(*p).age
7、【单选题】设有定义struct{ char mark[12]; int num1; double num2; }t1, t2; 若变量均已赋初值,则以下语句中错误的是( )
A、t1 = t2;
B、t2.num1 = t1.num1;
C、t2.mark = t1.mark;
D、t2.num2 = t1.num2;
8、【单选题】下面结构体的定义语句中,正确的是( )
A、struct { int x; int y; int z;}ord;struct ord a;
B、struct { int x; int y; int z;}ord;ord a;
C、struct ord{ int x; int y; int z;};struct ord a;
D、struct { int x, int y, int z;}a;
9、【单选题】下列描述正确的是( )
A、结构体变量名为该结构体变量的存储首地址。
B、结构体数组名为该结构体数组的存储首地址。
C、结构体变量本身的地址就是各成员项存储空间的开始地址。
D、结构体数组中不同元素的同名成员项在内存中连续存储。
10、【单选题】以下scanf函数调用语句中对结构体变量成员的不正确引用是( )struct pupil{ char name [20]; int age; int sex;};struct puppil pup[5],*p;p=pup;
A、scanf("%s", pup[0].name);
B、scanf("%d", &pup[0].age);
C、scanf("%d", &(p->sex));
D、scanf("%d", p->sex);
11、【单选题】以下正确的说法是 ( )
A、结构体类型变量不能初始化。
B、结构体类型变量可以初始化。
C、结构体数组不能初始化。
D、可以用单条赋值语句将一组常量整体赋给一个结构体变量。
12、【单选题】静态结构体类型变量在程序执行期间, ( )
A、所有成员一直驻留在内存中。
B、只有一个成员驻留在内存中。
C、部分成员驻留在内存中。
D、没有成员驻留在内存中。
13、【单选题】设有以下说明语句 struct stu { int a; float b; }stutype; 则下面不正确的叙述是 ( )
A、struct 是结构体类型的关键字。
B、struct stu 是用户定义的结构体类型。
C、stutype 是用户定义的结构体类型名。
D、a 和 b 都是结构体成员名。
14、【单选题】下列说法不正确的是 ( )
A、所定义的结构体类型只描述了其存储结构,未实际占用存储空间。
B、结构体的成员名可以与程序中的变量名相同。
C、结构体变量中的成员可以单独使用。
D、结构体的成员可以为任意结构体类型。
15、【单选题】下列描述说明正确的是 ( )
A、对于一个具体的结构体,它的成员可以根据自己的需要随时更改。
B、结构体与数组一样,其每个成员的数据类型都相同。
C、结构体的每个成员的数据类型必须是基本数据类型。
D、其它描述均不正确。
16、【单选题】下列描述说明正确的是 ( )
A、定义结构类型时,每个成员的数据类型可以不同。
B、不同结构类型的成员名不能相同。
C、结构类型定义时,其成员的数据类型可以是结构类型本身。
D、结构类型定义时,各成员项之间可用分号也可用逗号隔开。
17、【单选题】下列描述说明正确的是 ( )
A、 定义结构类型时,系统按照各成员项的大小分配相应的存储空间。
B、 定义结构类型时,系统按照各成员项中占用空间最大的成员项分配存储空间。
C、结构类型定义时,结构类型本身并不占用存储空间,即系统并不给结构类型分配存储空间。
D、其它说法均不正确。
18、【单选题】下列描述说明正确的是 ( )
A、结构体变量可以作为一个整体进行其值的输入和输出。
B、结构体成员项不可以是结构体。
C、结构体成员项数据类型可以是结构体或其它C语言的数据类型。
D、结构体变量和结构体是相同的概念。
19、【判断题】结构体中的成员项由其数据类型和成员名组成,每个成员项后用分号或逗号作为结束符。
A、正确
B、错误
20、【判断题】结构变量的定义必须在该结构的定义之后。
A、正确
B、错误
21、【判断题】结构数组也具有数组的属性,结构数组名是结构数组的存储首地址。
A、正确
B、错误
22、【判断题】结构指针的增量运算,将跳过一个结构变量的成员项,指向结构变量中的下一个成员项。
A、正确
B、错误
23、【判断题】用结构体变量作实参时,可在函数中对实参中的成员项进行修改。
A、正确
B、错误
第十四周测验题
1、【单选题】运行下列程序段,输出结果是( )struct country{ int num; char name[10];};struct country x[5]={1,China,2,USA,3,France',4,England,5,Spanish};struct country *p;p=x+2;printf(%d, %c, p-num,(*p).name[2]);
A、3,a
B、4,g
C、2,U
D、5,s
2、【单选题】根据下面的定义,能输出Mary的语句是( )struct person{ char name[9]; int age;};struct person class[5]={John,17,Paul,19,Mary,18,Adam,16};
A、printf("%s\n" ,class[1].name);
B、printf("%s\n" ,class[2].name);
C、printf("%s\n" ,class[3].name);
D、printf("%s\n" ,class[0].name);
3、【单选题】运行下列程序,输出结果是( )#include stdio.hstruct country{ int num; char name[20];};struct country x[5]={1,China,2,USA,3,France,4,Englan,5,Spanish};void main( ){ int i; for(i=3;i5;i++) printf(%d%c,x[i].num, x[i].name[0]);}
A、3F4E5S
B、4E5S
C、F4E
D、c2U3F4E
4、【单选题】有以下程序#include stdio.hstruct STU{ char name[9]; char sex; int score[2];};void f(struct STU a [ ]);void f(struct STU a[ ]){ struct STU b=(Zhao,'m', 85,90); a[1]=b;}void main( ){ struct STU c[2]={{Qian,'f', 95, 92},{Sun,'m',98, 99}}; f(c); printf(%s,%c,%d,%d,,c[0].name, c[0].sex, c[0].score[0], c[0].score[1]); printf(%s,%c,%d,%d\n, c[1].name, c[1]sex, c[1].score[0], c[1].score[1]);}程序运行后的输出结果是( )。
A、Zhao, m, 85, 90, Sun, m, 98, 99
B、Zhao, m, 85, 90, Qian, f, 95, 92
C、Qian, f, 95, 92, Sun, m, 98, 99
D、Qian, f, 95,92, Zhao, m, 85, 90
5、【单选题】有以下程序 #includestdio.h#includestring.hstruct A{ int a; char b[10]; double c;};void f(struct A *t);void main(){ struct A a= {1001,ZhangDa,1098.0}; f(a); printf(%d,%s,%6.1f\n,a.a,a.b,a.c);}void f(struct A *t){ t-a=1002; strcpy(t-b,ChangRong); t-c=1202.0;}程序运行后的输出结果是( )
A、1001,zhangDa, 1098.0
B、1002,ChangRong, 1202.0
C、1001,ChangRong, 1098.0
D、1002,zhangDa, 1202.0
6、【单选题】以下对结构体类型变量的定义中,不正确的是( )
A、typedef struct aa{ int n; float m;}AA; AA tdl;
B、
C、define AA struct aaAA{ int n; float m;} tdl;
D、struct aa{ int n; float m;}; struct aa tdl;
E、struct{ int n; float m;}tdl;
7、【单选题】执行下列程序的输出结果是( )#includestdio.hstruct st { int x; int *y; } *p; int dt[4]={10,20,30,40}; struct st aa[4]={50,dt[0],60,dt[1],70,dt[2],80,dt[3]}; void main( ) { p=aa; printf(%d ,++p-x); printf(%d\n,(++p)-x); }
A、10 20
B、50 60
C、51 60
D、60 70
8、【单选题】字符'0'的 ASCII 的十进制数为 48,且数组的第 0 个元素在低位,则以下程序的输出 结果是( )#includestdio.h void main() { union { short i[2]; long k; char c[4]; } r, *s=r; s-i[0]=0x39; s-i[1]=0x38; printf(%c\n, s-c[0]); }
A、39
B、9
C、38
D、8
9、【单选题】下列描述说明正确的是( )
A、联合变量定义时,系统按照各成员项所需空间的大小对各成员分别分配存储空间。
B、联合类型定义时不但确定了该类型的存储结构,还分配相应的存储空间。
C、联合变量定义时,系统按照占用空间最大的成员项分配存储空间。
D、其它说法均不正确。
10、【单选题】若有如下定义: union data { short i; char c; float f; } ;union data b;则联合变量 b 占用内存的字节数是( )
A、1
B、2
C、4
D、7
11、【单选题】如下定义的结构类型变量 a 所占内存字节数是( ) union U { char st[4]; short i; long l; }; struct A { short c; union U u; } a;
A、4
B、5
C、6
D、12
12、【单选题】假定整型变量中,数值的低位存储在低地址字节,高位存储在高地址字节,则以下程序的输出结果是( ) #includestdio.h void main() { union { short i[2]; long k; char c[2]; } r, *s=r; s-k=0x12345678; printf(%x\n, s-c[0]); }
A、12
B、78
C、1234
D、5678
13、【单选题】在以下位字段结构的定义中,不正确的是( )
A、struct test{ unsigned a:1; unsigned b:2; unsigned c:17; }
B、struct test{ unsigned a:1; unsigned b:2; unsigned c:12; }
C、struct test{ unsigned a:1; unsigned b:2; unsigned c:7; }
D、struct test{ unsigned a:1; unsigned : 0; unsigned c: 7; }
14、【单选题】若有以下说明和定义:union dt{ int a; char b; double c;};union dt data;以下叙述中错误的是( )。
A、data 的每个成员起始地址都相同
B、 变量 data 所占的内存字节数与成员 c 所占字节数相等
C、程序段 data.a=5; printf("%f\n",data.c)输出结果为 5.000000
D、data 可以作为函数的实参
15、【单选题】已知学生记录描述为:struct student { int no; char name [20]; char sex; struct{ int year; int month; int day; }brith;};struct student s;设变量s中的“生日”应是“1984年11月11日”,下列对“生日”的正确赋值方式是( )。
A、 year=1984; month=11; day=11;
B、brith.year=1984; brith.month=11; brith.day=11;
C、s.year=1984; s.month=11; s.day=11;
D、s.brith.year=1984; s.brith.month=11; s.brith.day=11;
16、【单选题】若有以下定义和语句:union date{ int i; char c; float f;};union date a;int n;则以下语句正确的是( )
A、a=5
B、a={2,'a',1.2};
C、printf("%d\n", a.i);
D、n=a;
17、【单选题】有以下程序:#includestdio.hstruct STU{ char name[10]; int num; float TotalScore; };void f(struct STU *p);void f(struct STU *p){ struct STU s[2]={{SunDan,20044,550},{Penghua,20045,537}}, *q=s; ++p; ++q; *p=*q;}void main(){ struct STU s[3]={ {YangSan,20041,703},{LiSiGuo,20042,580}}; f(s); printf(%s %d %3.0f\n,s[1].name, s[1].num,s[1].TotalScore);}程序运行后的输出结果是( )。
A、SunDan 20044 550
B、Penghua 20045 537
C、LiSiGuo 20042 580
D、SunDan 20041 703
18、【单选题】有以下程序:#includestdio.h#includestring.hstruct STU { char name[10]; int num;};void f(char *name, int num);void f(char *name, int num){ struct STU s[2]={{SunDan,20044},{Penghua,20045}}; num=s[0].num; strcpy(name,s[0].name);}void main(){ struct STU s[2]={{YangSan,20041},{LiSiGao,20042}},*p; p=s[1]; f(p-name,p-num); printf(%s %d\n,p-name,p-num);}程序运行后的输出结果是( )。
A、SunDan 20042
B、SunDan 20044
C、LiSiGuo 20042
D、YangSan 20041
19、【单选题】有以下程序:#includestdio.hstruct STU { int num; float TotalScore;};void f(struct STU p);void f(struct STU p){ struct STU s[2]={{20044,550},{20045,537}}; p.num=s[1].num; p.TotalScore=s[1].TotalScore;}void main(){ struct STU s[2]= {{20041,703},{20042,580}}; f(s[0]); printf(%d %3.0f\n,s[0].num,s[0].TotalScore);}程序运行后的输出结果是( )。
A、20045 537
B、20044 550
C、20042 580
D、20041 703
20、【单选题】以下叙述正确的是( )
A、位字段结构中位字段成员可以为浮点类型。
B、位字段结构中位字段成员必须为整型类型。
C、位字段结构中无名位字段成员的宽度可不设置。
D、位字段结构中有名位字段成员的宽度可为0。
21、【判断题】位字段结构体内不能定义不带名字的位字段。
A、正确
B、错误
22、【判断题】位字段成员可以在数值表达式中引用,它会被系统自动的转换成整数型。
A、正确
B、错误
23、【判断题】联合体的内存空间在某个时刻只能保持某个成员项的数据。
A、正确
B、错误
24、【判断题】联合变量不可以向另一个相同类型的联合变量整体赋值。
A、正确
B、错误
25、【判断题】一个位段可以跨存储单元存储。
A、正确
B、错误
26、【判断题】联合类型变量中所有成员的起始存储地址都相同。
A、正确
B、错误
第十五周测验题
1、【单选题】1.程序定义的节点结构体如下所示:struct LinkNode{ int data; struct LinkNode* next;};struct LinkNode *p, *s;设节点机构体s中的data已经初始化,且p为已经建立的单链表中的一个节点,将s所指节点插入到p所指节点之后,其语句应为( )
A、s->next = p+1; p->next=s;
B、(*p).next=s; (*s).next=(*p).next;
C、s->next=p->next; p->next=s->next;
D、s->next=p->next; p->next=s;
2、【单选题】关于枚举类型,说法不正确的是( )
A、可以根据需要定义枚举类型的变量,并使用它们。
B、可将枚举元素直接赋给枚举变量。
C、枚举元素的值可以改变。
D、枚举元素的值就是一个非负整数值。
3、【单选题】以下程序依次把从终端输入的字符存放到f文件中,用#作为结束输入的标志, #include stdio.hvoid main(){ FILE *fp; char ch; fp=fopen( fname, w ); while( ( ch=getchar()) !=′#′ ) fputc( __________ ); fclose(fp);}则在横线处应填入的选项是:( )
A、 ch
B、fp,ch
C、ch,fp
D、ch, "fname"
4、【单选题】以下程序用来统计文件中字符的个数,空白处应填()。#include stdio.hvoid main(){ FILE *fp; long num = 0; fp = fopen(fname.dat,r); while( ____________ ) { fgetc(fp); num++; } printf(num = %d\n,num ); fclose(fp); }
A、feof(fp) == NULL
B、!feof(fp)
C、feof(fp)
D、feof(fp) == 0
5、【单选题】读取二进制文件的函数调用形式为: fread(buffer,size,count,fp);其中buffer代表的是( )
A、一个整型变量,代表待读取的数据的字节数。
B、一个内存块的首地址,代表读入数据存放的起始地址。
C、一个文件指针,指向待读取的文件。
D、一个内存块的字节数。
6、【单选题】以下程序的运行结果为( )#include stdio.hvoid main(){ FILE *fp; int i, a[6]={1,2,3,4,5,6},k; fp = fopen(data.dat, w+); for (i=0; i6; i++) { fseek(fp, 0L, 0); fprintf(fp, %d, a[i]); } rewind(fp); fscanf(fp, %d, k); fclose(fp); printf(%d\n, k);}
A、6
B、1
C、123456
D、21
7、【单选题】#include stdio.h#define F(x) 2.84+x#define PR(a) printf(%d ,(int)(a))#define PRINT(a) PR(a);putchar(′\n′)void main(){ PRINT( F(5)*2 );}程序运行后的输出结果为:( )
A、11
B、13
C、15
D、12
8、【单选题】程序定义的结构体和变量如下:struct st{ int n; float t; };struct st a[20];FILE *fp;若文件已正确打开,则以下将文件内容读入数组a中的语句错误的是( )
A、for(i=0; i<20; i++) fread(a[i],sizeof(struct st),1L,fp);
B、 fread(a,sizeof(struct st),20L,fp);
C、for(i=0; i<20; i+=2) fread(a+i,sizeof(struct st),2L,fp);
D、 for(i=0; i<20; i++,i++) fread(&a[i],sizeof(struct st),2L,fp);
9、【单选题】设文件指针fp已定义,执行语句fp=fopen(file,w);后,以下针对文本文件file操作叙述的选项中正确的是( )
A、只能写不能读。
B、写操作结束后可以从头开始读。
C、可以在原有内容后追加写。
D、可以随意读和写。
10、【单选题】以下叙述中错误的是( ):
A、getchar函数用于从磁盘文件读入字符。
B、gets函数用于从标准输入输出设备读入字符串。
C、fputs函数用于把字符串输出到文件。
D、fwrite函数用于以二进制形式输出数据到文件。
11、【判断题】C语言中只有顺序存取一种文件存取方式。
A、正确
B、错误
12、【判断题】已定义枚举元素的值不可以改变。
A、正确
B、错误
13、【判断题】类型定义语句只能是对基本数据类型定义新类型名。
A、正确
B、错误
14、【判断题】typedef语句和#define命令一样,都是在编译预处理阶段进行处理的。
A、正确
B、错误
15、【判断题】文件指针是程序中用FILE定义的指针变量。
A、正确
B、错误
微信扫码添加好友
如二维码无法识别,可拨打 13662661040 咨询。