您的当前位置:首页正文

试卷三

2021-01-24 来源:星星旅游
C语言试题C

一、选择(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 int a=3,b=4,*,*q,*w;

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 main()

{ 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 x,y; num() {

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

因篇幅问题不能全部显示,请点此查看更多更全内容