文档库 最新最全的文档下载
当前位置:文档库 › 白皮书C语言笔试题及答案

白皮书C语言笔试题及答案

白皮书C语言笔试题及答案
白皮书C语言笔试题及答案

声明:此答案仅限于参考,有错请指出!

第一章C程序基础和数据类型及运算

1、对于一个正常运行的C程序,以下叙述中确的是(A)

A)程序的执行总是从main 函数开始

B)程序的执行总是从程序的笫一个函数开始,在程序的最后一个函数中结束

C)程序的执行总是从main函数幵始,在程序的最后一个函数中结束

D)程序的执行总是从程序的笫一个函数开始,在main函数结束

2、若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是( D )

A)x+1=y B) x=x+10=x+y C)double (x)/10 D)++x,y=x--

3、以下选项中能表示合法常量的是( D )

A)?\?B)1,200 C)1.5E2.0 D)”\007”

4、C语言源程序名的后缀是( D )

A) . cp B) .obj C) .exe D) .C

5、阅读以下程序

#include

main ()

{ int case ;

float printF;

printf ("请输入2个数:");

scanf ( "%d %f",&case, &printF );

printf("%d %f\n",case,printF );

}

该程序在编译时产生错误,其出错原因是( A)

A.定义语句出错,case是关键字,不能用作用户自定义标识符

B.定义语句无错,printf不能输出case的值

C.定义语句无错,scanf不能作为输入函数使用

D.定义语句出错,printF不能用作用户自定义标识符

6.若有定义语句:

int x=12,y=8, z;

在其后执行语句

z= 0.9+x/y;

则z的值为(B)

A.2.4

B.1

C.2

D.1.9

7. 表达式a+=a-= a=9的值是

A.-9

B.0

C.9

D.18

8. 有以下程序

#include

main ()

{

char cl='A',c2='Y';

printf ("%d,%d\n", cl,c2 );

}

程序的输出结果是( B )

A.输出格式不合法,输出出错信息

B.65,89

C.A,Y

D.65,90

9. 关于C语言的变量,以下叙述中错误的是( A)

A)变量所占的存储单元地址可以随时改变

B)程序中用到的所有变量都必须先定义后才能使用

C)由三条下划线构成的符号名是合法的变量名

D)所谓变量是指在程序运行过程中其值可以被改变的量

10. 以下叙述中正确的是( D )

A)字符变量在定义时不能赋初值

B)同一英文字母的大写和小写形式代表的是同一个字符常量

C)转义字符用@符号开头

D)字符常量可以参与任何整数运算

11. 以下叙述中正确的是(A)

A)由&&构成的逻辑表达式与由||构成的逻辑表达式都有"短路"现象

B)C语言的关系表达式:0

C)逻辑"或"(即运算符||)的运算级别比算术运算要高

D)逻辑"非〃〈即运算符!)的运算级别是最低的

12. 若有以下程序( D )

#include

main ()

{ int a=0,b=0,c=0;

c= (a+=++b, b+=4);

printf ("%d, %d, %d\n", a,b, c);

}

则程序的输出结果是

A) -1,4,-1 B)1,5,1 C)-1,4,4 D)1,5,5

13. 若变置己正确定义并赋值.以下不能构成C语句的选项是(D)

A) A?a:b; B)B++; C) A=a+b; D) a=a+b

14. 以下选项中不属于C语言程序运算符的是( A )

A) <> B)( ) C) && D) sizeof

第二章基本语句

15、若变量已正确定义为int型,要通过语句

scanf(“%d,%d,%d”,&a,&b,&c);

给a赋值1、给b赋值2、给c赋值3,以下输入形式中错误的是(注:□代表一个空格符)( D )

A) □□□1,2,3<回车> B)1,2,3<回车>

C)1, □□□2, □□□3<回车>

D)1□2□3<回车>

16、设有定义:

int a; float b;

执行

scanf("%2d%f", &a, &b);

语句时,若从键盘输入

876 543.0〈回车>

则a和b的值分别是( A )

A 87 和6.0

B 76和543.0

C 87和543.0

D 876和543.0

17. 以下叙述中正确的是( D)

A.在使用scanf函数输入整数或实数时,输入数锯之间只能用空格来分隔

B.在printf函数中,各个输出项只能是变量

C.使用printf函数无法输出百分号%

D.在scanf函数中的格式控制字符串是为了输入数据用的,不会输出到屏幕上

18. 以下叙述中正确的是( D )

A.复合语句也被称为语句块,它至少要包含两条语句

B.scanf函数中的字符串,是提示程序员的,输入数据时不必管它

C.只能在printf函数中指定输入数据的宽度,而不能在scanf函数中指定输入数据占的宽度

D.在scanf函数的格式串中,必须有与输入项一一对应的格式转换说明符

19. 有以下程序

#include

main ()

{

char cl,c2,c3,c4,c5,c6;

scanf("%c%c%c%c", &cl, &c2,&c3,&c4);

c5=getchar();

c6=getchar();

putchar(cl);

putchar(c2);

printf ("%c%c\n", c5, c6);

}

程序运行后,若从键盘输入(从笫1列开始)

123<回车>

45678< 回车>

则输出结果是( D )

A.1267

B.1256

C.1278

D.1245

20. 有以下程序

#include

main ()

{ int al,a2; char cl,c2;

scanf("%d%c%d%c",&al,&cl,&a2,&c2);

printf ("%d, %c, %d, %c", al, cl,a2, c2};

}

若想通过键盘输入,使得al的值为12, a2的值为34,cl的值为字符a, c2的值为字符b,程序输出结果是: 12,a,34,b则正确的输入格式是(以下口代表空格,代表回车)( C )

A.12口a口34口b

B.12口a34口b

C.12a34b

D.12, a, 34,b

第三章控制语句

21、有以下程序

#include

main()

{ int x=1,y=2,z=3;

if(x>y)

if(y

else printf(“%d”,++y);

printf(“%d\n”,x++);

}

程序的运行结果是( D )

A) 4 1 B) 2 C)3 3 1 D)1

22、以下叙述中正确的是( A)

A) break语句只能用在循环体内和swich语句体内

B)在循环体内使用break语句和continue语句的作用相同

C)break语句只能用于switch语句体中

D)continue语句的作用是:使程序的执行流程跳出包含它的所有循环23、有以下程序

#include

main()

{ int k=5;

while (--k) printf(“%d”,k -= 3);

printf("\n”);

}

执行后的输出结果是( C)

A死循环 B 4 C 1 D 2

24. 若有以下程序

#include

main ()

{ int s=0, n;

for (n=0; n<4; n++)

{ switch(n)

{ default: s+=4;

case 1: s+=l;

case 2: s+=2;

case 3: s+=3;

}

}

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

}

则程序的输出结果是( B)

A.18

B.24

C.10

D.6

25. 若有以下程序

#include

main ()

{ int a=6,b=0,c=0;

for ( ;a; ) { b += a; a -= ++c; }

printf ("%d, %d, %d\n", a,b,c);

}

则程序的输出结果是( B )

A.1,14,3

B.0,14,3

C.0,18,3

D.0,14,6

26. 若有以下程序

#include

main ()

{ int a=l,b=2,c=3, d=4;

if ( (a=2)||(b=l)) c=2;

if ((c==3)&&(d=-l)) a=5;

printf ( "%d, %d, %d,%d\n", a, b, c, d);

}

则程序的输出结果是( D )

A.5.1.2,-1

B.2.1.2,-1

C.1,2,3,4

D.2,2,2,4

27. 以下叙述中正确的是(A)

A.我们所写的毎条C语句,经过编译最终都将转换成二进制的机器指令

B.只有简单算法才能在有限的操作步骤之后结束

C.如果算法非常复杂,则需要使用三种基本结构之外的语句结构,才能准确实现;

D.程序必须包含所有三种基本结构才能成为一种算法

28. 有以下程序

#include

main()

{ int a=l,b=2,c=3,d=0;

if (a==l && b++==2)

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); }

程序运行后的输出结果是(D)

A.1,2,3

B.3,2,1

C.1,3,2 D1,3,3

29. 有以下程序段

#include

int a, b, c;

a=10; b=50; c=30;

if (a>b) a=b, b=c; c=a;

printf("a=%d b=%d c=%d\n", a, b, c);

程序的输出结果是(B)

A.a=10 b=50 c=30

B.a=10 b=50 c=10

C.a=10 b=30 c=10

D.a=50 b=30 c=50

30. 有以下程序

#include

main ()

{int x;

for( x=3; x<6; x++ )

printf ((x%2 ) ?("*%d"): ("#%d"),x);

printf("\n");

}

程序的输出结果是( D )

A.*3*4#5

B.#3*4#5

C.*3#4#5

D.*3#4*5

31. 有以下程序

#include

main ()

{ int a, b;

for( a=l,b=l; a<=100; a++ )

{ if(b>=20) break;

if(b % 3==1) { b=b+3; continue; }

b=b-5;

}

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

}

程序的输出结果是( D )

A.9

B.7

C.10

D.8

32. 以下叙述中正确的是( A )

A)只要适当地修改代码,就可以将do-while与while相互转换

B)如果根据算法需要使用无限循环(即通常所称的“死循环”),则只能使用while语句

C)对干"for(表达式1;表达式2;表达式3)循环体",只在个别情况下才能转换成while语句

D)对于"for(表达式1;表达式2;表达式3)循环体〃首先要计算表达式2的值,以便决定是否开始循环

33. 以下叙述中正确的是( A )

A)if子句和else子句中可以是任意的合法的c语句

B)不能在else子句中再嵌套if语句C)改变if-else语句的缩进格式,会改变程序的执行流程

D)if语句只能嵌套一层

34 有以下程序

#include

main ()

{ int i, j , m=55;

for(i=l;i<=3;i++)

for(j=3; j<=i; j++) m=m%j ;

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

}

程序的运行结果是( A )

A) 1 B) 3 C) 2 D) 0

35. 以下叙述中正确的是( D )

A)for语句的圆括号中的表达式不能都省略掉

B)循环嵌套时,如果不进行缩进形式书写代码,则会有编译错误

C)循环发生嵌套时,最多只能两层

D)三种循环for,while,do-while可以互相嵌套

36. 关于

do 循环体while (条件表达式};

以下叙述中正确的是( D)

A)条件表达式的执行次数与循环体的执行次数一样

B)条件表达式的执行次数与循环体的执行次数无关

C)条件表达式的执行次数总是比循环体的执行次数多一次

D)循环体的执行次数总是比条件表达式的执行次数多一次

37. 若变量己正确定义,在if (W) printf('%d\n" ,k );中,以下不可替代W的是( A )

A. a<>b+c

B.a==b+c

C.ch=getchar()

D.a++

第四章数组

38、以下叙述中正确的是( D)

A.一条语句只能定义一个数组

B.数组说明符的一对方括号中只能使用整型常量,而不能使用表达式

C.在引用数组元素时,下标表达式可以使用浮点数

D.每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元

39.有以下程序

#inlcude

main()

{int s[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;

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

c[s[i]]++;

for(i=1;i<5;i++)

printf(“%d”,c[i]);

printf(“\n”);

}

程序的运行结果是( D)

A)1 1 2 3 B)2 3 4 4 C) 1 2 3 4 D) 4 3 3 2

40、有以下程序

#include

main()

{ char s[]="abcde”;

s+=2;

printf(”%d\n”,s[0]);

}执行后的结果是( D )

A输出字符C B输出字符a的ASCII码

C输出字符c的ASCII码 D 程序出错

41、若要求从键盘读入含有空格字符的字符串,应使用函数( D)

A.scanf ()

B.getchar()

C.getc()

D.gets()

42. 以下叙述中正确的是( C )

A.语句char a [3]; a = "AB";是合法的,因为数组有三个字符空间的容量,可以保存两个字符

B.语句char a [2]={"A", "B"};是合法的,定义了一个包含两个字符的数组

C.语句int a [8] = { 0};是合法的

D.语句int a [] = {0};是不合法的,遗漏了数组的大小

43. 以下叙述中正确的是( B)

A.数组下标的下限是1

B.char cl, c2, *c3, c4 [40];是合法的变量定义语句

C.数组下标的下限由数组中笫一个被赋值元素的位置决定

D.数组下标的下限由数组中笫一个非零元素的位置决定

44. 以下错误的定义语句是( A )

A.int x[4] []= {{1,2,3}, {1,2,3}, {1,2,3}, {1,2, 3} };

B.int x[][3]={1,2,3,4};

C.int x[] [3]={{0},{l},{1,2,3}};

D.int x[4][3] = {{l,2,3},{l,2,3},{1, 2,3},{1,2,3}};

45. 若有以下程序

#include

main()

{ int i,j=0;

char a[]="How are you!";

for (i=0; a[i]; i++)

if a[i] != ' ') a[j++]=a[i];

a[j] = '\0';

printf("%s\n",a);

}则程序的输出结果是( D )

A) Hay! B) How are you! C) Howareyou D) Howareyou!

46. 以下叙述中正确的是( C )

A.字符数组的每个元素可存放一个字符,并且最后一个元素必须是'\0'字符

B.字符串常量"strl"的类型是:字符串数据类型

C.下面的语句用赋初值方式来定义字符串,其中'\0'是必须的

char strl[] = {'s', 't','r','\0'};

D.有定义语句:char strl [] = "strl";数组strl将包含4个元素

47. 以下叙述中正确的是( D)

A.两个字符串可以用关系运算符进行大小比较

B.函数调用strlen(s);会返回字符串s实际占用内存的大小(以字节为单位)

C.当拼接两个字符串时,结果字符串占用的内存空间是两个原串占用空间的和

D.C语言本身没有提供对字符串进行整体操作的运算符

48. 以下选项中,没有编译错误的是( D )

A) char str4[]; str4 = "hello world";

B) char str1[5]="pass", str2 [6]; str2 = str1;

C) char name [10]; name = "china";

D) char str3[] = {'d', 'e', 'b','u', 'g', '\0' };

49. 有以下程序

# include main()

{ char a [5] [10]={"one", "two","three", "four", "five"};

int i, j ;

char t;

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

for ( j=i+l; j<5; j++ )

if(a[i][0]>a [j][0])

{

t=a[i][0]; a[i][0]=a[j] [0]; a[j][0]=t;

}

puts (a [1]);

}

程序运行后的输出结果是( B )

A) fix B) fwo C) two D) owo

50. 有以下程序(strcpy为字符串复制函数,strcat为字符串连接函数) #include

#include

main ()

{ char a[10] = "abc", b[10] = "012", c[10] = "xyz";

strcpy( a+1, b+2 );

puts( strcat( a,c+1 ));

}程序运行后的输出结栗是( D )

A) 12yz B) bc2yz C) al2xyz D) a2yz

51. 若有以下定义和语句

#include

char s1[10]= "abed!", *s2="\nl23\\";

printf("%d %d\n", strlen(sl), strlen(s2));

则输出结果是(C)

A.5 8

B.10 5

C.5 5

D.10 7

52. 有以下程序

#include

main ()

{ int i, x[3] [3] = { 1, 2,3, 4, 5,6, 7, 8, 9 };

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

printf ( "%d ", x[i] [2-i]);

printf( "\n");

}

程序的输出结果是( A )

A) 3 5 7 B) 3 6 9 C) 1 4 7 D) 1 5 0

53. 有以下程序

#include

main ()

{ int x[3][2]={0},i;

for(i=0; i<3; i++) scanf("%d",&x[i]);

printf ("%3d%3d%3d\n", x [0][0] ,x[0][1] ,x[l][0]);

}

若运行时输入:2 4 6<回车>,则输出结果为( C )

A) 2 4 0 B) 2 4 6 C) 2 0 4 D) 2 0 0

54. 若有以下程序

#include

main()

{char w[20],a[5][10]={"abcdef","ghijkl", "ranopq","ratuv","wxyz"};

int p[6] [2] = {{0,1},{1,5},{0,0},{0,2},{1,4},{4,4}}, i;

for (i=0; i<6; i++) w[i]=a[ p [i] [0]] [ p[i] [1]];

puts (w);

}

则程序的输出结果是( A )

A) black B) catis C) ckbdl D) ababj

55. 若有以下程序

#include

main()

{ char a[20], b[ ]="The sky is blue."; int i;

for (i=0; i<7; i++) scanf ("%c",&b [i]);

gets(a); printf("%s%s\n",a,b);

}

执行时若输入:(其中表示回车符)

Fig flower is red.

则输出结果是( A )

A) wer is red.Fig flo is blue.

B) Fig flower is red.The sky is blue.

C) wer is red.The sky is blue.

D) wer is red.Fig flo

第五章函数

56、以下叙述中错误的是( A )

A) 函数形参的值也可以传回给对应的实参

B)函数调用可以作为一个独立的语句存在

C)C程序必须由一个或一个以上函数组成

D)若函数有返回值,必须通过return语句返回

57、以下叙述中正确的是( D )

A函数名允许用数字开头

B 在函数体中只能出现一次return语句

C函数调用时,不必区分函数名称的大小写

D 调用函数时,函数名必须与被调用的函数名完全一致

58. 以下叙述中正确的是( B )

A.在C语言的函数内部,可以定义局部嵌套函数

B.实用的C语言源程序总是由一个或多个函数组成

C.用户自己定义的函数只能调用库函数

D.不同函数的形式参数不能使用相同名称的标识符

59. 有以下程序

#include

int fun (int a, int b)

{ if (b==0) return a;

else return (fun(--a,--b));

}

main ()

{ printf("%d\n", fun(4,2)) ; }

程序的运行结果是( C )

A.1

B. 4

C. 2

D. 3

60. 以下选项中叙述错误的是(A)

A.C程序函数的形参不可以说明为static型变量

B.在C程序的同一函数中,各复合语句内可以定义变量,其作用域仅限本复合语句内

C.C程序函数中定义的自动变量,系统不自动赋确定的初值

D.C程序函数中定义的赋有初值的静态变量,每调用一次函数,赋一次初值

61. 以下叙述中正确的是( D) A.所有函数均不能接受函数名作为实参传入

B.如果函数带有参数,就不能调用自己

C.函数体中的语句不能出现对自己的调用

D.函数名代表该函数的入口地址

62. 以下叙述中正确的是( D )

A.只有在函数内部定义的变量才是局部变量

B.只有全局变量才有自己的作用域,函数中的局部变量没有作用域

C.局部变量不能被说明为static

D.只要是用户定义的标识符,都有一个有效的作用域

63. 以下关子reurn语句的叙述中正确的是( A )

A.一个自定义函数中可以根据不同情况设置多条return语句

B.没有return语句的自定义函数在执行结束时不能返回到调用处

C.定义成void类型的函数中可以有带返回值的return语句

D.一个自定义函数中必须有一条return语句

64. 设有如下函数定义

#include

int fun( int k )

{ if (k

else if (k==l) return 1;

else return fun(k-1)+1;

}

若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是( C )

A.4

B.5

C.2

D.3

65. C语言主要是借助以下哪种手段来实现程序模块化( A)

A.定义函数

B.使用三种基本结构语句

C.定义常量和外部变量

D.使用丰富的数据类型

66. 以下叙述中正确的是( D )

A)程序可以包含多个主函数,但总是从第一个主函数处开始执行

B)书写源程序时,必须注意缩进格式,否则程序会有编译错误

C)程序的主函数名除main外,也可以使用Main或_main

D)在C程序中,模块化主要是通过函数来实现的

67. 有以下程序

#include

void fun( int a, int b, int c )

{ a=b; b=c; c=a; }

main ()

{ int a=10 , b=20, c=30;

fun( a, b, c );

printf ("%d, %d, %d\n",c, b, a);

}

程序运行后的输出结果是( C )

A) 20,30,10 B) 0,0,0

C) 30,20,10 D) 10,20,30

68. 有以下程序

#include

int f( int x );

main()

{ int a, b=0;

for ( a=0; a<3;a+=1)

{ b += f(a);putchar('A'+b);}

}

int f ( int x )

{ return x*x+l;}

程序运行后输出结果是( D )

A) ABE B) BCF C) BCD D) B DI

69. 若有以下程序

#include

int a=2;

int f(int m)

{ static int n;

n=0; n++; a++;

return n+m+a;

}

main ()

{ int k;

for (k=0; k<4; k++) printf("%d,", f(k));

则程序的输出结果是( D)

A) 3,5,7,9, B) 4,5,6,7, C) 4,7,10,13, D) 4,6,8,10,

70. 有以下程序

#include

int a=l, b=2;

void funl( int a, int b )

{ printf( "%d %d " ,a, b ); }

void fun2()

{ a=3; b=4; }

main()

{ fun1(5,6); fun2();

printf( "%d %d\n",a, b );

}

程序运行后的输出结果是( D )

A)3 4 5 6 B)5 6 1 2 C) 1 2 5 6 D)5 6 3 4

71、有以下程序

#include

int fun ()

{ static int x=1;

x*=2;

return x;

}

main()

{ int i, s=1;

for( i=1; i<=3; i++ ) s*=fun();

printf ("%d\n”, s);

}

程序运行后的输出结果是( A )

A 64

B 10

C 30

D 0

第六章编译预处理

72、有以下程序

#include

#define SUB( X, Y ) (X+1)*Y

main ()

{ int a=3, b=4;

printf (" %d\n", SUB (a++ ,b++ ));

}程序运行后的输出结果是( D )

A.12

B.25

C.20

D.16

73、下列叙述中错误的是( D )

A.一个c函数可以单独作为一个C程序文件存在

B.C程序可以由多个程序文件组成

C.C程序可以由一个或多个函数组成

D.一个C语言程序只能实现一种算法

74. 若有以下程序

#include

#define S(x) x*x

#define T (x) S(x)*S(x)

main()

{ int k=5,j=2;

printf("%d,%d\n",S(k+j),T(k+j));

}则程序的输出结果是( D)

A.49,289

B.17,289

C.49,2401

D.17,37

75. 以下叙述中正确的是(B)

A)虽然包含文件被修改了,包含该文件的源程序也可以不重新进行编译和连接

B)在一个程序中,允许使用任意数量的#include命令行

C) #include命令行不能出现在程序文件的中间

D)在包含文件中,不得再包含其他文件

第七章指针

76、以下定义语句中正确的是( D)

A) double a=0.0;b=1.1;

B) float a=1,*b=&a,*c=&b;

C) int a=b=0;

D) chart A=65+1,b=?b?

77、若有定义语句

int a[2][3],*p[3];

则以下语句中正确的是(D)

A)p=a; B)p[0]=a; C) p[1]=&a; D) p[0]=&a[1][2]

78、有以下程序

#include

main ()

{int a=1, b=3, c=5;

int *pl=&a, *p2=&b,*p=&c;

*p =*pl*(*p2);

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

}执行后的输出结果是( D )

A 4

B 1

C 2

D 3

79、以下叙述中正确的是( A )

A设有指针变量为double *p,则p+1将指针p移动8个字节

B基类型不同的指针变童可以相互混用

C函数的类型不能是指针类型

D 函数的形参类型不能是指针类型

80、以下叙述中正确的是( A)

A在对指针进行加、减算术运算时,数字1表示1个存储单元的长度B 如果P是指针变量,则*p表示变量P的地址值

C如果P是指针变量,则&P是不合法的表达式

D如果P是指针变量,则*p+1和* (p+1)的效果是一样的

81、以下语句中存在语法错误的是( A)

A char ss[6][20]; ss[l]= "right?";

B char *ss[6]; ss[1]= "right?";

C char *ss[]={ "right? "};

D char ss [ ] [20] = { "right?"};

82、有以下程序

#include

void swap(char *x, char *y)

{char t;

t=*x; *x=*y;*y=t;

}

main()

{ char *sl=”abc”,*s2=”123”;

swap(sl, s2);

printf ("%s, %s\n”, s1, s2);

}程序执行后的输出结果是(A)

A 1bc,a23

B 123,ab

C C abc,123

D 321,cba

83、有以下函数

int fun(char *x, char *y)

{int n=0;

while ( (*x==*y)&&*x!= '\0' ) {x++; y++;n++;}

return n ;

}

函数的功能是(B)

A将y所指字符串赋给x所指存储空间

B统计x和y所指字符串中最前面连续相同的字符个数C查找x和y所指字符串中是否有?\0 …

D统计x和y所指字符串中相同的字符个数

84、如果定义

float a [10],x;

则以下叙述中正确的是( A )

A语句a = &x;是非法的

B 表达式*&a[l]是非法的,应该写成*(&(a[[1]])

C 三个表达式a[l]、* (a+1)、*&a[1]表示的意思完全不同

D 表达式a+1是非法的

85、有以下程序

#include

#include

void fun(char *s[], int n)

{ char *t; int i, j;

for (i=0; i

for (j=i + l; j

if (strlen(s[i]) > strlen(s[j]))

{ t = s[i];s[i] = s[j]; s[j] = t; }

}

main ()

{ char * ss[] = {"bcc","bbcc","xy", "aaaacc", "aabcc"};

fun(ss,5);

printf("%s,%s\n", ss [0],ss [4]);

}程序的运行结果是( B )

A .aabcc,bcc B. xy,aaaacc C .bcc,aabcc D. aaaacc,xy

86、有以下程序

#include

main()

{ char c[2] [5] = {"6938","8254" }, *p[2];

int i, j, s=0;

for( i=0; i<2; i++ ) p[i]=c[i];

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

for ( j=0; p[i][j]>0 ; j+=2 )

s=10*s+p[i][j]-'0';

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

}程序运行后的输出结果是( D )

A.9824

B.6938

C.4528

D.6385

87. 以下选项中正确的语句组是( B)

A.char *s;s= { "BOOK ! "};

B.char *s; s="B00K!";

C.char s[]; s="BOOK!";

D.char s[10]; s=" BOOK!";

88. 若在定义语句:

int a, b, c,*p=&c;

接着执行以下选项中的语句,则能正确执行的语句是( A )

A.scanf("%d",p);

B.scanf ("%d%d%d",a,b,c);

C.scanf("%d",&p);

D.scanf{"%d",a,b,c);

89. 设有定义

double a[10] ,*s=a

以下能够代表数组元素a [3]的是( A )

A.*(s+3)

B.*s+3

C.*s[3]

D.(*s)[3]

90. 有以下程序

# include

void f( int *q)

{ int i=0;

for ( ;i<5; i++) (*q)++;

}

main ()

{ int a[5] ={1,2,3,4,5}, i;

f (a);

for (i=0;i<5; i ++) printf("%d,", a[i]);

}程序运行后的输出结果是( C)

A.2, 2, 3, 4, 5,

B.2, 3, 4, 5, 6,

C.6, 2, 3, 4, 5,

D.1, 2, 3, 4, 5,

91. 有以下程序

#include

void fun( int x, int y, int *c,int *d )

{ *c = x+y;*d= x-y; }

main()

{ int a=4, b=3, c=0, d=0;

fun ( a, b, &c, &d );

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

}程序的输出结果是( D )

A) 3 4 B) 0 0 C) 4 3 D) 7 1

92. 有以下程序

#include

char fun ( char *c )

{if ( *c<='Z' && *c>='A')

*c -= 'A'-'a';

return *c;

}

main ()

{char s[81], *p=s;

gets( s );

while( *p )

{ *p =fun ( p );

putchar( *p );

p++;}

printf("\n");

}若运行时从键盘上输入open THE DOOR<回车>,程序输出结果是D A)Open The Door B)OPEN tHE dOOR

C)OPEN THE DOOR D)open the door

93. 有以下程序

#include

#define N 3

void fun(int a [ ] [N], int b [])

{ int i, j;

for( i=0; i

{ b[i] = a[i] [0];

for ( j=l; j

if ( b[i] < a[i] [j] ) b[i] = a[i] [j];

}

}

main ()

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

for ( i=0; i

pnntf ( "\n");

}程序运行后的输出结果是( B )

A) 1,3,5, B) 3,6,9, C) 3,5,7 D) 2,4,8,

94. 有以下程序

#include

main()

{ int a[5]={2,4,6,8,10}, *P,**k;

p = a; k = &p;

printf("%d ", *( p++ ));

printf ("%d\n", **k );

}程序运行后的输出结果是( D )

A) 4 6 B)4 4 C) 2 2 D) 2 4

95. 有以下程序

#include

void fun ( int n ,int )

{ int f;

if( n==l ) *s= n+1 ;

else

{

fun ( n-1, &f);

*s= f ;

}

}

main ()

{ int x =0;

fun ( 4, &x );

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

}程序运行后的输出结果是( A )

A) 2 B) 4 C) 3 D) 1

96. 有以下程序

#include

void fun ( int a, int b )

{ int t;

t=a; a=b; b=t;

}

main () { int c[10] ={1,2, 3, 4, 5, 6,7,8, 9,0},i;

for (i=0; i<10; i+=2) fun(c[i],c[i+i]);

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

printf ("\n");

}程序的运行结果是( D)

A) 0,9, 8,7, 6, 5, 4, 3,2,1, B) 2,1, 4,3, 6, 5,8,1, 0, 9,

C) 0,1,2,3,4,5,6,7,8,9, D) 1,2, 3,4, 5, 6,7, 8, 9,0,

97、有以下程序段

int *p;

p= D malloc ( sizeof ( int ));

若要求使p指向一个int型的动态存储单元,在横线处应填入的是

A.int

B.(*int )

C.int *

D.(int *)

98. 有以下程序

#include

void fun(int *a,int n),/*fun函数的功旎是将a所指数组元素从大到小排序*/ { int t, i, j;

for (i=0; i

for (j=i+l; j

if (a[i]

}

main ()

{ int c[10]={1,2,3,4,5,6,7,8,9,0},i;

fun(c+4, 6);

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

printf ("\n");

}程序的运行结果是( A )

A.1,2,3,4,9,8,7,6,5,0,

B.1,2,3,4,5,6,7,8,9,0,

C.0,9,8,7,6,5,4,3,2,1,

D.0,9,8,7,6,5,1,2,3,4,

99. 有以下程序

#include

int fun( int (*s) [ 4 ], int n, int k)

{ int m, i;

m=s[0] [k];

for(i=l; i

if(s[i][k]>m)

m= s [i] [k];

return m;

}

main ()

{int a[4][4]={{1,2,3,4}, {11,12,13,14},{21, 22,23,24}, {31, 32, 33, 34}}; printf("%d\n",fun (a, 4,0));}

程序的运行结果是( D)

A.34

B.4

C.32

D.31

100. 有以下程序

#include

main()

{char *s="12134";

int k=0, a=0 ;

while( s[ k +1 ])

{ k++;

if ( k % 2 ==0 )

{ a=a+(s[k]-'0' +1);

continue;}

a = a + ( s [ k ] - '0');

}

printf ("k=%d a=%d\n", k, a );

}程序运行后的输出结果是( D )

A)k=6 a=ll B)k=3 a=14 C)k=5 a=15 D)k=4 a=12

第八章结构体

101、以下程序

#inlclude

struct STU{char name[9]; char sex; int score[2];};

void f(struct STU a[])

{struct STU b={“Zhao”,?m?,85,90};

a[1]=b;

}

main()

{struct STU c[2]={{“Qian”,?f?,95,92},{“Sun”,?m?,98,99}};

f(c);

printf(“%s,%c,%d,%d,”,c[0].name,c[0].sex,c[0].score[0],c[0].score[1]); printf(“%s,%c,%d,%d,”,c[1].name,c[1].sex,c[1].score[0],c[1].score[1]); }程序运行后输出结果是(D )

A ZhaO,m, 85, 90,Qian, f, 95, 92

B Zhao,m, 85, 90,Sun,m, 98, 99

C Qian,f,95,92,Sun,m,98,99

D Qian,f,95,92,Zhao, m,85,90

102、以下叙述中错误的是( B )

A.可以用typedef说明的新类型名来定义变量

B. typedef说明的斩类型名必须使用大写字母,否则会出编译错误

C.用typedef可以说明一种新的类型名

D. typedef的作用是用一个新的标识符来代表己存在的类型名

103、以下叙述中错误的是( D)

A 可以通过指针变量来访问结构体变量的任何成员

B 函数可以返回指向结构体变量的指针

C 只要类型相同,构体变量之间可以整体赋值

D 函数的返回值类型不能是结构体类型,只能是简单类型

104、若有以下程序段

struct st{ int n; struct st *next; };

struct st a[3]={ 5,&a[1],7,&a[2],9,'\0' }, *p;

p=&a[0];

则以下选项中值为6的表达式是( D)

A.p->n

B.(*P)?n

C.p->n++

D.++(p->n)

105. 以下结构体说明和变量定义中,正确的是(D)

A.struct ABC{ int n;double m; }

struct ABC x, y;

B.struct abc{ int n;double m };

struct abc x, y;

C.struct abc{ int n;double m; };

abc x, y;

D.typedef struct abc{ int n; double m; } ABC;

ABC x, y;

106. 程序中已构成如下图所示的不带头结点的单向链表结构,指针变量s、p、q均已正确定义,幷用于指向链表结点,指针变量s总是作为头指针指向链表的第一个结点。

data next 若有以下程序段

q=s; s=s->next; p=s;

while (p->next) p=p->next;

p->next=q; q->next=NULL;

该程序段实现的功能是( D)

A.刪除尾结点

B.刪除首结点

C.尾结点成为首结点

D.首结点成为尾结点

107. 若有以下语句

typedef struct S

{ int g; char h; } T;

以下叙述中正确的是( A)

A)可用T定义结构体变量B)T是struct S类型的变量C)S是struct类型的变量D)可用S定义结构体变量第九章位运算和文件

108、若有定义语句

int b=2;

则表达式(b<<2 ) / (3||b)的值是( D )

A 4

B 0

C 2

D 8

109. 有以下程序

#include

main()

{ int a=l, b=2, c-3, x;

x = (a^b) &c;

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

}程序的运行结果是( A)

A)3 B)1 C)0 D)2

110.有以下程序

#include

main()

{FILE *fp;

int k, n, a[6]={1,2,3,4,5,6};

fp = fopen ("d2 . dat", "w");

fprintf(fp, "%d%d%d\n", a[0],a[1],a[2]);

fprintf(fp, "%d%d%d\n", a[3],a[4],a[5]);

fclose(fp);

fp = fopen("d2.dat", "r");

fscanf (fp, "%d%d", &k, &n);

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

fclose ( fp);

}程序运行后的输出结果是(A)

A) 123 456 B) 1 2 C) 1 4 D) 123 4 111. 有以下程序

#include

main ()

{ FILE *fp;

int a[10]={1,2,3,0,0}, i;

fp = f open{ "d2 .dat", "wb");

fwrite(a, sizeof(int), 5, fp);

fwrite(a, sizeof(int), 5, fp);

fclose(fp);

fp = fopen("d2.dat", "rb");

fread(a, sizeof(int), 10, fp);

fclose(fp);

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

printf ("%d,", a [i]);

}

程序的运行结果是(D)

A)1, 2, 3,1, 2, 3, 0, 0, 0, 0, B)123,0,0,0, 0,123, 0, 0,0, 0, C)1,2,3,0,0,0,0,0,0,0, D)1,2,3,0,0,1,2,3,0,0,

公司c语言笔试题

1.写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。 (#defineMIN(A,B)((A)<= (B) (A) : (B))) 2.用变量a给出下面的定义 a)一个整型数(int a) b)一个指向整型数的指针(int *a) c)一个指向指针的的指针,它指向的指针是指向一个整型数(int **a)d)一个有10个整型数的数组(int a[10]) e)一个有10个指针的数组,该指针是指向一个整型数的(int *a[10])f)一个指向有10个整型数数组的指针(int (*a)[10]) g)一个指向函数的指针,该函数有一个整型参数并返回一个整型数 (int(*a)(int)) 3.int a = 5, b = 7, c; c = a+++b; a=(6), c=(12) 4.char str[] =“Hello”;char *p = str ;int n = 10; 请计算 sizeof (str ) = (6); sizeof ( p ) = (4) sizeof ( n ) = (4) 5. void Func ( char str[100]) { 请计算 sizeof( str ) = (4); }

6. void *p = malloc( 100 ); 请计算 sizeof ( p ) =(4); 7.以下程序的输出结果是 main( ) { int k=17; printf(“%d,%o,%x \n”,k,k,k); }(17,21,11) 8.在位运算中,操作数每右移一位,其结果相当于(操作数除以2) 9.若x和n均是int型变量,且x和n的初值均为5,则计算表达式x+=n++ 后x的值为(10),n的值为(6) 10.若有定义:inta[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的初值是(0),a[2][1]得到的初值是(6)。 11.若有定义:int a=8,b=5,C;,执行语句C=a/b+;后,c的值为(1) 12.请写出下列代码的输出内容(10,12,120) #include<> main() { int a,b,c,d; a=10; b=a++;

C语言期末考试题(含答案)

《C 语言程序设计》期末试卷 一、单项选择题(10x2’=20’) 1、以下叙述正确的是() A )C 语言的源程序不必通过编译就可以直接运行。 B ) C 语言中的每条可执行语句最终都将被转换成二进制的机器指令。 C )C 语言源程序经编译形成的二进制代码可以直接运行。 D )C 语言中的函数不可以单独进行编译。 2、一个C 语言的源程序中() A )必须有一个主函数 B )可能有多个主函数 C )必须有除主函数外其它函数 D )可以没有主函数 3、以下不能定义为用户标识符的是() A )scanf B )Void C )_3com D )int 4、若以下选项中的变量已正确定义,则正确的赋值语句是() A )x1=26.8%3; B )1+2=x2; C )x3=0x12; D )x4=1+2=3; 5、设有定义:floata=2,b=4,h=3;以下C 语言表达式中与代数式h b a *)(2 1 的计算结果不.相符的是() A )(a+b)*h/2 B )(1/2)*(a+b)*h C )(a+b)*h*1/2 D )h/2*(a+b) 6、C 语言中用于结构化程序设计的3种基本结构是() A )顺序结构、选择结构、循环结构 B )if 、switch 、break C )for 、while 、do-while D )if 、for 、continue 7.在while (!x )语句中的!x 与下面条件表达式等价的是() A)x!=0B)x==1C)x!=1D)x==0

8、有以下程序: #include voidmain(){ inti=1,j=1,k=2; if((j++||k++)&&i++) printf(“%d,%d,%d\n”,i,j,k);} 执行后的输出结果是() A)1,1,2 B)2,2,1 C)2,2,2 D)2,2,3 9、有以下程序: #include voidmain(){ inti,s=0; for(i=1;i<10;i+=2) s+=i+1; printf(“%d\n”,s);} 程序执行后的输出结果是() A)自然数1~9的累加和B)自然数1~10的累加和 C)自然数1~9中奇数之和D)自然数1~10中偶数之和 10、有以下函数定义: voidfun(intn,doublex){……} 若以下选项中的变量都已经正确定义并赋值,则对函数fun的正确调用语句是()A)fun(inty,doublem); B)k=fun(10,12.5); C)fun(x,n);D)voidfun(n,x); 二、填空题(10x2’=20’) 11、C语言描述“x和y都大于或等于z”的表达式是:。 12、函数定义时涉及的基本要素是:、、。

嵌入式C语言经典笔试题目

嵌入式c语言经典笔试题目 1 .用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1) #define语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2)懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。 3)意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。 4)如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。记住,第一印象很重要。 2 .写一个"标准"宏MIN,这个宏输入两个参数并返回较小的一个。 #define MIN(A,B)((A)<= (B) ? (A) : (B)) 这个测试是为下面的目的而设的: 1)标识#define在宏中应用的基本知识。这是很重要的。因为在嵌入(inline)操作符变为标准C的一部分之前,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。 2)三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码,了解这个用法是很重要的。 3)懂得在宏中小心地把参数用括号括起来 4)我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事? least = MIN(*p++, b); 3.预处理器标识#error的目的是什么? 如果你不知道答案,请看参考文献1。这问题对区分一个正常的伙计和一个书呆子是很有用的。只有书呆子才会读C语言课本的附录去找出象这种问题的答案。当然如果你不是在找一个书呆子,那么应试者最好希望自己不要知道答案。 死循环(Infinite loops) 4.嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢? 这个问题用几个解决方案。我首选的方案是: while(1) { } 一些程序员更喜欢如下方案: for(;;) { } 这个实现方式让我为难,因为这个语法没有确切表达到底怎么回事。如果一个应试者给出这个作为方案,

C语言考试题库及答案复习整理

C 语言理论上机考试选择题部分(共200题) 1、下面程序的输出是___D______ #include void main() { int k=11; printf("k=%d,k=%o,k=%x\n",k,k,k); } A) k=11,k=12,k=11 B) k=11,k=13,k=13 C) k=11,k=013,k=0xb D) k=11,k=13,k=b 2、在下列选项中,不正确的赋值语句是__D______. A) ++t; B) n1=(n2=(n3=0)); C) k=i=j; D) a=b+c=1; 3、下面合法的C 语言字符常量是______A____. A) '\t' B) "A" C) 65 D) A 4、表达式: 10!=9的值是 ________D____. A) true B) 非零值 C) 0 D) 1 5、C 语言提供的合法的数据类型关键字是_____B____. A) Double B) short C) integer D) Char 6、字符(char)型数据在微机内存中的存储形式是__D__. A) 反码 B) 补码 C) EBCDIC 码 D) ASCII 码 7、C 语言程序的基本单位是_____C______. A) 程序行 B) 语句 C) 函数 D) 字符 8、设 int a=12,则执行完语句

a+=a-=a*a 后,a 的值是____D____ A) 552 B) 264 C) 144 D) -264 9、执行下面程序中的输出语句后,输出结果是____B__. #include void main() {int a; printf("%d\n",(a=3*5,a*4,a+5)); } A) 65 B) 20 C) 15 D) 10 10、下面程序的输出是____B______. #include void main() {int x=023; printf("%d\n",--x); } A) 17 B) 18 C) 23 D) 24 11、下面程序的输出的是_____C____. #include void main() {int x=10,y=3; printf("%d\n",y=x/y); } A) 0 B) 1 C) 3 D) 不确定的值 12、已知字母A 的ASCII 码为十进制的65,下面程序的输出是______A_____. #include void main() {char ch1,ch2; ch1='A'+'5'-'3'; ch2='A'+'6'-'3'; printf("%d,%c\n",ch1,ch2); } A) 67,D B) B,C C) C,D D) 不确定的值 13、若要求在if 后一对圆括号中表示a 不等于0的关系,则能正确表示这一关系的表达式为____D__. A) a<>0 B) !a C) a=0 D) a

历年二级C语言笔试真题及答案

1 2009年9月全国计算机等级考试二级笔试 试卷 1)下列数据结构中,属于非线性结构的是 A )循环队列 B) 带链队列 C) 二叉树 D )带链栈 2)下列数据结果中,能够按照“先进后出”原则存取数据的是 A) 循环队列 B) 栈 C)队列 D)二叉树 3)对于循环队列,下列叙述中正确的是 A )队头指针是固定不变的 B )队头指针一定大于队尾指针 C )队头指针一定小于队尾指针 D )队头指针可以大于队尾指针,也可以小于队尾指针 4)算法的空间复杂度是指 A )算法在执行过程中所需要的计算机存储空间 B )算法所处理的数据量 C )算法程序中的语句或指令条数 D )算法在执行过程中所需要的临时工作单元数 5)软件设计中划分模块的一个准则是 A) 低内聚低耦合 B) 高内聚低耦合 C) 低内聚高耦合 D) 高内聚高耦合 6)下列选项中不属于结构化程序设计原则的是 A) 可封装 B) 自顶向下 C) 模块化 D) 逐步求精 7)软件详细设计产生的图如下: 该图是 A) N-S 图 B) PAD 图 C) 程序流程图 D) E-R 图 8)数据库管理系统是 A )操作系统的一部分B) 在操作系统支持下的系统软件C) 一种编译系统 D) 一种操作系统 9)在E-R 图中,用来表示实体联系的图形是 A) 椭圆图B) 矩形C) 菱形D) 三角形 10)有三个关系R ,S 和T 如下: 其中关系T 由关系R 和S 通过某种操作得到,该操作为 A) 选择 B) 投影 C) 交 D) 并 11)以下叙述中正确的是 A )程序设计的任务就是编写程序代码并上机 B )程序设计的任务就是确定所用数据结 构 C )程序设计的任务就是确定所用算法 D )以上三种说法都不完整 12)以下选项中,能用作用户标识符的是 A )void B )8_8 C )_0_ D )unsigned 13)阅读以下程序 #include main() { int case; float printF; printf(“请输入2个数:”); scanf(“%d %f”,&case,&pjrintF); printf(“%d %f \n”,case,printF); } 该程序编译时产生错误,其出错原因是 A )定义语句出错,case 是关键字,不能 用作用户自定义标识符B )定义语句出错,printF 不能用作用户自定义标识符 C )定义语句无错,scanf 不能作为输入函 数使用 D )定义语句无错,printf 不能输出case 的值 14)表达式:(int)((double)9/2)-(9)%2的值是 A )0 B )3 C )4 D )5 15)若有定义语句:int x=10;,则表达式 x-=x+x 的值为 A )-20 B )-10 C )0 D )10 16)有以下程序 #include main() { int a=1,b=0; printf(“%d,”,b=a+b); printf(“%d \n”,a=2*b); } 程序运行后的输出结果是 A )0,0 B )1,0 C )3,2 D )1,2 17)设有定义:int a=1,b=2,c=3;,以下语 句中执行效果与其它三个不同的是 A )if(a>b) c=a,a=b,b=c; B )if(a>b) {c=a,a=b,b=c;} C ) if(a>b) c=a;a=b;b=c; D ) if(a>b) {c=a;a=b;b =c;} 18)有以下程序 #include main() { int c=0,k; for (k=1;k<3;k++) switch (k) {default: c+=k case 2: c++;break; case 4: c+=2;break; } printf(“%d \n”,c); } 程序运行后的输出结果是 A )3 B )5 C )7 D )9 19)以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是 A )if((a>b)&&(b>c)) k=1;else k=0; B )if((a>b)||(b>c) k=1;else k=0; C )if(a<=b) k=0;else if(b<=c) k=1; D )if(a>b) k=1;else if(b>c) k=1; else k=0; 20)有以下程序 #include main() { char s[]={“012xy”};int i,n=0; for(i=0;s[i]!=0;i++) if(s[i]>=?a?&&s[i]<=?z?) n++; printf(“%d \n”,n); } 程序运行后的输出结果是 A )0 B )2 C )3 D )5 21)有以下程序 #include 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 22)有以下定义语句,编译时会出现编译错误的是 A )char a=?a? B )char a=?\n?; C )char a=?aa?; D )char a=?\x2d?; 23)有以下程序 #include main() { char c1,c2; c1=?A?+?8?-…4?; c2=?A?+?8?-…5?; printf(“%c,%d \n”,c1,c2); } 已知字母A 的ASCII 码为65,程序运行后的输出结果是

c语言笔试题(答案)(精心整理)

笔试题 一、填空题(每个空4分,共28分) 1)struct tagABC { char name[10]; char sex; long sno; float score[4]; }*pAbc;(四字节对齐) pAbc=NULL; 那么,执行pAbc+=2;之后pAbc的值为(64 ) 2)如下代码,最终value的值是(8) int *p1,*p2; int value; p1=(int*)0×400; p2=(int*)0×408; value = p2-p1; 3)如下代码,printf的结果为(2) #include〈stdio.h〉 #include〈string.h〉 void main(void) { char acNew[20]= “\\0\0”; printf(“%d\n”,strlen(acNew)); } 4) 有如下程序段,运行该程序的输出结果是(33) main () { int y=3,x=3,z=1; printf(“%d%d\n”,(++x,y++),z+2); } 5)设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后,n的值为(2)6)struct tagAAA { Unsigned char ucId:1; Unsigned char ucPara0:2; Unsigned char ucState:6; Unsigned char ucTail:4; Unsigned char ucAvail; Unsigned char unTail2:4; Unsigned long ulData; }AAA_S 问:AAA_S在字节对齐分别为1,4情况下,占用的空间大小分别是多少?( 9)(12 )

C语言笔试题带答案6doc

2014-06-13 06:30:01 阅读( 135 ) 标签: 一、选择题(1)~(10)每小题2分,(11)~(50)每小题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)在数据结构中,从逻辑上可以把数据结构分为_______。 A)动态结构和静态结构 B)紧凑结构和非紧凑结构 C)线性结构和非线性结构D)内部结构和外部结构 答案:C 评析:逻辑结构反映数据元素之间的逻辑关系,线性结构表示数据元素之间一对一的关系,非线性结构表示数据元素之间一对多或多对一的关系。 (2)若进栈序列为l,2,3,4,进栈过程中可以出栈,则下列不可能的一个出栈序列是_______。 A)1,4,3,2 B)2,3,4,l C)3,1,4,2 D)3,4, 2,1

答案:C 评析:栈是一种后进先出表,选项c中,先出栈的是3,说明此时栈内必然有1,2,由于l 先于2进栈,所以l不可能在2之前出栈,故选项C这种出栈序列是不可能的。 (3)排序方法中,将整个无序序列分割成若干小的子序列并分别进行插入排序的方法,称为_______。 A)希尔排序B)冒泡排序C)插入排序D)选择排序 答案:A 评析:希尔排序法的基本思想是:将整个无序序列分割成若干小的子序列分别进行插入排序。 (4)在顺序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找关键码值11,所需的关键码比较次数为_______。 A)2 B)3 C)4 D)5 答案:C

评析:二分法查找是用关键码与线性表的中间元素比较,然后根据比较结果来判断是结束查找,还是在左边或者右边子表按相同的方法继续查找。本题中,与ll比较的关键码分别为15,8,10,12四个。 (5)对于n个结点的单向链表(无表头结点),需要指针单元的个数至少为_______。 A)n-1 B)n C)n+l D)2n 答案:C 评析:在n个结点的单向链表(无表头结点)中,每个结点都有一个指针单元(即指针域),加上头指针,至少需要n+1个指针单元。 (6)在软件开发过程中,软件结构设计是描述_______。 A)数据存储结构 B)软件体系结构C)软件结构测试D)软件控制过程 答案:B

c语言笔试题目及答案

c语言笔试题目及答案 C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。下面是c语言笔试题目及答案,请参考。 c语言笔试题目及答案 一、选择题((1)~(10)每小题2分,(11)~(50)每小题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选 项涂写在答题卡相应位置上,答在试卷上不得分。 (1)数据的存储结构是指________。 A)存储在外存中的数据 B)数据所占的存储空间量 C)数据在计算机中的顺序存储方式 D)数据的逻辑结构在计算机中的表示 答案:D 评析:数据的逻辑结构在计算机存储空间中的存放形式形式称为数据的存储结构(也称数据的物理结构)。 (2)下列关于栈的描述中错误的是________。 A)栈是先进后出的线性表

B)栈只能顺序存储 C)栈具有记忆作用 D)对栈的插入与删除操作中,不需要改变栈底指针 答案:B 评析:栈是一种特殊的线性表,又称先进后出表(FILO—First In Last Out)。 (3)对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是 ________。 A)冒泡排序为n2 B)冒泡排序为n C)快速排序为n D)快速排序为n(n一1)/2 答案:D 评析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过n/2遍的从前往后扫描和n/2遍的从后往前扫描,需要比较次数为n(n-1)/2。快速排序法的最坏情况比较次数也是n(n-1)/2。 (4)对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为________。 A)log2n B)n/2 C)n D)n+l 答案:C 评析:顺序查找过程中,如果被查找的元素是线性表中的最后一个元素,或者元素不在线性表中,则需要与线性表中所有的元素进行比较。对长度为n的线性表进行顺序查找,在最坏情况下需要比较

大学c语言考试题库含答案

================================================== 题号:1482 执行以下程序段后,输出结果和a的值是()。int a=10; printf("%d",a++); A、11 和10 B、11 和11 C、10 和11 D、10 和10 答案: C 题号:2100 已知字符'A'的ASCⅡ代码值是65,字符变量c1的值是'A',c2的值是'D'.执行语句printf("%d,%d",c1,c2-2);后,输出结果是 A、65,66 B、A,B C、65,68 D、A,68 答案: A 题号:5055 相同结构体类型的变量之间,可以()。 A、比较大小 B、地址相同 C、赋值 D、相加 答案: C 题号:3217 int a[10];合法的数组元素的最小下标值为()。 A、1 B、0 C、10 D、9 答案: B

能正确表示逻辑关系:" a≥10或a≤0 "的C语言表达式是 A、a>=0 | a<=10 B、a>=10 or a<=0 C、a>=10 && a<=0 D、a>=10 || a<=0 答案: D 题号:157 main() {int x=1,a=0,b=0; switch (x) { case 0: b++; case 1: a++; case 2: a++;b++;} printf("a=%d,b=%d",a,b); }该程序的输出结果是( ) A、2,2 B、2,1 C、1,1 D、1,0 答案: B 题号:4784 设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的 数据类型为()。 A、不确定 B、double C、int D、float 答案: B 题号:1647 以下程序中,while循环的循环次数是______ main() { int i=0;

C语言笔试题及参考答案-东软集团

C语言笔试题及参考答案-东软集团 1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用":: " 局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。 2、如何引用一个已经定义过的全局变量? 答:extern 可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。 3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么? 答:可以,在不同的C文件中以static形式来声明同名全局变量。 可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错 4、语句for( ;1 ;)有什么问题?它是什么意思? 答:和while(1)相同。 5、do……while和while……do有什么区别? 答:前一个循环一遍再判断,后一个判断以后再循环 6、请写出下列代码的输出内容 #include main() { int a,b,c,d; a=10; b=a++; c=++a; d=10*a++; printf( "b,c,d:%d,%d,%d ",b,c,d); return 0; } 答:10,12,120 7、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身

c语言笔试题答案优选稿

c语言笔试题答案 集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)

笔试题 一、填空题(每个空4分,共28分) 1)struct tagABC { char name[10]; char sex; long sno; float score[4]; }*pAbc;(四字节对齐) pAbc=NULL; 那么,执行pAbc+=2;之后pAbc的值为(64 )2)如下代码,最终value的值是(8) int *p1,*p2; int value; p1=(int*)0×400; p2=(int*)0×408; value = p2-p1; 3)如下代码,printf的结果为(2) #include〈stdio.h〉 #include〈string.h〉 void main(void)

{ char acNew[20]= “\\0\0”; printf(“%d\n”,strlen(acNew)); } 4) 有如下程序段,运行该程序的输出结果是(33) main () { int y=3,x=3,z=1; printf(“%d%d\n”,(++x,y++),z+2); } 5)设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后,n的值为(2) 6)struct tagAAA { Unsigned char ucId:1; Unsigned char ucPara0:2; Unsigned char ucState:6; Unsigned char ucTail:4; Unsigned char ucAvail; Unsigned char unTail2:4; Unsigned long ulData; }AAA_S

嵌入式C语言面试题汇总(超经典)

第一部分:基本概念及其它问答题 1、关键字static的作用是什么? 这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用: 1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。 大多数应试者能正确回答第一部分,一部分能正确回答第二部分,同是很少的人能懂得第三部分。这是一个应试者的严重的缺点,因为他显然不懂得本地化数据和代码范围的好处和重要性。 2、“引用”与指针的区别是什么? 答、1) 引用必须被初始化,指针不必。 2) 引用初始化以后不能被改变,指针可以改变所指的对象。 3) 不存在指向空值的引用,但是存在指向空值的指针。 指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。 流操作符<<和>>、赋值操作符=的返回值、拷贝构造函数的参数、赋值操作符=的参数、其它情况都推荐使用引用。 3、.h头文件中的ifndef/define/endif 的作用? 答:防止该头文件被重复引用。 4、#include 与#include “file.h”的区别? 答:前者是从Standard Library的路径寻找和引用file.h,而后者是从当前工作路径搜寻并引用file.h。 5、描述实时系统的基本特性 答:在特定时间内完成特定的任务,实时性与可靠性。 6、全局变量和局部变量在内存中是否有区别?如果有,是什么区别? 答:全局变量储存在静态数据区,局部变量在堆栈中。 7、什么是平衡二叉树? 答:左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1。 8、堆栈溢出一般是由什么原因导致的? 答:1.没有回收垃圾资源 2.层次太深的递归调用

大学c语言考试题及答案

最新大学C语言考试题及答案 姓名成绩 温馨提示:同学们,经过培训学习,你一定积累了很多知识,现在请认真、仔细地完成这张试题吧。加油! 一单项选择题 1. 在C语言中,以 D 作为字符串结束标志 A)’\n’ B)’ ’ C) ’0’ D)’\0’ 2.下列数据中属于“字符串常量”的是( A )。 A.“a” B.{ABC} C.‘abc\0’ D.‘a’ 若干个字符构成字符串 在C语言中,用单引号标识字符;用双引号标识字符串 选项B,C,分别用{}和’’标识字符串 选项D,标识字符。 3、以下说法中正确的是( C )。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B )。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。

C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C)。 [i] t 6.下列C语言用户标识符中合法的是(B )。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是(C )。 A)%x B)a+b C)a123 D)123 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A )。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# 语言中的简单数据类型包括(D )。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是 C 。 A) B)2 C)1 D)3 11.如果int a=3,b=4;则条件表达式"a

c和c经典笔试题及答案

c和c经典笔试题及答 案 集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)

C++/C经典笔试题及答案

C++/C试题??? 本试题仅用于考查C++/C程序员的基本编程技能。内容限于C++/C 常用语法,不涉及数据结构、算法以及深奥的语法。考试成绩能反映出考生的编程质量以及对C++/C的理解程度,但不能反映考生的智力和软件开发能力。 ???????笔试时间90分钟。请考生认真答题,切勿轻视。 一、请填写BOOL , float, 指针变量与“零值”比较的 if 语句。(10分) 提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为: ????if ( n == 0 ) ????if ( n != 0 ) 1、头文件中的 ifndef/define/endif 干什么用? 2、#include?????和??#include??“filename.h” 有什么区别? 3、const 有什么用途?(请至少说明两种) 4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明? 5

已知strcpy函数的原型是 ???????char *strcpy(char *strDest, const char *strSrc); ???????其中strDest是目的字符串,strSrc是源字符串。 (1)不调用C++/C的字符串库函数,请编写函数 strcpy (2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值? 六、编写类String的构造函数、析构函数和赋值函数(25分) 已知类String的原型为: ????class String ????{ ??????public: ????????String(const char *str = NULL); // 普通构造函数????????String(const String &other);????????// 拷贝构造函数????????~ String(void);?????????????????????// 析构函数????????String & operate =(const String &other);????// 赋值函数??????private: ????????char????*m_data;????????????????// 用于保存字符串????}; ???????请编写String的上述4个函数。 C++/C试题的答案与评分标准 一、请填写BOOL , float, 指针变量与“零值”比较的 if 语句。(10

C语言笔试题带答案

一、选择题(1)~(10)每小题2分,? (11)~(50)每小题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)在数据结构中,从逻辑上可以把数据结构分为_______。 A)动态结构和静态结构??? ??B)紧凑结构和非紧凑结构 C)线性结构和非线性结构??? D)内部结构和外部结构 答案:C 评析:逻辑结构反映数据元素之间的逻辑关系,线性结构表示数据元素之间一对一的关系,非线性结构表示数据元素之间一对多或多对一的关系。 (2)若进栈序列为l,2,3,4,进栈过程中可以出栈,则下列不可能的一个出栈序列是_______。 A)1,4,3,2??? B)2,3,4,l C)3,1,4,2 ???D)3,4, 2,1 答案:C 评析:栈是一种后进先出表,选项c中,先出栈的是3,说明此时栈内必然有1,2,由于l先于2进栈,所以l不可能在2之前出栈,故选项C这种出栈序列是不可能的。 (3)排序方法中,将整个无序序列分割成若干小的子序列并分别进行插入排序的方法,称为_______。 A)希尔排序??? B)冒泡排序??? C)插入排序??? D)选择排序 答案:A 评析:希尔排序法的基本思想是:将整个无序序列分割成若干小的子序列分别进行插入排序。 (4)在顺序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找关键码值11,所需的关键码比较次数为_______。 A)2??? ??B)3?????? C)4 ???????D)5 答案:C

评析:二分法查找是用关键码与线性表的中间元素比较,然后根据比较结果来判断是结束查找,还是在左边或者右边子表按相同的方法继续查找。本题中,与 ll比较的关键码分别为15,8,10,12四个。 (5)对于n个结点的单向链表(无表头结点),需要指针单元的个数至少为_______。 A)n-1??? B)n??? C)n+l ?????D)2n 答案:C 评析:在n个结点的单向链表(无表头结点)中,每个结点都有一个指针单元(即指针域),加上头指针,至少需要n+1个指针单元。 (6)在软件开发过程中,软件结构设计是描述_______。 A)数据存储结构?? ??B)软件体系结构??? C)软件结构测试??? D)软件控制过程 答案:B 评析:从工程管理角度来看,软件设计分两步完成:概要设计和详细设计。概要设计(又称结构设计)将软件需求转化为软件体系结构、确定系统级接口、全局数据结构或数据库模式。 (7)模块本身的内聚是模块独立性的重要性度量因素之一。在7类内聚中,具有最强内聚??? 的一类是_______。 A)顺序性内聚? ???B)过程性内聚? ????C)逻辑性内聚??? D)功能性内聚 答案:D 评析:内聚性是一个模块内部各元素间彼此结合的紧密程度的度量。内聚共有7类,它们之间的内聚性由弱到强排列顺序为:偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚和功能内聚。 (8)数据存储和数据流都是_______,仅仅是所处的状态不同。 A)分析结果??? B)事件??? C)动作??? D)数据 答案:D 评析:数据流图有4种成分:源点或终点、处理、数据存储和数据流。数据存储是处于静止状态的数据,数据流是处于运动中的数据。 (9)数据的完整性是指数据的正确性、有效性和_______。 A)可维护性??? B)独立性??? C)安全性??? D)相容性

c语言经典面试题

C语言面试题大汇总之华为面试题 1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。 2、如何引用一个已经定义过的全局变量? 答:extern 可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个编写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。 3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?答:可以,在不同的C文件中以static形式来声明同名全局变量。 可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错. 4、请写出下列代码的输出内容 #include int main(void) { int a,b,c,d; a=10;

c=++a; d=10*a++; printf("b,c,d:%d,%d,%d",b,c,d); return 0; } 答:10,12,120 5、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? 答: 1) 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。 2) 从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。3) static函数与普通函数作用域不同,仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对

C语言试题及答案

第1章 C语言概述习题 1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. A B. B C. D D. E (2) 在 C 语言中,每个语句必须以 D 结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (3) 标识符和关键字间,要用 C 隔开。 A. 回车符 B. 冒号 C. 空格 D. 分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D.自动保存源文件 (5) 下列说法中正确的是( B )。 A. 由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入 B. 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C. 由于C 程序是高级语言程序,因此输入后即可执行 D. 由于 C 程序是高级语言程序,因此它由命令组成 (6) 下列说法中正确的是( A )。 A. C 语言程序由主函数和 0 个或多个函数组成 B. C 语言程序由主程序和子程序组成 C. C 语言程序由子程序组成 D. C 语言程序由过程组成 (7) 下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 2. 填空题 (1) C 语言只有 32 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发系统软件又适合于编写应用程序。 (3) 每个源程序有且只有一个主函数,系统总是从该函数开始执行C语言程序。 (4) 在 C 语言程序中允许出现的字符集是 ASCII码字符集。 (5) C 语言的程序中有特殊含义的英语单词称为保留字。 (6) C 语言标识符的长度是前 8 位有效。 (7) C 语言中,标识符的定义规则是以字母或下划线为开头。 (8) C 语言程序的注释可以出现在程序中的任何地方,它总是以 /* 符号作为开始标记,以 */ 符号作为结束标记。 第2章数据类型运算符和表达式习题 1. 单项选择题 (1) 以下选项中,正确的 C 语言整型常量是 D 。 A. 32L B. 510000 C. -1.00 D. 567 (2) 以下选项中, D 是不正确的 C 语言字符型常量。

相关文档