一、单选(共计100分,每题2.5分)1、若已定义int a=11; 执行以下语句后的输出结果是()。
printf("a=%d,a=%o,a=%x\n",a,a,a) ;A. a=11, a=11, a=bB. a=11, a=13, a=bC. a=11, a=13, a=cD. a=11, a=12, a=132、A.B.C.D.3、以下程序运行后,文件test.txt的内容是()。
#include <stdio.h> main() { FILE *fp; char str[][10]={"first","second"}; fp = fopen("test.txt", "w"); if(fp!=NULL) fprintf(fp,"%s",str[0]); fclose(fp); fp = fopen("test.txt", "w"); if(fp!=NULL) fprintf(fp,"%s",str[1]); fclose(fp); }A. firstB. secondC. first secondD. second first4、若有以下定义:struct node { int data; struct node *next; } struct node *head,*p; 已建立如下图所示的链表: p ↓┌──┬──┐┌──┬──┐┌──┬──┐head →│data│next┼→│data│next┼→... →│data│NULL│└──┴──┘└──┴──┘└──┴──┘能删除指针p所指向结点的程序段是()。
A. p = p->next; head->next=p->next; free(p);B. free(p); p = p->next; head->next=p->next;C. head->next = p->next; free(p);D. free(p); head->next = p->next;5、若有定义:int a[10]={0,1,2,3,4,5,6,7,8,9}, *p=a; ,则()表达式是错误的。
A. a[2]B. p++C. p[2]D. a++6、下面叙述错误的是()。
A. C源程序可由一个或多个函数组成B.C.D. 注释说明部分只能位于C源程序的最前面7、()为合法的常量。
A.B.C.D.8、以下程序的运行结果是()。
void main() {int s = 0, i = 0; while(i< 8) { i++; if(i%2==0) continue; s+=i; } printf("%d\n",s); }A. 36B. 7C. 16D. 129、以下程序段的运行结果是()。
main() { int i=4,j; j=i; pic(i+2*j-2,'*'); putchar('\n'); for(j-=2;j>=0;j--) { pic(3-j, ' '); pic(i+2*j, '*'); putchar('\n'); } } pic(int len,char c) { int k; for(k=1;k<=len;k++) putchar(c);}A.B.C.D.10、设有以下程序段:int a=1, b=10, c=1, x; x=a&&b||++c; printf(″%d, %d\n″,x,c); 执行后输出的结果是()A. 0,0B. 0,1C. 1,0D. 1,111、以下条件语句中(其中s1和s2分别表示C语言的语句),()与其他三条语句不等价。
A. if(a) s1; else s2;B. if(a == 0) s2; else s1;C. if(a != 0) s1; else s2;D. if(a == 0) s1; else s2;12、若已定义int arr[10]; 则不能正确引用arr数组元素的是()。
A. arr[0]B. arr[1]C. arr[10-1]D. arr[7+3]13、若有定义:int *p,k=4; p=&k;以下均代表地址的是()。
A. k, pB. &k, &pC. &k, pD. k, *p14、以下程序的运行结果是()。
main() { int a[3]={1,2,3}; int *num[3]; int **p,i; for(i=0;i<3;i++) num[i]=&a[i]; p=num; printf("%d",**p);}A. 1B. 3C. &a[0]D. num15、以下程序中的循环执行了()次。
#define N 2 #define M N+1 #define NUM (M+1)*M/2 main() { int i,n=0; for(i=0;i<NUM;i++) n++; printf("%d\n",n); }A. 5B. 6C. 8D. 916、若有定义:int x,a,b; 语句x=(a=2,b=3,a+b); 运行后,x、a、b的值依次为()。
A. 2 3 5B. 3 2 5C. 5 2 3D. 5 3 217、以下程序运行后,a的值是()。
main() { int a,b; for(a=1,b=1;a<=100;a++) { if(b>=20) break; if(b%3==1) { b+=3; continue; } b-=5; } }A. 101B. 100C. 8D. 718、下面叙述正确的是()。
A. 宏展开不占用运行时间,只占用编译时间B. 预处理命令也是C语句,必须以分号结束C. 一个源程序只能有一个预编译处理命令行D. 宏名必须用大写字母表示19、若有定义int m=4321,n=123,k=21; 语句printf("%4d+%3d+%2d",m,n,k); 执行后的输出结果是()。
A. 4321432143211231231232121B. 432112321C. 4321+123+21D. 432+123+02120、()语句符合C语言语法。
A.B.C.D.21、已有如下定义和输入语句,char c1,c2;int x; scanf("%c%d%c",&c1,&x,&c2);若要求x、c1、c2的值分别为9、'K'和'H',正确的数据输入是()。
A. K9HB. K 9 HC. K9 HD. 9KH22、A.B.C.D.23、若有定义:struct student{int num; char sex; int age;}stu1;下列叙述不正确的是()。
A. student是结构体类型名B. struct student是结构体类型名C. stu1是用户定义的结构体类型变量名D. num,sex,age都是结构体变量stu1的成员24、有以下程序:main() { int c; while((c=getchar())!= '\n') { switch(c-'2') { case 0 : case 1 : putchar(c+4); case 2 : putchar(c+4); break; case 3 : putchar(c+3); default: putchar(c+2); break; } } printf("\n"); } 当输入:247<回车>,程序的输出结果是()。
A. 689B. 6689C. 66778D. 6688725、A.B.C.D.26、下面叙述错误的是()。
A.B.C. 预处理命令行必须以分号结束D. C源程序中加入一些预处理命令是为了改进程序设计环境,提高编程效率27、A.B.C.D.28、对二维数组的正确定义是()A.B.C.D.29、在C语言中,运算符″=″和″==″的功能分别是()A. 关系运算和赋值运算B. 关系运算和赋值运算C. 都是关系运算D. 都是赋值运算30、下面叙述错误的是()A. 数组中每一个元素都属于同一个数据类型B. C语言数组名称是数组在内存中的首地址C. C语言数组长度在定义数组时可不作确定D. C语言规定可逐个引用数组元素但不能一次引用整个数组31、以下程序段运行后s的值是()。
int a[3][3]={1,2,3,4,5,1,2,3,4}; int i,j,s=1; for(i=0;i<3;i++) for(j=i+1;j<3;j++) s+=a[i][j];A. 6C. 7D. 24032、若有定义:int a=6,b=7,k=0,t=1; 语句(k=a<b) && (t=a==b); 运行后,k、t的值分别是()。
A. 0 0B. 1 1C. 0 1D. 1 033、以下在任何情况下计算平方数时都不会引起二义性的宏定义是()。
A.B.C.D.34、若有下面定义,能打印出字母'L'的语句是()。
struct class { char name[8]; int age; }; struct class s[12]={"Zheng",16,"Lin",18,"Yang",19,"Guo",20};A. printf("%c\n",s[1].name[0]);B. printf("%c\n",s[2].name[0]);C. printf("%c\n",s[1].name);D. printf("%c\n",s[2].name);35、设已定义float a=2.0,b=3.0; 使a值为5.0的表达式是()。
A. a+= bB. a*=b+2.0C. a/=b+2.0D. a-=b+2.036、以下叙述中正确的是()A. C源程序中注释部分可以出现在程序中任意合适的地方B.C. C源程序编译时注释部分的错误将被发现D. 构成C源程序的基本单位是函数,所有函数名都可以由用户命名37、()是正确的数组定义。