当前位置:文档之家› C语言考试试题

C语言考试试题

1.若x为int型变量,则执行以下语句后,x的值为-60。

x=6;x+=x-=x*x; x=x-x*x=-30 x=x+x=-602.若有定义int a[2][3]; 则对a数组的第i行第j列元素地址的正确引用为a[i]+j。

3.若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是*p=*&j。

4.以下叙述正确的是define和if都不能定义为用户标识符。

5. 以下程序的输出结果是2。

#define SQR(X) X*Xmain(){ int a=16, k=2, m=1;a/=SQR(k+m)/SQR(k+m); a/=k+k*m+m/k+k*m+mprintf("%d\n",a);}6. 以下程序的输出结果是4。

main(){int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;for(i=0;i<3;i++)for(j=i;j<=i;j++) for(j=i;j<=i;j++)t=t+b[i][j]; { t=t+b[i][j];}printf("%d\n",t); printf("%d\n",t);}_7. 编一个程序,打入星期号,输出该星期的英文名字。

例如,输入"1"则输出"Monday",说明:星期日编号为0,要求用指针数组处理。

main(){char *name[7]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday", "Saturday"};int n;printf("\nInput the number(0-6):");scanf("%d", &n);if ((n< 7) && (n>=0))printf("\nThe name is: %s",name[n]);elseprintf("\nInput error");}8. 局部变量是静态存储变量。

错误9. "文件包含"处理是指一个源文件可以将另一个源文件的内容全部包含进来。

正确10. 若有定义:int *p1,*p2;则p1+p2无实际意义。

正确11. 若在函数内定义形参数组a:int a[3][4];则数组a中各元素可在程序的编译阶段得到初值0。

错误12. 以下不能正确定义二维数组的选项是int a[2][]={{1,2},{3,4}};。

13. 以下程序的输出结果是6 15 15。

int d=1;fun(int p) { static int d=5; d+=p; printf("%d ",d); return(d); }main( ) { int a=3; printf("%d \n", fun(a+fun(d))); }int d=1--int c=1—fun(d)=fun(c)=fun(1)—d=5 d+=c=1—d=6 printf(6 )--a=3 d+=a+fun(d)=a+fun(c)=a+d=9—d=15 printf(15 ) printf(15 )14. 执行输出语句printf("%%%d", 'a')将输出%97。

%%为转义字符15. 设C语言中,一个int型数据在内存中占2个字节,则unsigned int型数据的取值范围为0~65535。

16. 为了判断两个字符串s1和s2长度是否相等,可以使用if (strlen(s1)= = strlen(s2))。

17. 有以下程序,执行后输出结果是1,3,2。

void f(int v , int w){ int t;t=v;v=w;w=t; }main( ){ int x=1,y=3,z=2;if(x>y) f(x,y);else if(y>z) f(y,z);else f(x,z);printf("%d,%d,%d\n",x,y,z); }单向值传递,形参变化不改变实参18. 分析下面程序的运行结果是sum= 10。

#define ADD(x) x+xmain(){ int m=1,n=2,k=3;int sum=ADD(m+n)*k; sum=m+n+m+n*kprintf("sum=%d",sum);}19. 20/7,-20/7的结果均为整型,而20.0/7和-20.0/7结果为实型。

正确20. 执行下面程序,屏幕输出的值是4。

int i;printf("%d\n",(i=2,i++,i+2,++i));21. 以下运算符中优先级最低的是以下运算符中优先级最低的是+= 。

22. 运行下列带有指针数组的程序,输出结果为r,two,完成程序。

main(){char *s[]={"one","two","three"},*p;p=s[2];printf("%c,%s\n",*(p+2),s[1]);}23. 用指针数组的元素指向整型数据,输出a[]数组的各元素。

main(){static int a[5]={1,3,5,7,9};int *num[5]={&a[0],&a[1],&a[2],&a[3],&a[4]};int **p,i;p=num;for(i=0;i<5;i++){printf("%d\t",**p/*num[i]);p++;}}24. 程序的输出为y=-1。

#include<stdio.h>main( ){int y=10; int y=10;while(y--); if(y!=0) --y;printf("y=%d\n",y); printf("y=%d\n",y);}25. 宏定义只是在编译预处理时作简单的字符串替换。

正确26. 有以下程序main(){ int a=5,b=4,c=3,d=2;if(a>b>c) 从左至右:a>b—1,(a>b)>c—1>c—0,故执行else if printf("%d\n",d);else if((c-1>=d)==1)printf("%d\n",d+1);elseprintf("%d\n",d+2);}执行后输出结果是3 。

27. 以下程序段中不能根据x值正确计算出y值的是:y=0;if(x>0) y=1;else if(x<0) y=-1;无x==0;28. 下面程序的输出结果死循环。

main(){ int i,sum; 未给sum赋值for(i=1;i<=3;sum++) sum+=i;printf("%d\n",sum);}29. 以下程序的输出结果是you&me 。

main( ){ char arr[2][4];strcpy(arr,"you");strcpy(arr[1],"me");arr[0][3]='&';printf("%s\n",arr);}30. 若a为整型变量,此循环执行的次数为0次。

for(a=5;a==0;a++)给a赋值5后,判断a==0不成立,循环不执行31. 以下程序执行后输出结果是011122。

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);}}无break32. 若x、y、z、m、n均为int 型变量,写出执行结果7,9,7。

m=10;n=5;x=(--m==n++)?-m:++n; (--m==n++)?—n=6--++n—n=7y=m++;z=n;printf("%d,%d,%d\n",x,y,z);33. C语言提供的预处理功能主要有宏定义、文件包含、条件编译三种。

正确34. 数组char x[]="12345";和char y[]={'1','2','3','4','5'};长度相同。

错误35. 若定义一个只允许本源文件中使用的全局变量,则该变量存储类别是static。

正确36.在下面选项中'081fd'不是正确的转义控制字符。

37.若有以下定义,则对a数组元素的正确引用是*&a[5]。

int a[5],*p=a;38.若已定义char ch[10];则以下表达式中只有ch++不是表示ch[1]的地址。

A.&ch[1]B. &ch[0]+1C. ch++D. ch+139. 在宏定义:#define PI 3.141592中,用宏名PI代替一个字符串。

40. 下面程序的功能为:判断输入的字符串是否"回文"。

请将程序补充完整。

#include <stdio.h>#include <string.h>main(){ char s[81],*p1,*p2;int n;printf("\nInput a string:");gets(s);n=strlen(s);p1=s;p2 = s+n-1;while (p1<p2){ if (*p1!=*p2) break;else { p1++; p2--;}}if (p1<p2) printf("No\n");else printf("Yes\n");}41. 以下程序运行后的输出结果是65535。

main(){ unsigned int a;int b=-1;a=b;printf("%u",a);}-1在计算机内存中以补码形式存放是:11 11 11 11 11 11 1111 (第一位为符号位)unsigned 为无符号数,而对应的11 11 11 11 11 11 1111 为 6553542. 宏定义命令由#define来标识。

相关主题