一、单项选择题(共30分,每题1分)1.在PC机中,‘\n’在内存占用的字节数是()
A.1
B.2
C.3
D.4
2.字符串“ABC”在内存占用的字节数是()
A.3
B.4
C.6
D.8
3.在C语言中,合法的长整型常数是()
A.0L
B.4962710
C.0.054838743
D.2.1869e10
4.执行语句“x=(a=3,b=a--)”后,x,a,b的值依次是()
A.3,3,2
B.3,2,2
C.3,2,3
D.2,3,2
5.设有语句inta=3;,则执行了语句a+=a-=a*a后,变量a的值是()
A.3
B.0
C.9
D.-12
6.设intk=32767;执行k=k+1;后k值为()
A.32768
B.-32768
C.0
D.-1
7.下列正确的标识符是()
A.hot_do
B.a+b
C.test!
D.%y
8.设inta=5,使b不为2的表达式是()
A.b=6-(--a)
B.b=a%2
C.b=a/2
D.b=a>3?2:1
9.执行x=(6*7%8+9)/5;后,x的值为()
A.1
B.2
C.3
D.4
10.执行语句x=(a=3,b=a--)后,x,a,b的值依次为()
A.3,2,3
B.2,3,2
C.3,3,2
D.3,2,2
11.设a=-3;执行(a>0)?a:-a;后,a的值为()
A.3
B.1
C.0
D.-3
12.设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值为()
A.7
B.8
C.9
D.2
13.下面正确的字符常量是()
A.”c”
B.’\\’’
C.’W’
D.‘’
14.若有代数式3ae/bc,则不正确的c语言表达式是()
A.a/b/c*e*3
B.3*a*e/b/c
C.3*a*e/b*c
D.a*e/c/c*3
15.在C语言中,要求运算数必须是整型的运算符是()
A./
B.++
C.!=
D.%
16.若有说明语句:charc=’\72’;则变量c()
A.包含1个字符
B.包含2个字符
C.包含3个字符
D.说明不合法,c值不确定
17.sizeof(float)是()
A.一个双精度型表达式
B.一个整型表达式
C.一种函数调用
D一个不合法的表达式
18.设变量a是整型,f是实型,i是双精度型,则表达式10+’a’+i*f值的数据类型是()
A.int
B.folat
C.double
D.不确定
19.若有定义inta[10],*p=a;,则p+5表示()
A.元素a[5]的地址
B.元素a[5]的值
C.元素a[6]的地址
D.元素a[6]的值
20.以下与int*q[5];等价的定义语句是()
A.intq[5];
B.int*q
C.int(q[5])
D.int(*q)[5]
21.若有定义inta[5],*p=a;则对a数组元素地址的正确引用是()
A.P+5
B.*a+1
C.&a+1
D&a[0]
22.凡是函数中未指定存储类别的局部变量,其隐含的存储类别是()
A.auto
B.static
C.extern
D.register
23.若用数组名作为函数调用的实参,传递给形参的是()
A.数组的首地址
B.数组第一个元素的值
C.数组中全部元素的值
D.数组元素的个数
24.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是()
A.float
B.int
C.long
D.double
25.以下对二维数组a的正确说明是()
A.inta[3][]
B.floata(3,4)
C.doublea[1][4]
D.floata(3)(4)
26.若有说明inta[3][4];则对a数组元素的正确引用是(A)
A.a[2][4]
B.a[1,3]
C.a[1+1][0]
D.a(2)(2)
26.语句while(!E);中的表达式!E等价于()
A.E==0
B.E!=1
C.E!=0
D.E==1
27.C语言中while和do—while循环的主要区别是()
A.do—while的循环体至少无条件执行一次
B.While的循环控制条件比do—while的循环控制条件严格
C.do—while允许从外部转到循环体内
D.do—while循环体不能是复合语句
28.为了避免在嵌套的条件语句if—else中产生二义性,C语言规定:else子句总与()配对
A.缩排位置相同的if
B.其之前最近的if
C.其之后最近的if
D.同一行上的if
29.判断char型变量ch是否为大写字母的正确表达式是()
A.’A’<=ch<=’Z’
B.(ch>=’A’)&(ch<=’Z’)
C.(ch>=’A’)&&(ch<=’Z’
D.(‘A’<=ch)AND(‘Z’>=ch)
30.以下能正确定义整型变量a、b、c并为其赋初值5的语句是()
A.inta=b=c=5;
B.inta,c,c=5;
C.a=5,b=5,c=5;
D.a=b=c=5;
二、填空(20分,每空1分)1.C语言中的实型变量分为两种类型,它们是()和()。
2.C语言中的标识符只能由三种字符组成,它们是()、()和()。
3.若有定义:charc=’\010’;则变量c中包含的字符个数是()。
4.C语言提供的三种逻辑运算符是()、()、()。
5.设y为int型变量,请写出描述“y是奇数”的表达式()。
6.设x,y,z均为int型变量,请写出描述“x或y中有一个小于z”的表达式()。
7.在C语言中,二维数组元素在内存中的存放顺序是()。
8.若有定义:doublex[3][5];则x数组中行下标的下限为(),列小标的上限为()。
9.若有定义:inta[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的初值是(),a[2][2]得到的初值是()。
10.若自定义函数要求返回一个值,则应在该函数体中有一条()语句,若自定义函数要求不返回一个值,则应在该函数说明时加一个类型说明符()。
11.函数中的形参和调用时的实参都是数组名时,传递方式为(),都是变量时,传递方式为()。
三、读程序(30分)1.main()
{inta=2,b=3,c;
c=a;
if(a>b)c=1;
elseif(a==b)c=0;
elsec=-1;
printf(“%d\n”,c);}运行结果:
2.main()
{inta=2,b=7,c=5;
switch(a>0)
{case1:swithch(b<0)
{case1:printf(“@”);break;
case2:printf(“!”);break;
}
case0:switch(c==5)
{case0:printf(“*”);break;
case1:printf(“#”),break;
default:printf(“#”);break;
}
default:printf(“&”);运行结果:
}printf(“\n”);
}
3.#include
main()
{inti;
for(i=1;i<=5;i++)
switch(i%5)
{case0:printf(“*”);break;
case1:printf(“#”);break;
default:printf(“\n”);
case2:printf(“&”);运行结果:
}
}
4.main()
{inti,b,k=0;
for(i=1;i<=5;i++)
{b=i%2;
while(b-->=0)k++;
}运行结果:
printf(“%d,%d”,k,b);
}
5.#include
main()
{charch[7]={“12ab56”};
inti,s=0;
for(i=0;ch[i]>=’0’&&ch[i]<=’9’;i+=2)
s=s*10+ch[i]-‘0’;运行结果:
printf(“%d\n”,s);
}
6.main()
{inta=2,i;
for(i=0;i<3;i++)
printf(“M”,f(a));
}
f(inta)
{intb=0;staticintc=3;
b++;c++;运行结果:
return(a+b+c);
}
四、编写程序(20分)1.从键盘输入的10个整数中,找出第一个能被7整除的数。若找到,打印此数后退出循环;若未找到,打印“notexist”。
2.已有变量定义和函数调用语句:intx=57;isprime(x);函数isprime()用来判断一个整数a是否是素数,若是素数,函数返回1,否则返回0。请编写isprime函数。
insprime(inta)
{……};{……}
参考答案
一、 单项选择题(共30分,每题1分)1.A.2.B.3.A 4. C 5. D
6. B 7. A 8. B 9. B 10. A
11. D 12. A 13. C 14. C 15. D
16. A 17. B 18. C 19. A 20. D
21. D 22. A 23. A 24. B 25. C
26. A 27. A 28. B 29. C 30. A
二、 填空(20分,每空1分)1. 单精度,双精度
2. 数字、下划线、英文字母
3. 1个
4. 与&&、或||、非!
5. y%2!=0
6. x7. 行列
8. 0,4
9. 0,8
10.return,void
11.地址传送,值传送
三、 读程序(30分)1.-1 2.&
3.#&
*
4.8,-2
5.1
6. 7 8 9
四、 编写程序(20分)1.#include
main()
{int i,a;
for (i=1;i<=10;i++)
{scanf(“%d”,&a);
if (a%7= =0) {printf (“%d”,a); break;}
}
if (i>10) printf (“not exist”);
}
2.insprime(int a)
{int i;
for (i=2;i<=a-1;i++)
if (i%2= =0)return(0); =0)return(0);
return(1); }