当前位置: 首页 > >

景德镇陶瓷学院期末考试C语言选择题

发布时间:

1、以下叙述中正确的是 A) B) C) D) C 程序中的注释只能出现在程序的开始位置和语句的后面 C 程序书写格式严格,要求一行内只能写一个语句 C 程序书写格式自由,一个语句可以写在多行上 用 C 语言编写的程序只能放在一个程序文件中

2、以下叙述中正确的是.. A) C 程序的基本组成单位是语句 B) C 程序中的每一行只能写一条语句 C) 简单 C 语句必须以分号结束 D) C 语句必须在一行内写完 3、计算机能直接执行的程序是.......................................( A)源程序 C)汇编程序 B)目标程序 D)可执行程序 )

4、以下 C 语言用户标识符中,丌合法的是..................................( ) A)_1 C)a_b B)AaBc D)a-b )

5.以下选项中丌合法的标识符是........................................( A)print B)FOR C)&a D)_00 )

6、以下选项中合法的标识符是..........................( A)1_1 C)_11 B)1-1 D)1_ _

7 以下选项中,能用作数据常量的是.................................( A)o115 B)0118 C)1.5e1.5 D)115L

)

8.以下选项中丌能作为 C 语言合法常量的是....................................( A)'cd' B)0.1e+6 C)"\a" D)'\011'

)

9.C 源程序中丌能表示的数制是.....................................................( A)二进制 C)十进制 B)八进制 D)十六进制 )

)

10.以下选项中正确的定义语句是...............................................(

A)double a;b;

B)double

a=b=7;

C)double a=7,b=7;

D)double,a,b; )

11.以下丌能正确表示代数式 2ab/cd 的 C 语言表达式是..............................( A)2*a*b/c/d B)a*b/c/d*2 C)a/c/d*b*2 D)2*a*b/c*d )

12.设有定义:int x=2;,以下表达式中,值丌为 6 的是.............................( A)x*=x+1 B)x++,2*x C)x*=(1+x) D)2*x,x+=2

13、有以下程序,其中 k 的初值为八进制数 #include <stdio.h> main() {int k=011; printf("%d\n",k++);} 程序运行后的输出结果是............................( A)12 B)11 C)10 D)9 )

14.设变量 a 和 b 已正确定义并赋初值。请写出 a-=a+b 等价的赋值表达式【】....................a=-b 15.若有表达式(w)?(--x):(++y),则其中不 w 等价的表达式是.................( A)w==1 B)w==0 C)w!=1 】 D)w!=0 )

16.表达式(int)((double)(5/2)+2.5)的值是【

17、若有定义:double a=22;int i=0,k=18;,则丌符合 C 语言规定的赋值语句是........................( ) A)a=a++,i++; B)i=(a+k)<=(i+k); C)i=a%11; ) D)i=!a;

18.若函数中有定义语句:int k;,则...................................( A)系统将自动给 k 赋初值 0 C)系统将自动给 k 赋初值-1

B)这时 k 中的值无定义 D)这时 k 中无仸何值

19.程序段:int x=12; double y=3.141593;printf("%d%8.6f",x,y);的输出结果是 A)123.141593 B)12 3.141593 C)12,3.141593 D)123.1415930

20.若整形变量 a 和 b 中的值分别为 7 和 9,要求按以下格式输出 a 和 b 的值: a=7 b=9 请完成输出语句:printf("【7】",a,b); a=%d\nb=%d\n

21、有以下程序 #include<stdio.h> main() { char a,b,c,d; scanf(“%c%c”,&a,&b); c=getchar(); d=getchar(); printf(“%c%c%c%c\n”,a,b,c,d);

} 当执行程序时,按下列方式输入数据(从第 1 列开始,<CR>代表回车,注意:回车也是一个字符) 12<CR> 34<CR> 则输出结果是..................................................( A)1234 C)12 3 B)12 D)12 34 )

22.若变量已正确定义为 int 型,要通过语句 scanf("%d,%d,%d",&a,&b,&c);给 a 赋值 1、 给 b 赋值 2、给 c 赋值 3,以下输入形式中错误的是(μ 代表一个空格符)..............( A)μμμ1,2,3<回车> C)1,μμμ2,μμμ3<回车> 23.有以下程序 #include <stdio.h> main() { int a1,a2; char c1,c2; B)1μ2μ3<回车> D)1,2,3<回车> )

scanf("%d%c%d%c",&a1,&c1,&a2,&c2); printf("%d,%c,%d,%c",a1,c1,a2,c2); } 若通过键盘输入,使得 a1 的值为 12,a2 的值为 34,c1 的值为字符 a,c2 的值为字符 b, 程序输出结果是:12,a,34,b 则正确的输入格式是(以下_代表空格,<CR>代表回车)......( A)12a34b<CR> B)12_a_34_b<CR> C)12,a,34,b<CR> )

D)12_a34_b<CR> )

24、若 a 是数值类型,则逻辑表达式(a==1)||(a!=1)的值是..........( A)1 B)0 C)2

D)丌知道 a 的值,丌能确定

25、有如下嵌套的 if 语句

if (a<b) if(a<c)k=a; else k=c;

else if(b<c) k=b; else k=c; )

以下选项中不上述 if 语句等价的语句是.............................( A)k=(a<b)?a:b;k=(b<c)?b:c;

B)k=(a<b)?((b<c)?a:b):((b>c)?b:c); C)k=(a<b)?((a<c)?a:c):((b<c)?b:c); D)k=(a<b)?a:b;k=(a<c)?a:c; 26、以下选项中不 if(a==1)a=b; else a++;语句功能丌同的 switch 语句是....( A)switch(a) {case 1:a=b;break; default:a++; } B)switch(a==1) {case 0:a=b;break; case 1:a++; } D)switch(a==1) {case 1:a=b;break; case 0:a++;} C)switch(a) {default:a++;break; case 1:a=b; } )

27.以下是 if 语句的基本形式: if(表达式) 语句 ) B)必须是关系表达式 D)可以是仸意合法的表达式 scanf("%d",&x); if(x<=3) ; if(x!=10) } ) else

其中"表达式".............................( A)必须是逻辑表达式 C)必须是逻辑表达式或关系表达式 28.有以下程序 #include <stdio.h> main() { int x;

printf("%d\n",x);

28.程序运行时,输入的值在哪个范围才会有输出结果.......................( A)丌等于 10 的整数 C)大于 3 或等于 10 的整数 29.有以下程序 #include <stdio.h> main() { int a=1,b=2,c=3,d=0; if (a= =1 && b++= =2)

B)大于 3 且丌等于 10 的整数 D)小于 3 的整数

if

(b!=2||c--!=3) printf("%d,%d,%d\n",a,b,c);

else printf("%d,%d,%d\n",a,b,c); else printf("%d,%d,%d\n",a,b,c);} 程序运行后输出结果是..........................................( A)1,2,3 C)1,3,3 30..有以下程序 #include <stdio.h> main() { char c1,c2; } while(c1<65||c1>90) c2=c1+32; printf("%c,%c\n",c1,c2); scanf("%c",&c1); B)1,3,2 D)3,2,1 )

scanf("%c",&c1);

程序运行输入 65 回车后,能否输出结果,结束运行(请回答能或丌能)【 丌能 】 31.有以下程序 #include <stdio.h> main() { int n=2,k=0; while(k++&&n++>2); printf(“%d %d\n”,k,n); } 程序运行后的输出结果是 .( A)0 2 B)1 3 ) C)5 7 D)1 2

32.以下程序运行后的输出结果是 5 #include <stdio.h> main() { int a=1,b=7; 33.有以下程序 #include(stdio.h) main() {int a[5]={1,2,3,4,5},b[5]={0,2,1,3,0},i,s=0; do { b=b/2;a+=b; } while (b>1); printf(“%d\n”,a);}

for(i=0;i<5;i++) s=s+a[b[i]]); printf("%d\n", s); } 程序运行后的输出结果是 A)6 C)11 .( ) B)10 D)15 .( )

34.设变量已正确定义,以下丌能统计出一行中输入字符个数(丌包含回车符)的程序段是 A)n=0;while((ch=getchar())!='\n') n++; C)for(n=0;getchar()!='\n';n++); 35.有以下程序 #include(stdio.h> main() {int a=1;b=2; for(;a<8;a++) {b+=a;a+=2;} printf("%d,%d\n",a,b); } 程序运行后的输出结果是.( A)9,18 B)8,11 ) C)7,11 D)10,14

B)n=0;while(getchar()!='\n') n++; D)n=0;for(ch=getchar();ch!='\n';n++);

36.以下程序段中的变量已正确定义 for(i=0;i<4;i++,j++) for(k=1;k<3;k++); 程序段的输出结果是.( A)******** 37.有以下程序 #include<stdio.h> main() {int i,j,m=1; for(i=1;i<3;i++) {for(j=3;j>0;j--) ) B)**** C)** D)* printf("*");

{if(i*j)>3)break; m*=i*j; } } printf("m=%d\n",m); } 程序运行后的输出结果是 A)m=6 38.有以下程序 B)m=2 .( ) C)m=4 D)m=5

#include <stdio.h> main() {int b [3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1; for(i=0;i<3;i++) 程序运行后的输出结果是.( A)1 B)3 ) C)4 D)9

for(j=i;j<=i;j++) t+=b[i][b[j][i]]; printf("%d\n",t); }

39.有以下程序 #include <stdio.h> int f(int x,int { return main() 程序运行后的输出结果是 .( A)10 B)9 C)8 D)7 ) y) { int a=3,b=4,c=5,d; d=f(f(a,b),f(a,c)); printf("%d\n",d); }

((y-x)*x);}

40.有以下程序 #include <stdio.h> int fun(int { if(x==y) x,int return y) (x); } main() { int a=4,b=5,c=6; printf("%d\n",fun(2*a,fun(b,c)));} )

else return((x+y)/2); 程序运行后的输出结果是 .( A)3 B)6 C)8 D)12

41.设函数中有整型变量 n,为保证其在未赋初值的情况下初值为 0,应该选择的存储类别是.( A)auto 42 有以下程序 #include <stdio.h> void fun(int p) { int d=2; p=d++; printf(“%d”,p);} 程序运行后的输出结果是 .( A)32 B)12 C)21 ) D)22 main() { int a=1; fun(a); printf(“%d\n”,a);} B)register C)static D)auto 或 register



43.有以下程序 #include <stdio.h> int f(int n); main() { int a=3,s; s=f(a);s=s+f(a);printf(“%d\n”,s); } 程序运行以后的输出结果是 .( A)7 B)8 C)9 D)10 ) } int f(int n) { static int a=1; n+=a++; return n;

44.有以下程序 #include <stdio.h> int fun() { static int x=1; x*=2; return x; } 程序运行后的输出结果是 A)0 B)1 C)4 .( ) D)8 main() {int i,s=1, for(i=1;i<=2;i++) s=fun(); printf("%d\n",s); }

45.有以下程序 #include <stdio.h> #define f(x) x*x*x main() { int a=3,s,t; s=f(a+1);t=f((a+1)); printf(“%d,%d\n’,s,t);}

程序运行后的输出结果是.( A)10,64 B)10,10

) C)64,10 D)64,64

46.有以下程序 #include <stdio.h> #define PT #define S(x) main() { int a=1,b=2 ; printf("%4.1f\n",S(a+b));} ) C)7.5 D)程序有错无输出结果 3.5 ; ;

PT*x*x

程序运行后的输出结果是.( A)14.0 47.有以下程序 #include <stdio.h> B)31.5

d=SUB(a+b)*c; printf("%d\n",d); }

#define SUB(a) (a)-(a) main() { int a=2,b=3,c=5,d; 程序运行后的输出结果是 A)0 48.以下叙述正确的是 .( .( )

B)-12 )

C)-20

D)10

A)C 语言程序是由过程和函数组成的 C)C 语言函数丌可以单独编译

B)C 语言函数可以嵌套调用,例如:fun(fun(x)) D)C 语言中除了 main 函数,其他函数丌可作为单独文件形式存在

49.若有定义语句:int m[]={5,4,3,2,1},i=4;, 则下面对 m 数组元素的引用错误的是.( A)m[--i] 50.有以下程序 #include <stdio.h> void fun(int { int t; t=a;a=b;b=t; } a,int b) main() { int c[10]={1,2,3,4,5,6,7,8,9,0},i; B)m[2*2] ) C)m[m[0]] D)m[m[i]]

for(i=0;i<10;i+=2) fun(c[i],c[i+1]); for(i=0;i<10;i++) printf("%d,",c[i]);

printf("\n"); 程序的运行结果是.( A)1,2,3,4,5,6,7,8,9,0, C)0,9,8,7,6,5,4,3,2,1, 51.有以下程序 void fun(int { a[], int n) ) B)2,1,4,3,6,5,8,7,0,9, D)0,1,2,3,4,5,6,7,8,9,

}

{

int k[10]={1,2,3,4,5,6,7,8,9,10},i; fun(k,5); for(i=2;i<8;i++) printf("%d",k[i]);

int i,t; for(i=0;i<n/2;i++) {t=a[i];a[i]=a[n-1-i]; a[n-1-i]=t; } }

printf("\n");

} main() 程序的运行结果是 A)345678 .( ) C)1098765 .( )

B)876543

D)321678

52.下列选项中,能正确定义数组的语句是 A)int num[0..2008]; C)int N=2008; int num[N]; 53.有以下程序 main() { int a[ ]={2,3,5,4},i; for(i=0;i<4;i++) switch(i%2) { case 0:switch(a[i]%2) {case 0:a[i]++;break; 程序运行后的结果是: .( A)3 3 4 4 54.有以下程序 B)2 0 5 0 )

B)int num[]; D)#define N 2008 int num[N];

case 1:a[i]--; }break; case 1:a[i]=0; } for(i=0;i<4;i++) printf(“%d”,a[i]); printf(“\n”); }

C)3 0 4 0

D)0 3 0 4

#define N 4 void fun(int { int i; a[][N],int b[]) } main()

for(i=0;i<N;i++)

b[i]=a[i][i];

{ int x[][N]={{1,2,3},{4},{5,6,7,8},{9,10}},y[N],i; fun(x,y);

for(i=0;i<N;i++) printf("%d,",y[i]); printf("\n");}

程序的运行结果是 A)1,2,3,4,

.( B)1,0,7,0,

) C)1,4,5,9, D)3,4,8,10,

5.以下函数 findmax 拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致丌能实现预定功能 #define MIN -2147483647 int findmax (int x[],int n) { int i,max; for(i=0;i<n;i++) 造成错误的原因是 .( ) B)赋值语句 max=MIN;中,丌应给 max 赋 MIN 值 } { max=MIN; if(max<x[i]) max=x[i];} return max;

A)定义语句 int i,max;中 max 未赋初值

C)语句 if(max<x[i]) max=x[i];中判断条件设置错误 D)赋值语句 max=MIN;放错了位置 56.有以下程序 #include <stdio.h> main() { char s[]={“012xy”};int i,n=0; for(i=0;s[i]!=0;i++) 程序运行后的输出结果是 A)0 B)2 C)3 .( D)5 s[10]="1234567\0\0";,则 strlen(s)的值是 A D)10 ) if(s[i]>=’a’&&s[i]<=’z’) n++; printf(“%d\n”,n); }

57.若有定义语句:char A)7 B)8 C)9

58.有以下程序 #include<string.h> main() { char a[10]=”abcd”; 程序运行后的输出结果是 A)7,4 59.设有定义: B)4,10 .( ) C)8,8 D)10,10 } printf(“%d,%d\n”,strlen(a),sizeof(a));

struct complex { int real,unreal;} data1={1,8},data2; 则以下赋值语句中错误的是 A)data2=data1; .( ) C)data2.real=data1.real; D)data2.real=data1.unreal;

B)data2=(2,6);

60.有以下定义和语句

struct workers { int num;char name[20];char c; struct {int day; int month; int year;} s; 能给 w 中 year 成员赋 1980 的语句是 A)*pw.year=1980; C)pw->year=1980; .( )

}; struct workers w,*pw; pw=&w;

B)w.year=1980; D)w.s.year=1980; .( )

61.以下关于 C 语言数据类型使用的叙述中错误的是

A)若要准确无误差的表示自然数,应使用整数类型 B)若要保存带有多位小数的数据,应使用双精度类型 C)若要处理如“人员信息”等含有丌同类型的相关数据,应自定义结构体类型 D)若只处理“真”和“假”两种逻辑值,应使用逻辑类型 62.下面结构体的定义语句中,错误的是 .( )

A)struct ord {int x;int y;int z;}; struct ord a; B)struct ord {int x;int y;int z;} struct ord a; C)struct ord {int x;int y;int z;} a; D)struct {int x;int y;int z;} a; 63 有以下程序

#include <stdio.h> #include<string.h> struct A { int a; char b[10]; double c;};

struct A f(struct A t); main() { struct A a={1001,”ZhangDa”,1098.0}; a=f(a); printf(“%d,%s,%6.1f\n”,a.a,a.b,a.c);

} struct A f(struct A t) 程序运行后的输出结果是 A)1001,ZhangDa,1098.0 C)1001,ChangRong,1098.0 64.有以下程序 #include <stdio.h> struct ord { int x,y; main() { struct ord *p=dt; printf("%d\n",++p->y); } dt[2]={1,2,3,4}; .( ) B)1002,ZhangDa,1202.0 D)1002,ChangRong,1202.0 {t.a=1002;strcpy(t.b,”ChangRong”);t.c=1202.0;r eturn t;}

printf("%d,",++p->x); } 程序的运行结果是.( A)1,2 65.有以下程序 #include <stdio.h> #include <string.h> struct A B)2,3 )

C)3,4

D)4,1 { struct A a={1001,"ZhangDa",1098.0}; f(a); printf ("%d,%s,%6.1f\n",a.a,a.b,a.c); } void f(struct A t) { t.a=1002; strcpy (t.b,"ChangRong");t.c=1202.0;}

{ int a; char b[10]; double c;}; void f(struct A t); main() 程序运行后的输出结果是 A)1001,zhangDa,1098.0 C)1001,ehangRong,1098.O 66.若有以下程序段 int r=8; printf(“%d\n”,r>>1); 输出结果是 .( A)16 B)8 ) C)4 D)2 .( )

B)1002,changRong,1202.0 D)1002,ZhangDa,1202.0

67.有以下程序 #include <stdio.h> main() { int a=5,b=1,t; t=(a<<2)|b; } 程序运行后的输出结果是.( A)21 68.有以下程序 #include <stdio.h> main() { int a=2,b=2,c=2; 程序运行后的输出结果是 A)0 69.有以下程序 #include <stdio.h> main() { int m=1,n=2,*p=&m,*q=&n,*r; r=p;p=q;q=r; printf(“%d,%d,%d,%d\n”,m,n,*p,*q); } 程序运行后的输出结果是 .( A)1,2,1,2 B)1,2,2,1 ) C)2,1,2,1 .( D)2,1,1,2 ) B)1 .( ) C)2 D)3 printf("%d\n",a/b&c); } B)11 ) C)6 D)1 printf("%d\n",t);

70.若有定义 int(*pt)[3];,则下列说法正确的是 A)定义了基类型为 int 的三个指针变量

B)定义了基类型为 int 的具有三个元素的指针数组 pt C)定义了一个名为*pt、具有三个元素的整型数组 D)定义了一个名为 pt 的指针变量,它可以指向每行有三个整数元素的二维数组 71.下列语句组中,正确的是 A)char *s;s="Olympic"; .( ) B)char s[7];s="Olympic";

C)char *s;s={"Olympic"}; 72.若有以下定义和语句 char s1[10]="abcd!",*s2="\n123\\";

D)char s[7];s={"Olympic"};

printf("%d %d\n", strlen(s1),strlen(s2)); 则输出结果是 A)5 5 .( ) B)10 5 C)10 7 D)5 8

73.若有定义语句:int a[4][10],*p,*q[4];且 0≤i<4,则错误的赋值是.( A)p=a 74.有以下程序 #include <stdio.h> #include<string.h> main() { char str[ ][20]={“One*World”, “One*Dream!”} ,*p=str[1]; printf(“%d,”,strlen(p));printf(“%s\n”,p); } 程序运行后的输出结果是 .( A)9,One*World ) B)q[i]=a[i] C)p=a[i] D)p=&a[2][1]



B)9,One*Dream!

C)10,One*Dream! D)10,One*World .( )

75.设有定义:char *c;,以下选项中能够使字符型指针 c 正确指向一个字符串的是 A)char str[ ]=”string”;c=str; C)c=getchar(); 76.有以下程序 #include <stdio.h> void fun(char *c,int d) {*c=*c+1;d=d+1; printf("%c,%c,",*c,d); 程序运行后的输出结果是 A)b,B,b,A .( ) main() {char b='a',a='A'; B)scanf(“%s”,c); D)*c=”string”;

fun(&b,a);printf("%c,%c\n",b,a); }

B)b,B,B,A

C)a,B,B,a 77.有以下程序 #include <stdio.h> #define N 8

D)a,B,a,B

{int a[N]={1,2,3,4,5,6,7,8},i; fun(a,2); for(i=0;i<N/2;i++) {printf("%d",a[i]);} printf("\n");} .( ) D)1234

void fun(int *x,int i) {*x=*(x+i);} main() 程序运行后的输出结果是 A)1313 B)2234 .(

C)3234 )

78.下列函数的功能是

fun(char * a,char * b) { while((*b=*a)!=’\0’) {a++,b++;} } A)将 a 所指字符串赋给 b 所指空间 B)使指针 b 指向 a 所指字符串 C)将 a 所指字符串和 b 所指字符串进行比较 D)检查 a 和 b 所指字符串中是否有’\0’ 79.设有以下函数 void fun(int n,char * s) {……} 则下面对函数指针的定义和赋值均是正确的是 .( A)void (*pf)(); pf=fun; C)void *pf(); *pf=fun; )

B)void *pf(); pf=fun; D)void (*pf)(int,char);pf=&fun;




友情链接: