0)D)if" />
搜档网
当前位置:搜档网 › C语言复习题

C语言复习题

C语言复习题
C语言复习题

一、选择题

1、以下程序段的输出结果是:()

int x=17,y=3,z; printf(“%d\n”,z=(x=x/y,x%y));

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

2、以下if语句语法正确的是:()

A) if(x>0) B)if(x>0)

printf("%f",x) {x=x+y;printf("%f",x);} else printf("%f",-x); else printf("%f",-x);

C) if(x>0) D) if(x>0)

{x=x+y;printf("%f",x);}; {x=x+y;printf("%f",x)} else printf("%f",-x); else printf("%f",-x);

3、下面程序段的运行结果是:()

int a=1,b=2,c=2,t;

while(a

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

4、若m为整型变量,则以下循环执行次数是: ( )

for(m=2;m==0;) printf("%d",m--);

A) 无限次B) 0次 C) 1次 D) 2次

5、在C语言中,以下正确的说法是:()

A)实际参数与其对应的形式参数各占用独立的存储单元

B)实际参数与其对应的形式参数占用同一个存储单元

C)只有当实际参数和与其对应的形式参数同名时才占用同一个存储单元

D)形式参数是虚设的,不占用存储单元

6、以下程序的输出结果为()

main()

{int i,k,a[10],p[3]; k=5;

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

for(i=0;i<3;i++) p[i]= a[i*( i +1)];

for(i=0;i<3;i++) k+=p[i]*2;

printf(“%d\n”,k); }

A) 20 B) 21 C) 22 D)23

7、以下程序的输出结果为:()

char str[]="ab\n\012\\\""; printf("%d",strlen(str));

A) 3 B) 4 C) 6 D) 12

8、以下程序的输出结果是:()

main()

{int n[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;

for(i=1;i<3;i++) for(j=0;j<=i;j++) s+=a[i][j];

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

}

A) 18 B) 19 C) 20 D)21

9、设有以下宏定义:()

#define N 3

#define Y(n) ((N+1)*n)

则执行语句:z=2*(N+Y(5+1));后,z的值为:

A)出错 B)42 C)48 D)54

10、下列程序执行后输出的结果为:()

f(int a)

{ static int b,c=3; a=b; b=++c; return(a);}

main()

{int a=2,j,k; for(j=0;j<2;j++) k=f(a); printf(“%d\n”,k); }

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

11、下列程序语句的输出是: ( ) int n=0;

while(n++<=2); printf("%d",n);

(A)2 (B)3 (C)4 (D)有语法错误

12、下列程序语句的输出是: ( ) int a=011; printf("%d\n",++a);

(A) 12 (B) 11 (C) 10 (D) 9

13、执行语句for(i=1;i++<4;);后,变量i的值是:()

(A)3 (B)4 (C)5 (D)不确定

14、定义int x=0,y=8,z=9后,则下面表达式的值为0的是:()

(A)'x'&&'y' (B)x<=y (C)x||y+z&&y-z (D)!((x

A) 有语法错误,不能执行 B)循环是无限的

C) 循环体语句一次也不能执行D) 循环体语句执行一次

16、下述程序的运行结果是:()

#include"stdio.h"

main()

{ int i;

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

{ if(i%2) printf("*");

else continue;

printf("#");

}

printf("$\n");

}

(A)*#*#*#$ (B)#*#*#*$ (C)*#*#$ (D)#*#*$

17、下述程序的输出结果是:()

#include"stdio.h"

int x;

void fun();

void main()

{int x=1;

if(x==1) {int x=2; printf("%d,",x++);}

{extern int x; printf("%d,",++x);}

fun();

}

void fun() {printf("%d",x++);}

A)2,1,1 B) 1,2,1 C) 2,2,2 D) 2,2,1

18、下面对宏定义的描述,不正确的是:()

A)宏不存在类型问题,宏名无类型,它的参数也无类型

B)宏替换不占用运行时间

C)宏替换是先求出实参表达式的值,然后代入形参运算求值

D)其实,宏替换只不过是字符替代而已

19、以下程序的输出结果是: ( )

#include

int func(int a,int b);

void main()

{ int k=4,m=1,p;

p=func(k,m); printf("%d,",p);

p=func(k,m); printf("%d,",p); }

int func(int a,int b)

{ static int m=0,i=2; i+=m+1; m=i+a+b; return(m); }

A)8,17 B)8,16 C)8,20 D) 8,8

20、若有说明:int a[ ][3]={1,2,3,4,5,6,7};则a数组第一维的大小是:()

(A)2 (B)3 (C)4 (D)无确定值

19、下列程序段执行后,s的值为:()

char ch[]=”600”; int a,s=0;

for(a=0;ch[a]>=’0’&&ch[a]<=’9’;a++) s=10*s+ch[a]-‘0’;

a) 600 b) 6 c) 0 d) 出错

20、在c程序中,注释部分从哪开始,到哪结束?()

a)从*/开始,到/*结束 b)从REM开始,无结束标志

c)无起始标志 d)从/*开始,到*/结束

20、针对下列语句的正确的叙述为()

char x[]=”abcd”;char y[]={‘a’、‘b’、‘c’、‘d’};

a)数组x和数组y等价 b)数组x和数组y的长度相同

c)数组x的长度大于y的长度 e)数组x的长度小于y的长度

22、下列程序段的输出结果为(u代表空格)()

char s[10]; s=“abcd”; printf(“%s\n”,s);

a) abcd b) a c)abcduuuuu d)编译不通过

23、若j为int型变量,则下列语句的执行结果为()

for(j=10;j>3;j--)

{if(j%3) j--;

--j;--j;

printf(“%d ”,j);}

a) 6 3 b) 7 4 c) 6 2 d) 7 3

24、下列程序段的输出结果为()

int x=3;

do{printf(“%3d”,x-=2);} while(!(--x));

a) 1 b) 3 0 c) 1 -2 d) 死循环

25、设变量已正确定义并赋值,则符合C语言语法的表达式是:()

(A)a=a+5;(B)a=b=c++ (C)int(34.5%5) (D)a=a+8=b-c 26、下列程序段的运行结果是: ( )

int n=0; while(n++<=2); printf("%d",n);

(A)2 (B)3 (C)4 (D)有语法错误

27、若有说明:int a[3][4];则对a数组元素的正确引用是:()

(A) a[2][4] (B) a[1,3] (C)a[1+1][0] (D)a(2)(1)

45、针对以下程序段,说法正确的是()

int a=5,b=0,c=0; if(a=b+c) printf("* * *"); else printf("& & &");

(A)有语法错误不能通过编译(B)可以通过编译但不能通过连接

(C)输出* * *(D)输出& & &

28、执行下面的程序段后,a的值为()

int a,b;

for(a=1,b=4;a<=60;a++)

{if(b>=23) break;

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

b-=5; }

(A)7 (B)8 (C) 9 (D)10

29、以下描述中错误的是()

(A)函数调用可以出现在执行语句中

(B)函数调用可以出现在表达式中

(C)函数调用可以作为函数的实际参数

(D)函数调用可以作为函数的形式参数

30、以下程序的输出结果是()

#define ADD(x) x+x

main()

{int m=1,n=2,k=3;

int sum=ADD(m+n)*k;

printf("sum=%d",sum); }

(A)sum=9 (B)sum=10 (C)sum=12 (D)sum=18

31、以下程序的输出结果是()

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

{a=456;b=567;c=678;}

main()

{int x=10,y=20,z=30;

fun(x,y,z);

printf(“%d,%d,%d”,z,y,x);

}

(A) 30,20,10 (B)10,20,30 (C)456,567,678 (D)678,567,456 32、下面程序应能对两个整型变量的值进行交换。以下说法正确的是()

main()

{ int a=10,b=20;

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

swap(&a,&b);

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

}

swap(int p,int q)

{ int t;

t=p;p=q;q=t;

}

(A)该程序完全正确

(B)该程序有错,只要将语句swap(&a,&b);中的参数改为a,b即可

(C)该程序有错,只要将swap()函数中的形参p和q以及t均定义为指针变量即可

(D)以上说法都不正确

33. 执行下面的程序段后,a的值为:

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. 7

B. 8

C. 9

D. 10

34. 该程序的输出结果是多少?

#include

main()

{ int i,j,x=0;

for(i=0;i<2;i++) { x++; for(j=0;j<=3;j++) { if(j%2) continue; x++; } }

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

A. x=4

B. x=8

C. x=6

D. x=12

35. 下面这个程序的输出是什么?

#include

main() { int y=10; while(y--); printf("y=%d\n",y); }

A. y=0

B. while构成死循环

C. y=1

D. y=-1

36 C语言可执行程序从什么地方开始执行?

A. 程序中第一条可执行语句

B. 程序中第一个函数

C.程序中的main函数

D. 包含文件中的第一个函数

37. 以下对C语言函数的有关描述中,正确的是:

A.在C中,调用函数时,只能把实参的值传给形参,形参的值不能传给实参

B. C函数既可以嵌套定义又可以递归调用

C. 函数必须有返回值,否则不能使用函数

D. C程序中有调用关系的所有函数必须放在同一个源程序文件中

38. 以下叙述中不正确的是:

A. 在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值

B. 在C中,在调用函数时,实参和对应形参在类型上只需赋值兼容

C.在C中,全局变量的隐含类别是自动存储类别

D. 在C中,函数形参可以说明为register变量

39、表示关系x>=y>=z的c语言表达式为: ( )

a) (x>=y)&&(y>=z) b) (x>=y)AND(y>=z) c) (x>=y>=z) d) (x>=y)&(y>=z)

40、假定a和b为int型变量,则执行以下语句后b的值为: ( )

a=2;b=8; do{b-=a;a++;}while(b--<0);

a) 6 b) 4 c) –1 d) 5

41、下述对C语言字符数组的描述中错误的是:()

a)字符数组可以存放字符串

b)字符数组中的字符串可以整体输入、输出

c)可以用关系运算符对两个字符串进行比较

d)不能在赋值语句中通过赋值运算符“=”对字符数组整体赋值

42、以下程序的输出结果是:()

int f(int x,int y)

{int z; while(y) {z=x%y;x=y;y=z;} return(x); }

main()

{int a=32,b=24,c; c=f(a,b); printf(“%d\n”,c);}

a) 6 b) 7 c) 8 d) 9

二、多项选择题

1、指出下面合法的标识符:

A. 3ab

B. int

C. ABC

D. a_3

E. sum.a

F. #abc

G. _stu2

H. abc f

2. 指出下面哪些是合法的用户定义的标识符:

A. P-S

B. putchar

C. double

D. _908

E. *par

F. sheep!

G. wind

H. x y

3. 以下哪些不是C语言提供的合法的关键字:

A.char B. swicth C. Case D. default

4. 指出下面哪些是合法的关键字:

A. char

B. abc

C. printf

D. Int

E. float

F. define

G. include

H. PI

5. 下面哪些是定义局部变量储存类别的关键字?

A. int

B. auto

C.static

D.float

E. register

F.extern

G. unsigned

H.signed

6. C语言中整形常量按进制划分,有以下几种:

A.十六进制常量

B. 十进制常量

C.八进制常量

D. 二进制常量

7. 下面哪些写法是对的,而且是常量?

A. 125

B. -.456

C. 1.25e20

D. 'AB'

E. E6

F. 0238

G. 0xabcdef

H. "\n\\\'\123"

8. 请从下面的选项中选出正确的C语言的转义字符。

A. '//'

B. '\''

C. '\t'

D. '\n'

E. '\1011'

F. '/018'

G. '/123'

H. '\xaa'

9. 如果要把常量327存入变量a中,a可以定义成哪些类型?

A. int

B. char

C. long

D. float

10. 指出下面各说明语句中哪些是合法的:

A. int abcd[0x80];

B. char 9ab[10];

C. char chi[-200];

D. int aaa[5]={3,4,5};

E. float key[]={3.0,4.0,1,0};

F. char disk[];

G. int n=2,floppy[n]; H. int cash[4]={1,2,3,4,5,6};

11. 下列语句中不符合C语言语法的语句有

A. a=7+b,c=a+7;

B. a=7+b+c=a+7;

C. a=7+b,b++,a+7;

D. a=7+b++=a+7;

12. 指出下面错误的表达式:

A. a+b=5

B. 56=a11

C. i=i++

D. 5.6+6.2%3.1

E. 12

F. a=5,b=6,c=7

13. 若a为整型变量,则以下表达式与表达式 a!=0 真假值情况相同有:

A. a>0||a<0

B. a

C. !a==0

D. !a

15. 若变量f已说明为float类型,i为int类型,则下面哪些表达式(或语句)能够实

现将f中的数值保留小数点后两位,第三位进行四舍五入的运算?

A. f=(f*100+0.5)/100.0

B. i=f*100+0.5,f=i/100.0;

C. f=(int)(f*100+0.5)/100.0;

D. f=(f/100+0.5)*100.0;

16. 请选择您认为正确的说法。

A.在C语言中,函数可以嵌套定义。

B.程序中的注释部分可有可无,通常可以省略。

C.在函数中,只能有一条return语句。

D.C程序中,编译程序会检查数组下标是否越界。

E.在C程序中,ABC和abc是两个不同的变量。

F.在C语言中,函数中的变量可以赋初值,每调用一次该函数,就赋一次初值。

G.C语言中不能对数组名进行加减和赋值运算。

17. 下面各语句行中,不能正确进行赋字符串操作的语句行是

A. char s[10]; scanf("%s",&s);

B. char st[4][5]={"ABCDE"};

C. char s[5]={'A','B','C','D','E'};

D. char s[50]; s="ABCDE";

18. 不合法的数组定义是

A. int a[ ]="string";

B. int a[5]={0,1,2,3,4,5};

C. vhst s="string";

D. char a[ ]={'0','1','2','3','4','5'};

19. 指出下面哪些是保留字:

A. char

B. abc

C. printf

D. Int

E. float

F. define

G. include

H. PI

20. 指出下面哪些是合法的用户定义的标识符?

A. P-S

B. putchar

C. double

D._908

E. *par

F. sheep!

G.wind

H. x y

21. C语言的基本类型哪些:

A.整型

B.枚举型

C. 数组型

D. 指针型

E.字符型

F. 构造型

G.实形

H. 空类型

22. 这段程序中的常量有:

#define PI 3.14

void main()

{ int sum;

sum = 10 + 15;

printf("sum=%d\n",sum);

printf("result is 25\n");

}

这段程序中常量有:

A. 10

B. sum

C. 15

D. 25

E. main

F. PI

23.C语言的主要特点有哪些?

A.简洁、紧凑,使用方便、灵活,易于学习和应用。

B.C语言是面向结构化程序设计的语言。

C.C语言允许直接对位、字节和地址进行操作。

D.数据类型丰富。

E.C语言生成的目标代码质量高。

24、以下说法正确的有:

A.输入项可以为一个实型常量,如scanf("%f",3.5);

B.只有格式控制,没有输入项,就不能进行正确输入,如scanf("a=%d,b=%d");

C.当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf("%4.2f",&f);

D.当输入数据时,必须指明变量的地址,如scanf("%f",&f);

25、以下叙述中正确的有 ( )

(A)预处理命令行都必须以#号开始

(B)在程序中凡是以#号开始的语句行都是预处理命令行

(C)C程序在执行过程中对预处理命令行进行处理

(D)以下是正确的宏定义

#define IBM_PC pc#3

26、以下正确的叙述有 ( )

(A)C语言的预处理功能仅仅是指完成宏替换和包含文件的调用

(B)预处理命令只能位于C源程序文件的首部

(C)一条预处理命令必须单独占一行

(D)C程序中,编译预处理是在编译开始之前进行的

三、填空题

1、设a=3,b=4,c=5,则逻辑表达式a||b+c&&b-c的值是: 1 。

2、语句printf("%5.3f\n",123456.12345);的输出为__123456.123__ ___。

3、下面程序段的运行结果是: 11 。

int i=0,sum=1; do {sum+=i++;} while(i<5); printf("%d\n",sum);

4、若定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的

值是: 0 ;a[2][1]得到的值是: 6 。

5、下面程序的输出结果是: t1=7,t2=70 。

#define MAX(x,y) (x)>(y)?(x):(y)

main()

{int a=5,b=2,c=3,d=3,t1,t2;

t1=MAX(a+b,c+d)*10; t2=MAX(c+d,a+b)*10;

printf("t1=%d,t2=%d",t1,t2); }

6、要使以下程序段输出3个整数,请填入一个整数:

for(j=1;j<= 7(7-14都可以) ;printf(“%d\n”,j+=j++));

7、下面程序段是找出整数的所有因子(包括1和整数本身),请填空:

scanf("%d",&x); i=1;

for(; i<=x ;) {if(x%i==0) printf("%3d",i); i++}

8、函数fun的功能是:使一个字符串按逆序存放,请填空

void fun(char str[])

{char m; int i,j;

for(i=0,j=strlen(str);i< j-1 ;i++,j--)

{m=str[i]; str[i]= str[j-1] ; str[j-1]=m;}

printf("%s\n", str ); }

9、设x和y均为int型变量,且x=1,y=2;则表达式1.0+x/y的值为 1.0 。

10、设i,j,k均为int型变量,则执行完下列for循环:

for(i=0,j=10;i<=j;i++,j--) k=i+j; 之后,k的值为 10 。

11、若输入字符串:abcde<回车>,则以下while循环体将执行 0 次。

while((ch=getchar())=='e') printf("*");

12、下面程序段统计从键盘输入的字符中数字字符的个数,换行符结束,请填空

int n=0; char c; c=getchar();

while(c!='\n')

{if( c>='0'&&c<='9' ) n++;

c=getchar();

}

13、若定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的

值是: 0 ;a[2][1]得到的值是: 6 。

14、若x为int型变量,则执行以下语句x=7;x+=x-=x+x;后x的值是: -14 。

15、Turbo C环境中,用RUN菜单中的RUN命令运行C程序的快捷键是 Ctrl+F9 。

16、若有定义:int a[ ]={2,4,6,8,10,12},*p=a;则*(p+1)的值是 4 ,*(a+5)的值是12 。

17、若已知a=7,b=3,c=0,则表达式a+b||c的运算结果是 1 。

18、条件“2

19、若变量a、b为int型,以下语句可以不借助任何变量把a、b的值交换,请填空:

a+= b ;b=a- b ;a-= b ;

20、以下程序的输出结果是 12 。

int a[10],i,k=0;

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

for(i=0;i<4;i++) k+=a[i]+i;

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

21、以下程序中for语句的循环体被执行的次数为: 6 。

#define N 2

#define M N+2

#define NUM 2*M+1

main()

{int i;

for(i=1;i

}

22、下面程序段是找出整数的所有因子(包括1和整数本身),请填空:

scanf("%d",&x);

i=1;

for(; (15) ;)

{ if(x%i==0) printf("%3d",i);

i++

}

23、下述程序的功能是查找数组中元素的最大值输出,请填空完成。

#define A 10

main( )

{ int a[A];

int max,i;

#if A<=10

for(i=0;i

a[i]=10+i;

#else

for(i=0; i

scanf("%d",&a[i]);

#endif

max= a[0] ;

for(i=1;i

if( max

max=a[i];

printf("Max=%d\n",max);

}

24、下面程序将二维数组a的行和列元素互换后存到另一个二维数组 b 中。

#include

main()

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

int b[3][2],i,j;

prntf(″arrary a:\n″);

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

{ for(j=0; J<=2 ; j++)

{ printf(″%5d″, a[i][j]);

B[j][i]=a[i][j] ;

}

printf(″\n″);

}

printf(″array b:\n″);

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

{ for(j=0; j<=1; j++)

printf(″%5d″,b[i][j]);

printf(″\n″);

}

}

25、若a是int型变量,则表达式((a=4*5,a*2),a+6)的值为 26 ;

若a是int型变量,且a的初值为6,则表达式(a+=a-=a*a)计算后a的值为 -60 。

26、读懂程序并填空。

#include

void main()

{ char ch=0x31;

printf("%d\n",ch); //屏幕显示 49

printf("%o\n",ch); //屏幕显示 64

printf("%c\n",ch); //屏幕显示 1

}

27、执行下面程序段后,k的值是 36 。

k=1;n=263;

do{ k*=n%10;n/=10;} while(n);

29、设有以下程序,为使之正确运行,请在下面的横线处填入应包含的命令行。

#include

#include

main()

{ printf("\n");

try_me( ); /* 函数调用 */

printf("\n");

}

注:try_me()函数在myfile.txt中有定义,其内容如下:

/* myfile.c */

try_me()

{ char c;

if((c=getchar())!="\n")

try_me();

putchar();

}

四、判断题

判断题:

( F )1、(n+1)++是一个正确的表达式。

( F )2、若有说明int c;则while (c=getchar( ));是错误的C语句。

( F )3、break语句只能用于for循环。

( F )4、使用continue和break语句,都可以使得C程序的执行直接从循环中跳出。

( T )5、C语言不支持动态数组。

( T )6、在一个函数内部的复合语句中定义的变量,只在该复合语句范围内有效。

( T )7、C程序中,一个文件中的函数可以引用存储在另一个文件中的函数和变量。

( T )8、内部静态变量有隐含初值。

( F )9、一个C程序的执行是从本程序的main函数开始,到本程序文件的最后一个函数结束。( T )10、一个函数通过其他函数间接的调用了自身,这种情况也是一种递归调用。

( F )11、在对一个C程序进行编译的过程中,可以发现注释中的错误。

( T )12、continue语句不能作用于switch语句。

( F )13、for循环只能用于循环次数已经确定的情况。

( F )14、C语言认为变量number和NuMbEr是相同的。

( F )15、do-while循环中,根据情况可省略while。

( F )16、形参可以是常量、变量或表达式。

(T )17、若return语句指定的返回值类型与函数值的类型不一致,则以函数值的类型为准。( F )18、若用数组名作函数的实参,则传递给形参的是数组中全部元素的值。

( F )20、设有数组定义int data[5]={1,2,3,4,5};则data[5]的值为5。

( F )21、Printf()函数总是从新行的起始位置开始打印。

( F )22、在申明变量时必须给出变量的类型。

( F )23、打印三行输出的C语言程序必须用三条printf语句。

( F )24、switch选择结构中必须有default子句。

( T )25、所有的变量在使用前都必须予以申明。

( T )26、求余运算符%只能用于两个整数操作数。

( F )27、如果x>y或ay&&a

( F )31、可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值。

( F )32、putchar函数可以向终端输出一个字符串。

( F )33、库函数中,puts函数是无参函数。

( F )35、C语言中,for语句和do-while语句实现当型循环结构。

五、编程题

1、用冒泡法对10个整数排序(由小到大),要求排序操作用函数调用实现。

2、用选择法对10个整数排序(由小到大),要求排序操作用函数调用实现。

3、将一个二维数组行和列的元素互换,存放到另一个二维数组中。

如:a= 1 2 3 1 4

4 5 6 b= 2 5

3 6

4、分别用函数和带参的宏,从三个数(要求从键盘输入三个数)中找出最大数。

5、将一个数组中的值按逆序存放。

例如原来顺序为:8、6、10、5、2。

要求改为:2、5、10、6、8。

(完整版)C语言试题及答案解析

C语言 一、选择题(第题2分,共20分) 1.一个C程序的执行是从 A 。 A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序文件的第一个函数开始,到本程序main函数结束 D) 本程序的main函数开始,到本程序文件的最后一个函数结束 2.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为 C 。 x=(i=4,j=16,k=32) A) 4 B) 16 C) 32 D) 52 3.设C语言中,一个int型数据在内存中占2个字节,则unsigned int 型数据的取值范围为 C 。 A) 0~255 B) 0~32767 C) 0~65535 D) 0~2147483647 4.设有说明:char w; int x; float y; double z;则表达式w*x+z-y值的数据类型为 D 。 A) float B) char C) int D) double 5. putchar函数可以向终端输出一个 D 。 A) 整型变量表达式 B) 实型变量值 C) 字符串 D) 字符或字符型变量值 6. printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式 B ;如果字符串长度小于5,则输出按方式 C 。 A) 从左起输出该字符串,右补空格 B) 按原字符长从左向右全部输出 C) 右对齐输出该字符串,左补空格 D) 输出错误信息 7.判断char型变量ch是否为大写字母的正确表达式是 C 。 A) ‘A’<=ch<=‘Z’ B) (ch>=‘A’)&(ch<=‘Z’) C) (ch>=‘A’)&&(ch<=‘Z’) D) (‘A’<= ch)AND(‘Z’>= ch) 8.已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是 B 。 if(x>y) z=x; x=y; y=z; A) x=10, y=20, z=30 B) x=20, y=30, z=30 C) x=20, y=30, z=10 D) x=20, y=30, z=20 9.以下程序段______C__. x=-1; do{ x=x*x; } while(!x); A)是死循环 B)循环执行二次 C)循环执行一次 D)有语法错误 10.以下正确的描述是___B____. A)continue语句的作用是结束整个循环的执行

c语言试题及答案

1、以下正确的说法是( B ) (A) 用户若需要调用标准库函数,调用前必须重新定义 (B) 用户可以重新定义标准库函数,若如此,该函数将失去原有含义 (C) 系统根本不允许用户重新定义标准库函数 (D) 用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调 2、以下正确的函数声明形式是( A ) (A) double fun(int x, int y) (B) double fun(int x; int y) (C) double fun(int x, int y); (D) double fun(int x,y); 3、以下正确的函数形式是( D ) (A) double fun(int x, int y) { z=x+y; return z;} (B) fun(int x,y) { int z; return z;} (C) fun(x,y) { int x,y; double z; z=x+y; return z;} (D) double fun(int x, int y) { double z; z=x+y; return z;} 4、以下正确的说法是( A ) 在C语言中 (A) 实参和与其对应的形参各占用独立的存储单元 (B) 实参和与其对应的形参共占用一个存储单元 (C) 只有当实参和与其对应的形参同名时才共占用存储单元 (D) 形参是虚拟的,不占用存储单元 5、若调用一个函数,且此函数中没有return语句,则正确的说法是( A ) 该函数 (A) 没有返回值 (B) 返回若干个系统默认值 (C) 能返回一个用户所希望的函数值 (D) 返回一个不确定的值 6、以下不正确的说法是( B ) C语言规定 (A) 实参可以是常量、变量和表达式 (B) 形参可以是常量、变量和表达式 (C) 实参可以为任意类型 (D) 形参应与其对应的实参类型一致 7、以下正确的说法是( C ) (A) 定义函数时,形参的类型说明可以放在函数体内 (B) return后边的值不能为表达式 (C) 如果函数值的类型与返回值类型不一致,以函数值类型为准 (D) 如果形参与实参的类型不一致,以实参类型为准 8、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是( B ) (A) 地址传递 (B) 单向值传递 (C) 由实参传给形参,再由形参传回给实参 (D) 由用户指定传递方式

嵌入式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语言程序设计题库说明 一本题库适用对象 计算机应用技术计算机软件软件技术计算机网络技术与计算机控制技术等专业 二本题库包含有175道选择题 三本题库所有题目均附有答案

一、选择题 下列各题ABCD四个选项中,只有一个选项是正确的,请将正确选项涂在答题卡的相应位置上,答在试卷上不得分。 1、不合法的整数是()。 A)0x35 B)43.6 C)0532 D)-346 2、下列合法的字符常量是()。 A)“f” B)x C)65 D)‘\Xab’ 3、设有整型变量x,单精度变量y=,表达式x=float(y*3+((int)y%4))执行后,x的值为()。 A)17 B)17.500000 C) D) 4、在C语言中,负整数在内存中以()形式释放。 A)补码 B)BCD码 C)反码 D)十进制数 5、在C语言中,要求参加运算的数必须是整数的运算符是()。 A)/ B)!C)% D)= = 6、()是C语言中非法的数据类型关键字。 A)float B)singed C)integer D)Char

7、现已定义整形变量int i=1;执行循环语句while(i++<5);后i的值为()。 A)1 B)5 C)6 D)以上三个答案都不正确 8、下列语句的输出结果是()。 printf(“%f\n”,(float)(2+4)/2); A)有语法错误不能通过编译 B)3 C)D) 9、C语言中,整数-8在内存中的存储形式是()。 A)1111,1111,1111,1000 B)1000,0000,0000,1000 C)0000,0000,0000,1000 D)1111,1111,1111,0111 10、设C语言中,int类型数据占2个字节,则long类型数据占()个字节。 A)1 B)2 C)8 D)4 11、若变量a已说明为float类型,则能实现将a中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是()。 A)a=(a*100+/ B)a=(a*100+/100 C)a=(int)(a*100+/ D)a=(a/100+*

c语言试题及答案

《C语言》课程综合复习资料 一、单选题 1. 在C语言中,字符型数据在存中的存储形式是 A)原码 B)补码 C)反码 D)ASCII码 2. 在C语言中,十进制数47可等价地表示为 A) 2f B) 02f C) 57 D) 057 3. 设有定义:int x=12,n=5; 则表达式 x%=(n%2) 的值为 A) 0 B) 1 C) 2 D) 3 4. 设有定义语句:char str[][20]={,"Beijing","中国石油大学"},*p=str; 则printf("%d\n",strlen(p+20)); 输出结果是 A)10 B) 6 C) 0 D) 20 5. 已定义以下函数: fun(int *p) { return *p; } 该函数的返回值是 A)不确定的值 B)形参p所指存储单元中的值 C)形参p中存放的值 D)形参p的地址值 6. C语言中,函数返回值的类型是由 A)return语句中的表达式类型决定 B)调用函数的主调函数类型决定 C)调用函数时的临时类型决定 D)定义函数时所指定的函数类型决定 7. 有以下函数定义: void fun( int n , double x ) { …… } 若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是 A) fun( int y , double m ); B) k=fun( 10 , 12.5 ); C) fun( 10 , 12.5 ); D) void fun( 10 , 12.5 ); 8. 以下选项中不能正确赋值的是 A) char b[]={′H′,′e′,′l′,′l′,′o′,′!′}; B) char b[10];b="Hello!";

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语言题库_选择题(1)

本卷共有4道大 一、单项选择题(25道小题,共50分) 1、以下说法中正确的是(C)(2分) A、C语言程序总是从第一个的函数开始执行 B、在C语言程序中,要调用的函数必须在main()函数中定义 C、C语言程序总是从main()函数开始执行 D、C语言程序中的main()函数必须放在程序的开始部分 2、一个算法应该具有“确定性”等五个特性,下面对另外4个特性的描述中错误的是(B)(2分) A、有零个或多个输入 B、有零个或多个输出 C、有穷性 D、可行性 3、以下选项中,不合法常量的是(B)(2分) A、1.234e04 B、1.234e0.4 C、1.234e+4 D、1.234e0 4、C语言中最简单的数据类型包括(B)(2分) A、整型、实型、逻辑型 B、整型、实型、字符型 C、整型、字符型、逻辑型 D、整型、实型、逻辑型、字符型 5、能正确表示逻辑关系:“10≥=a≥=0”的C语言表达式是(D)(2分) A、10>=a>=0 B、a>=0 and a<=10 C、a>=0||a<=10 D、a>=0&&a<=10 6、设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是(D)(2分)A、6.500000B、6 C、5.500000 D、6.000000

7、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是(B)(2分) A、INPUT x、y、z; B、scanf("%d%d%d",&x,&y,&z); C、scanf("%d%d%d",x,y,z); D、read("%d%d%d",&x,&y,&z); 8、设x和y均为int型变量,则以下语句:x+=y;y=x-y;x-=y;的功能是(D)(2分)A、把x和y按从大到小排列B、把x和y按从小到大排列 C、无确定结果 D、交换x和y中的值 9、若有以下程序段:int c1=1,c2=2,c3;c3=1.0/c2*c1;则执行后,c3中的值是(A)(2分)A、0B、0.5 C、1 D、2 10、设char ch='A';则ch=(ch>='A'&&ch<='Z')?(ch+32):ch的值是(B)。(2分) A、A B、a C、Z D、z 11、执行程序段int a=-1,b=4,k;k=(++a<0)&&!(b-- <=0);printf(“%d %d %d\n”,k,a,b);后的输出结果是(D )。 (2分) A、1 0 4 B、1 0 3 C、0 0 3 D、0 0 4 12、设intx=1, y=1;表达式(!x||y--)的值是(B)。(2分) A、0B、1 C、2 D、-1 13、程序段intx=3;do{printf(“%d”,x-=2);}while(!(--x));的输出结果是(C)。(2分) A、1 B、30 C、1-2 D、死循环

C语言试题库(完整版)

C语言试题库 一、单项选择 第一章 C语言概述 (1)一个C程序的执行是从 A、本程序的MAIN函数开始,到MAIN 函数结束。 B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。 C、本程序的MAIN函数开始,到本程序的最后一个函数结束。 D、本程序文件的第一个函数开始,到本程序的MAIN函数结束。(2)以下叙述正确的是 A、在C程序中,MAIN函数必须位于程序的最前面。 B、 C程序的每行中只能写一条语句。 C、 C语言本身没有输入输出语句。 D、在对一个C程序进行编译的过程中,可发现注释中的拼写错误。(3) C语言规定,在一个源程序中,MAIN主函数的位置是在: A、必须在最前面。 B、必须在系统调用的库函数的后面 C、可以在任意位置。

D、必须在最后面 (4)一个C程序是由: A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 (5)以下叙述不正确的是: A、一个C源程序可由一个或多个函数组成 B、一个C源程序必须包含一个MAIN函数 C、 C程序的基本组成单位是函数 D、在C程序中,注释说明只能位于一条语句的后面 第二章数据类型、运算符与表达式 (1)若x, i, j, k都是int型变量,则计算下面表达式后,x的值为x=( i=4, j=16, k=32) A、4 B、16 C、32

D、52 (2)下列四组选项中,均不是C语言键字的选项是 A、define , IF, type B、getc, char, printf C、include, scanf, case E、 if, struct, type (3)下面四个选项中,均是不合法的用户标识符的选项是A、A,P_0,do B、float,1a0, _A C、b-a, goto, int D、_123, temp, INT (4)若有代数式3ae/bc,则正确的C语言表达式是A、a/b/c*e*3 B、3*a*e/bc C、3*a*e/b*c D、a*e/c/b*3 (5)已知各变量的类型说明如下:

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语言程序设计期末考试选择题题库

第一章1、一个C程序可能出现的错误有(A)A,以上都包括 B,逻辑错误 C,运行错误 D,语法错误 2、C程序中一般可以包含几个函数(D) A.1个 B.多个 C.0个 D.至少一个 3.C语言属于程序设计语言的哪个类别(B) A.机器语言 B.高级语言 C.面向对象语言 D.汇编语言 4.以下关于C语言描述错误的是(B) A.一个C程序总是从main函数开始执行 B.一个C程序可以包含多个main函数 C.每个语句的最后必须有一个分号 D.C语言的注释符是以"/*"开始并以"*/"结束

5、在调试过程中,逻辑错误是指(C) A.所书写的语句,不符合C的语法。 B.在从obj生成exe文件的过程中,如果函数名书写错误,可能产生的错误。 C.程序的运行结果不符合题目要求。 D.在exe文件的执行过程中,产生运行异常。 第二章 1、16位的二进制数可以表示的整数的范围是(C) A.[-32768,32768] B.[-32767,32768] C.[-32768,32767] D.[-32767,32767] 2、C语言中的实型数据包括(A) A.float和double B.int和float C.float和char D.int和double 3、以下不合法的字符常量是(C) A.'2' B.'A' C.'ab'

4、在以下各组标识符中,均是合法的C语言标识符是(A) A.abc,A_4d,_student,xyz_abc B.auto,12-a,a_b,ab5.x C.A_4d,_student,xyz_abc,if D.abc,a_b,union,scan 5、若有定义:chara;intb;floatc;doubled; 则表达式a*b+d-c值的类型为(A) A.char B.float C.double D.int 6、类型修饰符unsigned不能修饰(D) A.char B.longint C.int D.float 7、若有定义:doublex=1,y; 执行语句,则y的值是(B) A,1 B,2.0

c语言试题及答案 ()

第1章 C语言概述习题 1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (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 语言只有 37 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发系统软件又适合于编写应用程序。 (3) 每个源程序有且只有一个主函数,系统总是从该函数开始执行C语言程序。 (4) 在 C 语言程序中允许出现的字符集是 ASCII码字符集。 (5) C 语言的程序中有特殊含义的英语单词称为保留字。 (6) C 语言标识符的长度是前 8 位有效。 (7) C 语言中,标识符的定义规则是以字母或下划线为开头。 (8) C 语言程序的注释可以出现在程序中的任何地方,它总是以 /* 符号作为开始标记,以 */ 符号作为结束标记。

C语言试题与答案

大学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 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发系

C语言试题及答案

一、单项选择题 1. 软件危机具有下列表现( d )。 I. 对软件开发成本估计不准确II. 软件产品的质量往往靠不住 III. 软件常常不可维护IV. 软件成本逐年上升 A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 2. 软件生命周期一般都被划分为若干个独立的阶段,其中占用精力和费用最多的阶段往往是( A )。 A. 运行和维护阶段 B. 设计阶段 C. 代码实现阶段 D. 测试阶段 3. 下列属于软件的特点的是(D )。 A. 软件是一种逻辑实体,具有抽象性 ~ B. 软件在使用过程中没有磨损、老化的问题 C. 软件不同于一般程序,它的一个显著特点是规模庞大,复杂程度高 D. 以上都正确 4. 软件工程的出现是由于(D )。 A. 软件危机的出现 B. 计算机硬件技术的发展 C. 软件社会化的需要 D. 计算机软件技术的发展 5. 软件开发技术不包含( d )。 A. 软件开发方法学 B. 软件工程环境 C. 软件工具 D. 软件质量度度量 6. 软件工程的课程特点( D )。 【 I. 学科理论及其知识应用的多维性 II. 工程化 III. 浓厚的方法学色彩 IV. 实践性、指导性强 A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 7. 下列属于应用软件的是( b )。 I. 计算机辅助教学软件II. 软件测试工具 III. 办公自动化软件IV. 工程与科学计算软件

A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 8. 需求分析阶段最重要的技术文档是( b )。 - A. 设计说明书 B. 需求规格说明书 C. 可行性分析报告 D. 用户手册 9. 以下关于数据流图的说法错误的是( c )。 A. 数据流图舍去了具体的物质,只剩下数据的流动、加工处理和存储 B. 数据流图是用作结构化分析的一种工具 C. 传统的数据流图中主要由加工、数据源点/终点、数据流、控制流、数据存储组成 D. 数据流图的绘制采用自上向下、逐层分解的方法 10. 数据字典是软件需求分析阶段的最重要工具之一,其最基本的功能是( c )。 A. 数据库设计 B. 数据通信 C. 数据定义 D. 数据维护 11. 需求分析阶段的研究对象是( b )。 ¥ A. 系统分析员要求 B. 用户要求 C. 软硬件要求 D. 系统要求 12. 结构化方法的基本原则是( b )。 A. 模块化 B. 抽象与分解 C. 信息隐蔽 D. 逐步求精 13. 耦合度最高的是(b)耦合。 A. 环境 B. 内容 C. 控制 D. 数据 14. 内聚程度较低的是( a )内聚。 A. 偶然 B. 通讯 C. 顺序 D. 时间 15. 对一个程序来说,组成系统的模块数目( b ),则开发成本越小。 A. 越多 B. 越少 C. 顺序 D. 时间> 16. 画软件结构图时应注意调用关系只能是(B )。 A. 从下到上 B. 从上到下 C. 从左到右 D. 从右到左 17. 程序流程图中的箭头代表( b )。 A. 数据流 B. 控制流 C. 顺序流 D. 调用 18. 软件测试是软件质量保证的重要手段,下述( B )是软件测试的最基础环节。

嵌入式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语言单项选择题

单项选择题(本大题共20小题,每小题1分,共20分) 1.C++源程序文件扩展名为(A) A..cpp B..h C..1ib D..obj 5.对使用关键字new所开辟的动态存储空间,释放时必须使用(C)A.free B.create C.delete D.realse 6.从本质上看,引用是被引用变量的(B) A.拷贝 B.别名 C.复制 D.克隆 7.在函数调用时,如某一默认参数要指明一个特定值,则有(B) A.其之前所有参数都必须赋值B.其之后所有参数都必须赋值 C.其前、后所有参数都必须赋值D.其前、后所有参数都不必赋值 8.设存在函数int max(int,int)返回两参数中较大值,若求22,59,70三者中最大值,下列表达式不正确的是(C) A.int m=max(22,max(59,70));B.int m=max(max(22,59),70); C.int m=max(22,59,70);D.int m=max(59,max(22,70)); 9.设存在函数int min(int,int)返回两参数中较小值,若求15,26,47三者中最小值,下列表达式中错误的是(B) A.int m=min(min(15,26),min(15,47)); B.int m=min(15,26,47); C.int m=min(15,min(47,26)); D.int m=min(min(47,26),16); 13.函数int&min(int&,int&)返回参数中较小者,设有两整型变量int a=10;int b=15; 在执行语句min(a,b)--;之后,a,b值分别为(B) A.9,14 B.9,15 C.10,14 D.10,15 16.设函数void swap(int&,int&)将交换两形参的值,如两整型变量int a=10;int b=15;则执行swap(a,b)后,a、b值分别为(C) A.10,10 B.10,15 C.15,10 D.15,15

C语言试题

C语言题 一、判断题(每题1分,共计10分) 1.在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参。() 2.使用float b定义的外部变量存放在内存中的动态存储区。() 3.如果一个函数位于C程序文件的上部,在该函数体内说明语句后的复合语句中定义 了一个变量,则该变量为局部变量,只在该复合语句中有效;。() 4.int (*ptr) (),则ptr是一维数组的名字。() 5.指针在任何情况下都可进行>,<,>=,<=,==运算。() 6.形参是局部变量,函数调用完成即失去意义。() 7.C语言程序总是从main()函数开始执行,C语言程序中的main()函数必须放在程序的开 始部分。() 8.在C语言程序中,函数的定义不能嵌套,但函数的调用可以嵌套。() 9.若函数调用时用数组名作为函数参数,实参与其对应的形参共占用同一段存储空间, 在调用函数中必须说明数组的大小,但在被调函数中可以使用不定尺寸数组。() 10.局部变量不能和全局变量重名。() 二、(共计10分) 1. 以下为Windows NT 下的32 位C程序,请计算sizeof 的值 char str[] = “Hello” ; char *p = str ; int n = 10; long d=12; 请计算 sizeof (str ) =__ (0.5分) sizeof ( p ) =__ (0.5分) sizeof ( n ) =__ (0.5分) sizeof(d)=__(0.5分) 2. 请给出如下程序的结果 int a = 3; int b = a << 3; a = ____ ,(0.5分) b = ____(0.5分) 3.int i=10, j=10, k=3; k*=i+j; k 最后的值是__(1分) 4. 1.-1,2,7,28,,126请问28和126中间那个数是__(2分) 5.如有定义语句int a[]={1,8,2,8,3,8,4,8,5,8}; ,则数组a的大小是___(1分) 6.以下程序: #include void main() { int x=10,y=10; printf("%d %d\n",x--,--y); } 输出结果为:___(0.5分),___ (0.5分) 7.函数调用语句: func((exp1,exp2),(exp3,exp4,exp5));

C语言试题及答案

C语言试题及答案 Company number【1089WT-1898YT-1W8CB-9UUT-92108】

第1章C语言概述习题1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (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 语言只有 37 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言 的特点;既适合于开发系统软件又适合于编写应用程序。 (3) 每个源程序有且只有一个主函数,系统总是从该函数开始执行C语言程序。 (4) 在 C 语言程序中允许出现的字符集是 ASCII码字符集。 (5) C 语言的程序中有特殊含义的英语单词称为保留字。 (6) C 语言标识符的长度是前 8 位有效。 (7) C 语言中,标识符的定义规则是以字母或下划线为开头。 (8) C 语言程序的注释可以出现在程序中的任何地方,它总是以 /* 符号作为开始标记,以 */ 符号作为结束标记。

C语言试题-选择题及答案

C语言试题 ★第1 题: 阅读程序,选择程序的运行结果___A___。 #include main() { int x; x=try(5); printf(“%d\n”, x); } try(int n) { if(n>0) return(n*try(n-2)); else return(1); } A. 15 B. 120 C. 1 D. 前面3个答案均是错误的 第2 题: 在下列结论中,只有一个是正确的,它是___A___。 A. 递归函数中的形式参数是自动变量 B. 递归函数中的形式参数是外部变量 C. 递归函数中的形式参数是静态变量 D. 递归函数中的形式参数可以根据需要自己定义存储类型 ★第3 题: 阅读程序,选择程序的输出结果__A___。 #include f(int x, int y) { return(y-x); } main() { int (*g)(int,int); int a=5, b=6, c=2; g=f; c=(*g)(a,b); printf(“%d\n”, c); } A. 1 B. 2 C. 3 D. 前面3个答案均是错误的 第4 题: 阅读程序,选择程序的输出结果__D___。 #include

char *p=”abcdefghijklmnopq”; main() { while(*p++!=?e?) ; printf(“%c\n”, *p); } A. c B. d C. e D. f ★第6 题: 阅读程序,选择程序的输出结果___D___。 #include void prtv(int *x) { printf(”%d\n”, ++*x); } main() { int a=25; prtv(&a); } A. 23 B. 24 C. 25 D. 26 第7 题: 阅读程序,选择程序的输出结果___B___。 #include main() { static char a[ ]= ”language”, b[]=”program”; char *ptr1=a, *ptr2=b; int k; for(k=0; k<7; k++) if(*(ptr1+k)==*(ptr2+k)) printf(”%c”, *(ptr1+k)); } A. gae B. ga C. language D. 有语法错误 ★第8 题: 函数调用strcat(strcpy(str1, str2), str3)的功能是__C___。 A. 将串str1复制到串str2中,然后再连接到str3之后 B. 将串str1连接到串str2之后,再复制到str3之中 C. 将串str2复制到串str1中,然后再将串str3连接到串str1之后

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),内部函数应该在当前源文件中说明和定义。对

相关主题