一、选择(30*2)
1、下列关于C语言用户标识符的叙述中正确的是( ) A 用户标识符中可以出现下划线和中划线(减号) B 用户标识符中不可以出现中划线,但可以出现下划线
C 用户标识符中可以出现下划线,但不可以放在用户标识符的开头
D 用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头 2.在C语言程序中,说法正确的是___。
A. 函数的定义可以嵌套,但函数的调用不可以嵌套 B. 函数的定义不可以嵌套,但函数的调用可以嵌套 C. 函数的定义和函数的调用都不可以嵌套 D. 函数的定义和函数的调用都可以嵌套
3.变量的指针,其含义为指该变量的 ( ) 。
A. 值 B. 地址 C. 名 D. 一个标志
4、若有定义:char s[20]=”programming”, *ps=s; 则不能代表字符‘o’的表达式是 ( ) 。
A. ps+2 B. s[2] C. ps[2] D. ps+=2, *ps 5.头文件的扩展名可以是 ( )
A. .h和.obj B. .h和.c C. .c和.obj D. 任意
6.若x、y均为int型变量,z为double型变量,则以下不合法的scanf函数调用语句为__________
A scanf(“%d,%x,%le”,&x,&y,&z); B. scanf(“%2d,%d,%lf”,&x,&y,&z); C.scanf(“%x,%8d,%9.2f”,&x,&y,&z); D. scanf(“%o,%x,%lf”,&x,&y,&z); 7、在宏定义# define E 2.71828中,宏名E代替一个 ( ) 。 A. 单精度数 B. 双精度数 C. 常数 D. 一个字符串 8.合法的数组定义是 ( ) 。
A. int a[]=“string”; B. int a[5]={0,1,2,3,4,5}; C. char a=“string”; D. char a[]={0,1,2,3,4,5}; 9.若i,j已定义为int类型,则以下程序段中 for(i=5;i;i--)
for(j=0;j<4;j++) {…}
循环体的总的执行次数,供选择的答案是___________。 A.20 B. 24 C. 25 D. 30
10、scanf ( )函数的地址表列是用 ( )符号加上变量名表示变量的地址。 A.% B.& C.# D.! 11、在C语言的if语句中,用作判断的表达式为 ( ) 。 A. 关系表达式 B. 逻辑表达式 C. 算术表达式 D. 任意表达式 12、设有以下程序段: char a[ ]=”study”,*p; p=a; printf(“%d”,*(p+5)); 执行后的结果为:
A、111 B、0 C、104 D、不确定
13.设有下列程序段,则scanf函数调用语句中对结构体变量成员的不正确引用为 。 struct student
{ char name[20]; int age; char sex; }stu[5], *p; p=stu;
A. scanf(\"%s\ B. scanf(\"%d\ C. scanf(\"%c\ D. scanf(\"%d\14、若有以下定义和语句 #include p=&a;q=&b;w=q;q=NULL; 则以下选项中错误的语句是( ) A*q=0; Bw=p; C*p=a; D*p=*w; 15、有以下程序 int *f(int *x,int *y) { if(*x<*y) return x; else return y; } main() { int a=7,b=8,*p,*q,*r; p=&a; q=&b; r=f(p,q); printf(“%d,%d,%d\\n”,*p,*q,*r); } 执行后输出结果是( ) A)7,8,8 B)7,8,7 C8,7,7 D 8,7,8 16、有以下程序 main() { char *s[]={“one”,”two”,”three”},*p; p=s[1]; printf(“%c,%s\\n”,*(p+1),s[0]); } 执行后输出结果是( ) An,two Bt,one Cw,one Do,two 17、设有如下定义 struct ss { char name[10]; int age; char sex; }std[3],*p=std; 下面各输入语句中错误的是( ) Ascanf(“%d”,&(*p).age); Bscanf(“%s”,&std.name); Cscanf(“%c”,&std[0].sex); Dscanf(“%c”,&(p->sex)); 18、设char型变量x中的值为10100111,则表达式(2+x)^(~3)的值是 A10101001 B10101000 C11111101 D01010101 19、以下叙述中不正确的是( ) A C语言中的文本文件以ASCII码形式存储数据 B C语言中对二进制文件的访问速度比文本文件低 C C语言中,随机读写方式不适用于文本文件 D C语言中,顺序读写方式不适用于二进制文件 20、以下程序企图把从终端输入的字符输出到名为abc.txt的文件中,直到从终端读入字符#号时结束输入和输出操作,但程序有错。 #include { FILE *fout; char ch; fout=fopen(„abc.txt‟,‟w‟); ch=fgetc(stdin); while(ch!=‟#‟) { fputc(ch,fout); ch=fgetc(stdin); } fclose(fout); } 出错的原因是( ) A函数fopen调用形式错误 B输入文件没有关闭 C函数fgetc调用形式错误 D文件指针stdin没有定义 21、若变量c为char类型,能正确判断出c为小写字母的表达式是 ( ) 。 A'a'<=c<='z' B(c>='a')||(c<='z') C('a'<=c)and('z'>=c) D(c>='a')&&(c<='z') 22、以下所列的各函数首部中,正确的是( ) 。 Avoid play(var a:Integer var b:Integer) Bvoid play(int a,b) Cvoid play(int a,int b) Dsub play(a as integer b as integer) 23、以下程序的输出结果是( ) 。 A0 B29 C31 D无定值 fun(int x int y,int z) {z=x*x+y*y;} main() { int a=31; fun(5,2,a); printf(\"%d\",a); } 24、下列程序段的输出结果是( ) A2 l 4 3 B1 2 1 2 C1 2 3 4 D2 1 1 2 void fun(int *x,int *y) { printf(\"%d%d\,*y);*x=3;*y=4;} main() { int x=1,y=2; fun(&y,&x); printf(\"%d%d\",x,y); } 25、、若已定义了如下的共用体类型变量x,则x所占用的内存字节数为( ) 。 union data { int i; char ch; double f; }x; A7 B11 C8 D10 26、若有下面的说明和定义: struct test { int m1;char m2;float m3; union uu{ char u1[5];int u2[2];}ua; } myaa; 则sizeof(struct test)的值是 ( ) 。 A12 B16 C 14 D9 27、请选择正确的运行结果填入( ) 中。include int a=15,b=10; int x,y; y=a-b; y=a+b; return; } main() { int a=7,b=5; x=a+b; y=a-b; num(); printf(\"%d,%d\\n\",x,y); } A 12,2 B 5,25 C2,12 28、设有一结构体类型变量定义如下: struct date { int year; int month; int day; D不确定 }; struct worklist { char name [20]; char sex; struct date birthday; }person; 若要对结构体变量person的出生年份进行赋值时,下面正确的赋值语句是: A. year=1976 B. birthdat.year=1976 C. person.birthday.year=1976 D. person.year=1976 29、设程序段 char s[]=”china”; char *p; p=s; 则下列叙述正确的是 () A. s和p完全相等 B. 数组s中的内容和指针变量p中的内容完全相等 C. s数组长度和p所指向的字符串长度完全相等 D. s[0]和*p相等 30、设有以下语句,则()不是对a数组元素的正确引用,其中0≤i<10。 int a[10] = {0,1,2,3,4,5,6,7,8,9}; int *p = a; 供选择的答案是: A. a[p-5] B. *(&a[i]) C. p[i] D. *(a+i) 二、填空(4*5) 1、当执行下面的程序时,如果输入ABC,则输出结果是 #include \"stdio.h\" #include \"string.h\" main() { char ss[10]=\"12345\"; gets(ss);strcat(ss,\"6789\");printf(\"%s\\n\); } 2、假定以下程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的DOS提示符下键入:PROG ABCDEFGH IJKL〈回车〉,则输出结果为 main(int argc,char *argv[ ]) { while( - - argc>0)printf(\"%s\",argv[argc]); printf(\"\\n\"); } 3、以下程序运行后,输出结果是 #include \"stdio.h\" main( ) { int a[3][4]={1,2,3,4,2,3,4,5,3,4,5,6}; int i,j; for (i=0;i<4;i++) { for (j=i;j<3;j++) printf(\"%4d\; printf(\"\\n\"); } } 4、以下程序的输出结果是 main() { int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0; for(i=1;i<3;i++) for(j=0;j三、编程(2*10) 1、编写一个将字符串s1逆转的程序 2、将字符串“computer”赋给一个字符数组,然后从第一个字母开始间隔的输出该字符串 答案C 一、 选择 1—5 B B B A D 6---10 CDDA B 11---15 DDBBD 16—20 CBDAC 21---25DC C AC 26-30 A A C D A 二、填空 1、ABC6789 2、IJKLABCDEFGH 3、1 2 3 3 4 5 4、14 三、编程 1、main() {char s1[20],s2[20]; int i,j; scanf(\"%s\\n\for(i=0;s1[i]!='\\0';i++) for(j=0;s1[j]!='\\0';j++) s2[i-j-1]=s1[j];s2[i]='\\0'; printf(\"%s\\n\2、 main() {char str[]=\"computer\"; int i; for(i=0;i 因篇幅问题不能全部显示,请点此查看更多更全内容