一、 判断题:
1.O C程序的基本组成单位是函数
2.O C程序可以由一个或多个函数组成
3.X C语言可以不用编译就能被计算机识别执行
4.X main()函数必须放在其它函数之前
5.O 每个C程序中都必须要有一个main()函数
6.X 在C程序中main()函数的位置是固定的
7.X C程序中的main()函数必须放在程序的开始位置。
8.X C语言编译时不检查语法
9.O C程序中注释部分可以出现在程序中任意合适的地方
10.O C程序中一行可以写多条语句
11.X 分号是C语句之间的分隔符,不是语句的一部分
12.X 花括号“{”和“}”只能作为函数体的定界符
13.X C程序中的每行只能写一条语句
14.X C程序的执行总是从main函数开始,在main函数结束
15.X C程序的执行总是从main函数开始,在程序的最后一个函数中结束
16.O ++(i+1);是非法的赋值语句
17.O 用户标识符中不可以出现中划线,但可以出现下划线
18.X 用户标识符中可以出现下划线,但不可以放在用户标识符的开头
19.O C语言中,Area与area是不同的标识符
20.X C语言中有逻辑类型
21.X int a=b=0;是正确的定义语句。
22.X 1.2E0.5是符合C语言语法的实型常量
23.X 假定x和y为double型,则表达式x=2,y=x+3/2的值是3.500000
24.X 可以用关系运算符对字符串的大小进行比较
25.X 两个字符串中的字符个数相同时才能进行字符串大小的比较
26.X 设有定义语句:char b= '\123';则变量b包括4个字符
27.X 若有定义语句:char s[10]="1234567\0\0";,则strlen(s)的值是9
28.X a=b+c=1 是正确的赋值表达式
29.O 若变量a、i已正确定义,且i已正确赋值,则 a=a++=5; 是正确的赋值语句()
30.O 除逗号运算符外,赋值运算符的优先级最低
31.O C语言中,运算对象必须是整型数据的运算符是 %。
32.X 对于单目运算符++、--,它们的运算对象可以是任何变量和常量
33.X 表达式:10!=9的值是 true
34.O 表达式1||2||3||4的值是1。
35.O 若变量c为char类型,则表达式(c>= 'a')&&(c<= 'z') 能正确判断出c为小写字母
36.X 若变量c为char类型,则表达式 'a'<=c<= 'z' 能正确判断出c为小写字母
37.O sizeof(float)的值是4
38.X sizeof(double)是一种函数调用
39.O if(x<y) {x++;y++;} 是正确的if语句。
40.O if(x>y); 是正确的if语句。
41.O 用do-while语句构成的循环,在while后的表达式为零时结束循环
42.X do-while语句构成的循环只能用break语句退出
43.X 对for(表达式1; ; 表达式3)可理解为 for(表达式1;0;表达式3) 。
44.X break语句只能用于switch语句体中
45.X continue语句的作用是:使程序的执行流程跳出包含它的所有循环
46.X 在循环体内使用break语句和continue语句的作用相同
47.X 当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息
48.X 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是6
49.X 若有定义:int a[2][3];对a数组元素正确引用的是a[2][3]
50.X 若有说明int s[3][4]={0};则只有元素s[0][0] 可得到初值0。
51.O 不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值
52.O 字符型数组中可以存放字符串
53.X 可以对整型数组进行整体输入、输出
54.X 函数中的形式参数是局部变量
55.O 在不同的函数中可以使用相同名字的变量
56.O 在一个函数内定义的变量只在本函数范围内有效
57.X 函数的定义和函数的调用均可以嵌套
58.X 函数的定义可以嵌套,但函数的调用不可以嵌套
59.O 函数的形参和实参分别占用不同的存储单元
60.X C语言中,每个函数都可以被其它函数调用(包括main函数)
61.X C语言中,在一个函数内部可以定义另一个函数
62.X 实参和与其对应的形参共同占用一个存储单元
63.X 只有当实参和与其对应的形参同名时才共占用存储单元
64.X 若有以下函数调用语句: fun(a+b,(x,y),fun(n+k,d,(a,B)));在此函数调用语句中实参的个数是6
65.O 用户定义的函数中可以没有return语句
66.X 用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值
67.O 当调用函数时,实参是一个数组名,则向函数传送的是数组的首地址
68.X 若用数组名作为实参,则传递给形参的是数组中全部元素的值。
69.O C语言中形参的默认存储类别是自动(auto)。
70.O C语言中,宏替换没有数据类型限制
71.X C语言中,宏名必须用大写字母表示
72.X C程序对预处理命令行的处理是在程序执行的过程中进行的
73.X 两个字符串中的字符个数相同时才能进行字符串大小的比较
74.O 当调用函数时,实参是一个数组名,则向函数传送的是数组的首地址
75.X break语句只能用于switch语句体中
76.X C程序中的main()函数必须放在程序的开始位置。
77.O if(x>y); 是正确的if语句。
78.O ++(i+1);是非法的赋值语句
79.X 若有以下函数调用语句: fun(a+b,(x,y),fun(n+k,d,(a,B)));在此函数调用语句中实参的个数是6
80.O 函数的形参和实参分别占用不同的存储单元
81.O 在不同的函数中可以使用相同名字的变量
82.X 表达式:10!=9的值是 true
83.O C语言中,宏替换没有数据类型限制
84.O C程序中注释部分可以出现在程序中任意合适的地方
85.X 设有定义语句:char b= '\123';则变量b包括4个字符
86.O 用do-while语句构成的循环,在while后的表达式为零时结束循环
87.O if(x<y) {x++;y++;} 是正确的if语句。
88.X continue语句的作用是:使程序的执行流程跳出包含它的所有循环
89.X 1.2E0.5是符合C语言语法的实型常量
90.X 若有定义语句:char s[10]="1234567\0\0";,则strlen(s)的值是9
91.X 若变量c为char类型,则表达式 'a'<=c<= 'z' 能正确判断出c为小写字母
92.X 可以用关系运算符对字符串的大小进行比较
93.O 每个C程序中都必须要有一个main()函数
94.X 函数的定义和函数的调用均可以嵌套
95.O sizeof(float)的值是4
96.X C语言中有逻辑类型
97.O 字符型数组中可以存放字符串
98.X 分号是C语句之间的分隔符,不是语句的一部分
99.O C程序可以由一个或多个函数组成
100X. 若有说明int s[3][4]={0};则只有元素s[0][0] 可得到初值0。
101.X 用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值 102.X C语言中,每个函数都可以被其它函数调用(包括main函数)
二、 单选题
1. 以下说法中正确的是( C )
A) C语言程序总是从第一个的函数开始执行
B) 在C语言程序中,要调用的函数必须在main()函数中定义
C) C语言程序总是从main()函数开始执行
D) C语言程序中的main()函数必须放在程序的开始部分
2. 下选项中不是C语句的是( A )。
A) {int i; i++; printf(“%d\n”,i);}
B) ;
C) a=5,c=10
D) { ; }
3. 以下选项中不能作为C语言合法常量的是
( )
A) 'cd'
B) 0.1e+6
C) "\a"
D) '\011'
4. 若x,a,b和c均是int型变量,则执行表达式x=(a=1,b=2)后x的结果为( B )。
A) 1
B) 2
C) 3
D) 不确定
5. 以下能正确定义整型变量a,b和c并为其赋初值1的语句是( D )。
A) int a=b=c=1;
B) int a,b,c=1;
C) a=b=c=1;
D) int a=1,b=1,c=1;
6. 字符串"\t\065\xff\n"中的字符数(不算’\0’)为( D )
A) 5
B) 14
C) 8
D) 4
7. 对两个静态函数A和B进行如下初始化:
char A[]="ABCDEF";
char B[]={'A','B','C','D','E','F'};
则下列叙述正确的是( D )。
A) A和B完全相同
B) A和B只是长度相等
C) A和B不相同,A是指针数组
D) A数组长度比B数组长
8. 若有以下定义:
char a;int b;
float c;double d;
则表达式a*b+d-c值的类型为( D )
A) float
B) int
C) char
D) double
9. 在C语言中,运算对象必须是整型数的运算符是( A )
A) %
B) /
C) %和\
D) **
10. 有以下程序
main()
{ int x, y, z;
x=y=1;
z=x++,y++,++y;
printf("%d,%d,%d\n",x,y,z);
}
程序运行后的输出结果是
( C )
A) 2,3,3
B) 2,3,2
C) 2,3,1
D) 2,2,1
11. 以下选项中,当x为大于1的奇数时,值为0的表达式是( D )
A) x%2==1
B) x/2
C) x%2!=0
D) x%2==0
12. 以下程序的输出结果是( C )。
main()
{
int x=10,y=3;
printf("%d\n",y=x/y);
}
A) 0
B) 1
C) 3
D) 不确定的值
13. 若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是( C )
A) -3
B) 9
C) -12
D) 6
14. 有以下程序
main()
{
char a='a',b;
printf("%c,",++a);
printf("%c\n",b=a++);
}
程序运行后的输出结果是
( A )
A) b,b
B) b,c
C) a,b
D) a,c
15. 设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为( C )
A) 0
B) 1
C) 2
D) 3
16. 设x、y、t均为int型变量,则执行语句:x=y=3;t=++x||++y;后,y的值为( C )
A) 不定值
B) 4
C) 3
D) 1
17. 有以下程序段
int k=0
;
while(k=1)k++;
while循环执行的次数是( A )
A) 无限次
B) 有语法错,不能执行
C) 一次也不执行
D) 执行1次
18. 能正确表示逻辑关系“a>=10或a<=0”的C语言表达式是( D )
A) a>=10 or a=10
B) a>=0|a<=10
C) a>=10&&a<=0
D) a>=10||a<=0
19. 表示关系x≤y≤z的c语言表达式为( A )
A) (x<=y)&&(y<=z)
B) (x<=y)AND(y<=z)
C) (x<=y<=z)
D) (x<=y)&(y<=z)
20. 设有:int a=1, b=2, c=3, d=4, m=3, n=3; 执行 (m=a>b)||(n=c>d)后n的值为( A )。
A) 0
B) 1
C) 2
D) 3
21. 以下关于逻辑运算符两侧运算对象的叙述中正确的是
( D )
A) 只能是整数0或1
B) 只能是整数0或非0整数
C) 可以是结构体类型的数据
D) 可以是任意合法的表达式
22. 若x和y都是int型变量,x=100,y=200,且有下面的程序片段:
printf("%d",(x,y));
上面程序片段的输出结果是( A )
A) 200
B) 100
C) 100 200
D) 输出格式符不够,输出不确定的值
23. 在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则( B )
A) 称为函数的直接递归调用
B) 称为函数的间接递归调用
C) 称为函数的循环调用
D) C语言中不允许这样的递归调用
24. 以下程序的输出结果是( D )
main()
{ int k=17;
printf("%d,%o,%x \n",k,k,k);
}
A) 17,021,0x11
B) 17,17,17
C) 17,0x11,021
D) 17,21,11
25. x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是( B )。
A) INPUT x、y、z;
B) scanf("%d%d%d",&x,&y,&z);
C) scanf("%d%d%d",x,y,z);
D) read("%d%d%d",&x,&y;&z);
26. 有以下程序
main()
{
int i;
for(i=0;i<3;i++)
switch(i)
{
case 0: prinft("%d",i);
case 2: prinft("%d",i);
default: prinft("%d",i);
}
}
程序运行后的输出结果是( C )
A) 022111
B) 021021
C) 000122
D) 012
27. C语言中用于结构化程序设计的三种基本结构是( A )
A) 顺序结构、选择结构、循环结构
B) if、switch、break
C) for、while、do-while
D) if、for、continue
28. 在嵌套使用if语句时,C语言规定else总是
( C )
A) 和之前与其具有相同缩进位置的if配对
B) 和之前与其最近的if配对
C) 和之前与其最近的且不带else的if配对
D) 和之前的第一个if配对
29. 设有以下程序片段:
switch(X)
{
case 'A': printf("A");
case 'B': printf("B");
default: printf("error");
}
假设X='A',程序输出结果是( D )
A) A
B) B
C) error
D) ABerror
30. 读程序:
main()
{ int num=0;
while (num<=2)
{ num++; printf("%d ",num);}
}
上面程序的输出结果是( C )
A) 1
B) 2 2
C) 1 2 3
D) 1 2 3 4
31. 以下程序段的执行结果是( A )。
int x=5;
do{printf("%2d\n",x--);}
while(!x);
A) 5
B) 无任何输出
C) 4
D) 陷入死循环
32. 设变量已正确定义,则以下能正确计算f=n!的程序段是 ( D )
A) f=0;
for(i=1;i<=n;i++) f*=i;
B) f=1;
for(i=1;i<n;i++) f*=i;
C) f=1;
for(i=n;i>1;i++) f*=i;
D) f=1;
for(i=n;i>=2;i--) f*=i;D
33. 以下程序的输出结果是( )。
main()
{
int a, b;
for(a=1,b=1;a<=100;a++)
{
if(b>=10) break;
if(b%3==1)
{
b+=3;
continue;
}
}
printf("%d\n",a);
}
A) 101
B) 6
C) 5
D) 4
34. 下列合法的数组定义是( D )。
A) int a[]="string";
B) int a[5]={0,1,2,3,4,5};
C) char a="string";
D) char a[]={0,1,2,3,4,5};
35. 以下定义语句中,错误的是( D )
A) int a[]={1,2};
B) char *a[3];
C) char s[10]="test";
D) int n=5,a[n];
36. 以下正确的数组定义语句是( D )。
A) int y[1][4]={1,2,3,4,5};
B) float x[3][]={{1},{2},{3}};
C) long s[2][3]={{1},{1,2},{1,2,3}};
D) int m[1][4]={4};
37. 以下程序的输出结果是( C )。
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
38. 若有定义语句:int a[3][6]; ,按在内存中的存放顺序,a数组的第10个元素是(
A) a[0][4]
B) a[1][3]
C) a[0][3] B )
D) a[1][4]
39. 以下数组定义中不正确的是( D )
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}};
40. 以下程序的输出结果是( A )。
main()
{
int a[4][4]={{1,3,5},{2,4,6},{3,5,7}};
printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]);
}
A) 0650
B) 1470
C) 5430
D) 输出值不定
41. 以下程序的输出结果是
( B )
main()
{ char cf[3][5]={"AAAA","BBB","CC"};
printf("\"%s\"\n",cf[1]);;
}
A) "AAAA"
B) "BBB"
C) "BBBCC"
D) "CC"
42. 设有数组定义: char array [ ]="China"; 则数组 array所占的空间为( C
A) 4个字节
B) 5个字节
C) 6个字节
D) 7个字节
43. 以下选项中,不能正确赋值的是( A )。
A) char s1[10];s1="Ctest";
B) char s2[]={'C','t','e','s','t'};
C) char s3[20]="Ctest";
D) char *s4="Ctest\n";
44. 给出以下定义:
char x[]="abcdfeg";
char y[]={'a','b','c','d','e','f','g'};
则正确的叙述为( C )。
A) 数组x和数组y等价
B) 数组x和数组y长度相同
C) 数组x的长度大于数组y的长度
D) 数组x的长度小于数组y的长度
45. 若要求从键盘读入含有空格字符的字符串,应使用函数
( B )
A) getc()
B) gets()
C) getchar()
D) scanf()
46. 有语句: )
char str1[10],str2[10]={"books"};
则能将字符串books赋给数组str1的正确语句是( B )。
A) str1={"Books"};
B) strcpy(str1,str2);
C) str1=str2;
D) strcpy(str2,str1);
47. 以下语句的输出结果是( A )
printf("%d\n",strlen("\tc\065\xff\n"));
A) 5
B) 14
C) 8
D) 输出项不合法,无正常输出
48. 若有语句int *point, a=4; 和point=&a; 下面均代表地址的一组选项是( D )。
A) a, point, *&a
B) &*a, &a, *point
C) *&point, *point, &a
D) &a, &*point, point
49. 设已有定义:float x;,则以下对指针变量p进行定义且赋初值的语句中正确的是( D
A) float *p = 1024;
B) int *p = (float)x;
C) float p = &x;
D) float *p = &x;
50. 设有语句:int a=1,b=2,*p1=&a,*p2=&b; 以下可使指针p1指向变量b的赋值语句是( C
A) p1=*p2
B) *p1=p2
C) p1=p2
D) *p1=*p2
51. 有以下程序
main()
{
int a[]={1,2,3,4,5,6,7,8,9,0},*p;
for(p=a;p<a+10;p++)
printf("%d,",*p);
}
程序运行后的输出结果是( A )
A) 1,2,3,4,5,6,7,8,9,0,
B) 2,3,4,5,6,7,8,9,10,1,
C) 0,1,2,3,4,5,6,7,8,9,
D) 1,1,1,1,1,1,1,1,1,1,
52. 若已定义char s[10]; 则在下面表达式中不能表示s[1]的地址的是( B )。
A) s+1
B) s++
C) &s[0]+1
D) &s[1]
53. 在以下选项中,操作不合法的一组是( B )。
A) int x[6], *p; p=&x[0];
B) int x[6], *p; *p=x;
C) int x[6], *p; p=x;
D) int x[6],p; p=x[0];
54. 以下叙述中正确的是( B )
A) 全局变量的作用域一定比局部变量的作用域范围大
B) 静态(static)类别变量的生存期贯穿于整个程序的运行期间 ) )。
C) 函数的形参都属于全局变量
D) 未在定义语句中赋初值的auto变量和static变量的初值都是随机值
55. 有以下程序
main()
{ char s[]="159",*p;
p=s;
printf("%c",*p++);
pritnf("%c",*p++);
}
程序运行后的输出结果是
( A )
A) 15
B) 16
C) 12
D) 59
56. 以下语句或语句组中,能正确进行字符串赋值的是(
A) char *sp; *sp="right!";
B) char s[10]; s="right!";
C) char s[10]; *s="right!";
D) char *sp="right!";
57. 下面程序段的运行结果是( A )。
char *p= "abcdefgh";
p+=2;
printf("%d\n", strlen(strcpy(p, "ABCD")));
A) 6
B) 12
C) 4
D) 7
58. 下面程序段的运行结果是( B )。
char str[ ]= "ABC", *p=str;
printf("%d\n", *(p+3));
A) 67
B) 0
C) 字符'C'的地址
D) 字符'C'
59. 以下程序运行后,输出结果是( C )
main()
{ char *s="abcde";
s+=2;
printf("%d\n",s);}
A) cde
B) 字符c的ASCII码值
C) 字符c的地址
D) 出错
60. 有以下程序:
main()
{ char *p[10]={"abc","aabdfg","dcdbe","abbd","cd"};
printf("%d\n", strlen(p[4]));
}
执行后输出结果是( A )
A) 2 C )
B) 3
C) 4
D) 5
61. 若有语句:char *line[5];,以下叙述中正确的是( A )
A) 定义line是一个数组,每个数组元素是一个基类型为char的指针变量
B) 定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组
C) 定义line是一个指针数组,语句中的*号称为间址运算符
D) 定义line是一个指向字符型函数的指针
62. 设有如下定义: char *aa[2]={"abcd","ABCD"};则以下说法中正确的是( D )。
A) aa数组成元素的值分别是"abcd"和ABCD"
B) aa是指针变量,它指向含有两个数组元素的字符型一维数组
C) aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
D) aa数组的两个元素中各自存放了字符串"abcd"和"ABCD"的首地址
63. 以下函数调用语句中含有( B )个实参。
fun((exp1,exp2),(exp3,exp4,exp5));
A) 1
B) 2
C) 4
D) 5
64. 以下所列的各函数首部中,正确的是( C )
A) void play(var a :integer,var b:integer)
B) void play(int a,b)
C) void play(int a,int b)
D) Sub play(a as integer,b as integer)
65. C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是( B )
A) void
B) int
C) float
D) double
66. 下面的函数调用语句中func函数的实参个数是
( A )
func(f2(v1, v2), (v3, v4, v5), (v6, max(v7, v8)));
A) 3
B) 4
C) 5
D) 8
67. 有以下程序
fun(int x, int y)
{ static int m=0, i=2;
i+=m+1; m=i+x+y; return m;
}
main()
{ int j=1, m=1, k;
k=fun(j,m); printf("%d,",k);
k=fun(j,m); printf("%d\n",k);
}
执行后的输出结果是
( B )
A) 5, 5
B) 5, 11
C) 11, 11
D) 11, 5
68. 以下函数值的类型是
( A )
fun ( float x )
{ float y;
y= 3*x-4;
return y;
}
A) int
B) 不确定
C) void
D) float
69. 以下程序的输出结果是
( C )
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) 2
C) 31
D) 无定值
70. 有以下程序
void f(int x,int y)
{ int t;
if(x<y){ t=x; x=y; y=t; }
}
main()
{ int a=4,b=3,c=5;
f(a,b); f(a,c); f(b,c);
printf("%d,%d,%d\n",a,b,c);
}
执行后输出的结果是( D )
A) 3,4,5
B) 5,3,4
C) 5,4,3
D) 4,3,5
71. 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是(
A) 地址传递
B) 单向值传递
C) 由实参传给形参,再由形参传回实参
D) 传递方式由用户指定
72. 有以下程序
void f(int b[])
{ int i;
for (i=2; i<6; i++)
b[i] *= 2;
}
main() B )
{ int a[10]={1,2,3,4,5,6,7,8,9,10}, i;
f(a);
for (i=0; i<10; i++)
printf("%d,", a[i]);
}
程序运行后的输出结果是( B )
A) 1,2,3,4,5,6,7,8,9,10,
B) 1,2,6,8,10,12,7,8,9,10,
C) 1,2,3,4,10,12,14,16,9,10,
D) 1,2,6,8,10,12,14,16,9,10,
73. 在C语言中,函数返回值的类型最终取决于
( C )
A) 函数定义时在函数首部所说明的函数类型
B) return语句中表达式值的类型
C) 调用函数时主调函数所传递的实参类型
D) 函数定义时形参的类型
74. 调用一个函数,此函数中没有return语句,下列说法正确的是:该函数( A
A) 没有返回值
B) 返回若干个系统默认值
C) 能返回一个用户所希望的函数值
D) 返回一个不确定的值
75. 若有以下调用语句,则不正确的fun函数的首部是( D )
main()
{ …
int a[50],n;
…
fun(n, &a[9]);
…
}
A) void fun(int m, int x[])
B) void fun(int s, int h[41])
C) void fun(int p, int *s)
D) void fun(int n, int A)
76. 有以下程序
void swap(char *x, char *y)
{ char t;
t=*x; *x=*y; *y=t;
}
main()
{ char *s1="abc", *s2="123";
swap(s1,s2); printf("%s,%s\n",s1,s2);
}
程序执行后的输出结果是
( C )
A) 123,abc
B) abc,123
C) 1bc,a23
D) 321,cba
77. 以下程序的输出结果( B )
#include<stdio.h>
sub(int x,int y,int * z) )。
www.99jianzhu.com/包含内容:建筑图纸、PDF/word/ppt 流程,表格,案例,最新,免费下载,施工方案、工程书籍、建筑论文、合同表格、标准规范、CAD图纸等内容。