C语言模拟试题3
- 格式:doc
- 大小:53.50 KB
- 文档页数:7
C语言复习题三 一、单项选择 1.下列程序执行后的输出结果是( )。 (A) G (B) H (C) I (D)J main( ) { int x = „f „ ; printf ( “ % c \n “, „A‟ + ( x – „ a „ + 1 )) ; } 2. 以下程序的输出结果是 main() { int a=3; printf("%d\n",a+(a-=a*a) ); } (A) -6 (B)12 (C) 0 (D) –12 3. 若有以下定义和语句: int x=010,y=0x10,z=10; printf("%d,%d,%d\n”,x,y,z); 则输出结果是( ). (A) 8,16,10 (B) 10,10,10 (C) 8,8,10 (D) 8,10,10 4.以下程序的运行结果是( )。 (A) 2 0 (B)3 1 (C) 3 2 1 (D) 2 1 0 main() {int n = 4 ; while( n--) printf(“%d ”, -- n ) ; } 5.将字符串str2复制到str1中,应用使用( )。 A.str1=str2 B.str1=str2 C.strcpy(str1,str2) D.strcpy(str2,str1) 6.定义字符数组“char a[20],b[20];”后,正确的输入语句是( )。 A.gets(a,b); B.scanf(“%c%c”,a,b); C.scanf(“%s%s”,&a,&b) D.gets(a);gets(b); 7.已知函数fun的定义如下, 则以下说明正确的是( )。 void fun(int a) { „„„„ } A.函数fun没有返回值。 B.调用函数fun,将不再返回主调函数。 C.函数fun的返回值类型不确定。 D.调用函数fun,不需要传递参数。 8.在一个C源程序文件中,若要定义一个只允许在该源文件中所有函数使用的变量,则该变量需要的存储类别是( )。 A.extern B.auto C.static D.register 9.宏定义#define div(a,b) a/b的引用div(x+5,y-5)替换展开后是( )。 A.(x+5)/y-5 B. x+5/y-5; C. x+5/(y-5) D. (x+5)/(y-5); 10.若有如下定义,则下列表达式错误的是( )。 int a[10], *p=a,j=2, k=4,x; A. p[j++]=a[--k]; B. x=a[p-a]; C. a=p+1; D. *p++=a[k++]; 11.假如指针p已经指向变量a,则&*p相当于( )。 A.a B.*p C.&a D.**p 12.下面程序段的输出是:( )。 int a,b,*p1,*p2; a=3;b=3; p1=&a;p2=&b; if (*p1==*p2) printf(“%d,%d”,a*b,*p1=*p2*2); else printf(“%d,%d”,a+b,*p1=*p2+2); A. 18,6 B.8,5 C. 9,6 D.6,5 13.若有以下说明和语句,且0<=i<10,则( )不是数组元素的值。 int a[]={1,2,3,4,5,6,7,8,9,0},*p=a,i; A. *(a+i) B. a[p-a] C. p+i D. *(&a[i]) 14.若共用体变量a定义为“union data{char ch;int x;}a;”,则不正确的语句是( )。 A.a={‘x’,10}; B.a.x=10;a.x++; C.a.ch=’x’;a.ch++; D.a.x=10;a.ch=’x’; 15.对于“union data{char a1; int a2; float a3;}yy;”,sizeof(yy)的值为( )。 A.4 B.5 C.6 D.7 16.下列说法中正确的是( )。 A. 用typedef可以产生新的数据类型。 B. 用typedef既可以声明新的类型名,又可以定义变量。 C. 用typedef不能定义新的数据类型,但可以定义变量。 D. typedef只是用来声明新的类型名,不产生新的数据类型,也不可以定义变量。 17.执行“ struct work{int num; int age; char name[20]}tom;”后,错误语句是( )。 A scanf(“%d,%d,%s”,&tom); B scanf(“%d”,&tom.num); C scanf(“%d”,&tom.age); D scanf(“%s”,tom.name); 18.能将文件位置指针fp移到距离文件开头100个字节位置的函数是( )。 A. fseek(fp, 100L, 0); B. fseek(fp, 100L, 2); C.fseek(fp, 100L, 1); D. fseek(fp, -100L, 1);
二、判断正误 1.C语言程序是由函数构成的,任何C语言程序至少包含一个main()函数。 2.C语言中任何变量必须先定义,后使用。 3.字符串函数strlen返回包括字符串结束标志(ASCII为0的字符)在内的全部的字符个数。 4.定义数组”int a[4][5];”, 此数组的20个元素中下标最大的元素是a[4][5]。 5.以下定义的str1和str2完全等价。 char str1[ ]= “abcdef”; char str2[ ]={‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’}; 6.任何被调函数中都要至少包含一个return语句。 7.如果函数值的类型与“return(表达式);”语句中的表达式的值类型不同,则以函数值的类型为准。 8.凡在定义时不加类型说明的函数,一律自动按整型处理。 9.函数的递归调用是指在调用一个函数的过程中,出现直接或间接地调用该函数本身的现象。 10.数组名作函数的实参和形参时,是把实参数组的起始地址传给形参数组,两个数组共占同一段内存单元。 11.若定义数组a[2][3],则a+1和*(a+1)表示同一个地址。 12.某函数的形参为一个数组名,则调用函数时只能用数组名做对应的实参,不能用指针变量做对应的实参。 13. 共用体内的成员可以是结构体变量,结构体内的成员也可以是共用体变量。 14.若有“int a=7,b=12,c=a&b;”,则变量c的值是4。 15.若有“int a=14,b=15,c=a^b; ” ,则变量c的值是1。 16.在读写文件以前,应该先打开文件,而使用结束以后,必须关闭文件。 17.当已存在一个文件data.txt时,执行函数fopen(data.txt”, “r+”)的功能是:打开文件data.txt,可以读取文件内容、写入新的内容。 18. 语句“fprintf(fp, “%d,%5.2f”,a,b);”中的fp是文件名称。
三、阅读程序,说明每个程序的作用,并回答问题 1. main( ) { int a,b,c,t; scanf(“%d,%d,%d”,&a,&b,&c); if (a>b) {t=a;a=b;b=t;} if (a>c) {t=a;a=c;c=t;} if (b>c) {t=b;b=c;c=t;} printf(“%3d,%3d,%3d”,a,b,c); } 运行时输入9,13,7,输出什么? 2. main( ) { int a,b; char c; scanf(“%d,%d”,&a,&b); if (a>b) c=‟*‟; else if (a=b) c=‟#‟; else c=‟$‟; printf(“%c\n”,c); } 运行时输入-36,-18,输出什么? 3. main( ) {int chj,num; scanf(“%d”,&chj); num=chj/10; switch(num) {case 10: case 9: printf(“A\n”);break; case 8: printf(“B\n”);break; case 7: case 6: printf(“C\n”);break; default :printf(“D\n”); } } 运行时输入100,输出什么? 运行时输入75,输出什么? 运行时输入39,输出什么? 4. main( ) {int n,sum=0; for (n=100;n<=1000;n++) {if (n%10==3 && n%3!=0) sum=sum+n; else continue; if (sum>=500) break; } printf(“%d,%d\n”,sum,n); } 运行程序,输出什么? 5. main( ) {int n,m; char k=„ „;/*k的值是空格*/ for (n=1;n<=7;n=n+2) {for (m=1;m<=10-n;m++) printf(“%c”, k); for (m=1;m<=n;m++) printf(“%c%c”, 64+n ,k); } } 运行程序,输出什么? 6. # define N 4 main() {char str[N][20]; int i,j,k1,k2,k3,k4; k1=k2=k3=k4=0; for (i=0;i for (i=0;i for (j=0; str[i][j]!=’\0’;j++) if (str[i][j])>=’a’&& str[i][j])<=’z’) k1++; else if (str[i][j])>=’A’&& str[i][j])<=’Z’) k2++; else if (str[i][j])>=’0’&& str[i][j])<=’9’) k3++; else k4++; printf(“%d,%d,%d,%d\n”, k1,k2,k3,k4); } 运行时依次输入下面4个字符串,输出什么? STUDY hard 3456 $$## AABBprogram **** 987 7.