C语言程序设计试题十一 《C语言程序设计》试题十一
一、 单项选择题(共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.1869 e10 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.设有语句int a=3;,则执行了语句a+=a-=a*a后,变量a的值是( )
A.3 B.0 C.9 D.-12
6.设int k=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.设int a=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.若有说明语句:char c=’\\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.若有定义int a[10],*p=a;,则p+5表示( ) A.元素a[5]的地址 B.元素a[5]的值 C.元素a[6]的地址 D.元素a[6]的值
)
20.以下与int *q[5];等价的定义语句是( )
A.int q[5]; B.int * q C.int (q[5]) D.int (*q)[5] 21.若有定义int a[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.int a[3][] B.float a(3,4) C.double a[1][4] D.float a(3)(4)
26.若有说明int a[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.int a=b=c=5; B.int a,c, c=5; C.a=5,b=5,c=5; D.a=b=c=5; 二、 填空(20分,每空1分)
1.C语言中的实型变量分为两种类型,它们是( )和( )。
2.C语言中的标识符只能由三种字符组成,它们是( )、( )和( )。 3.若有定义:char c=’\\010’;则变量c中包含的字符个数是( )。
4.C语言提供的三种逻辑运算符是( )、( )、( )。 5.设y为int型变量,请写出描述“y是奇数”的表达式( )。
6.设x,y,z均为int型变量,请写出描述“x或y中有一个小于z”的表达式( )。 7.在C语言中,二维数组元素在内存中的存放顺序是( )。
8.若有定义:double x[3][5];则x数组中行下标的下限为( ),列小标的上限为( )。
9.若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的初值是( ),
a[2][2]得到的初值是( )。
10.若自定义函数要求返回一个值,则应在该函数体中有一条( )语句,若自定义函数要求不返回一个值,则应在该函数说明时加一个类型说明符( )。
11.函数中的形参和调用时的实参都是数组名时,传递方式为( ),都是变量时,传递方式为( )。 三、 读程序(30分) 1. main()
{int a=2,b=3,c; c=a; if (a>b) c=1; else if (a= =b) c=0; else c=-1;
printf (“%d\\n”,c);} 运行结果: 2. main()
{int a=2,b=7,c=5; switch (a>0)
{ case 1: swithch (b<0)
{case 1:printf(“@”);break; case 2:printf(“!”);break; }
case 0: switch (c= =5)
{ case 0:printf(“*”);break; case 1:printf(“#”),break; default:printf(“#”);break; }
default:printf(“&”); 运行结果: } printf (“\\n”); }
3.#include main() { int i;for (i=1;i<=5;i++) switch (i%5)
{ case 0:printf(“*”);break; case 1:printf(“#”);break; default:printf(“\\n”);
case 2:printf (“&”); 运行结果: } } 4. main()
{ int i,b,k=0; for (i=1;i<=5;i++)
{b=i%2;
while (b-->=0) k++;
} 运行结果: printf (“%d,%d”,k,b); }
5. #include main()
{ char ch[7]={“12ab56”}; int i,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()
{ int a=2,i; for (i=0;i<3;i++) printf (“%4d”,f(a)); } f(int a)
{ int b=0;static int c=3;
b++;c++; 运行结果: return(a+b+c); }
四、 编写程序(20分)
1. 从键盘输入的10个整数中,找出第一个能被7整除的数。若找到,打印此数后退出循环;若未找到,打
印“not exist”。
2. 已有变量定义和函数调用语句:int x=57;isprime(x);函数isprime()用来判断一个整数a是否是素数,
若是素数,函数返回1,否则返回0。请编写isprime函数。 insprime( int a) {„„}; {„„}
一、 单项选择题(共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. x9. 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); }