C语言选择题库

更新时间:2023-12-01 22:22:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

复习题

一、单项选择题(每题1分,共30分)

1、一个C语言程序是由( )。

A.一个主程序和若干子程序组成 C.若干过程组成

B.函数组成 D.若干子程序组成

3、用来标识变量名、符号常量名、函数名、类型名、文件名、数组名的有效字符序列称为标识符。在C 言中,规定标识符只能有字母、数值或下划线三类字符组成,且第一个字符必须为( )或( )。

A.字母,数字 C.字母,下划线

B.数字,下划线 D.字母,下划线,数字

5、C语言中,主调函数携带的参数列表称为实参,而被调用函数的参数列表习惯上称为( )。

A.形式参数

B.值参 C.动态参数

D.静态参数

7、下列关于switch和break语句的结论中,只有( )是正确的。

A.break语句是switch语句的一部分

B.在switch语句中可以根据需要使用或不使用break语句 C.在switch语句中必须使用break语句 D.以上三个结论中有两个是正确的

9、对于数组a[m][n]来说,使用数组的某个元素时,行下标最大值是( ),列下标最大值是( )。

A. m,n-1 C. m-1,n

B. m-1,n-1 D. m,n

10、下面程序段的运行结果是( )。

char a[7]=″abcedf″; char b[4]=″ABC″; strcpy(a,b); printf(“%c”,a[5]); A. d

B. \\0

C. e

D. f

11、一维double型数组a长度为10,则实际所占内存字节数为( )。

A. 20

B. 40

C. 60

D. 80

12、字符串a=“hello”,则函数调用strlen(a)的返回值为( )。

A. 4

B. 5

C. 6

D. 4

13、在C语言中,&作为单目运算符时表示的是( )。

A.地址与

B.取地址 D.输出地址

C.输入地址

14、对不同类型的数据有不同的格式字符。例如:( )格式字符是用来输出十进制整数,( )格 字符是用来输出一个字符串。

A.c,s

B.s,d

C.d,c

D.d,s

15、do-while语句的特点是( )。

A.先执行循环语句,再判断条件是否为真(成立),若成立则继续执行循环,若不成立,则结束循环。do-while至少执行一次循环。

B. 先判断条件是否成立(为真),若不成立则执行循环。

C. 先执行循环语句,再判断条件是否为假(不成立),若不成立则继续执行循环,若成立,则结束循环。 D. 先执行循环语句,再判断条件是否为真(成立),若不成立则继续执行循环,若成立,则结束循环。 16、下面程序段的运行结果是( )。

char *s=“abcde”; s+=2;

printf(“%d”,s); A. cde

B. 字符c

C. 字符c的地址

D. 无确定的输出结果

17、若已知a=15,b=10,则表达式!a>b的值为( )。

A. 1

B. 0

C. 5

D. -5

18、若字符量′D′在内存中占用一个字节,字符串“D”则应占( )个字节。

A. 2

B. 4

C. 1

D. 0

19、在C语言中,输入操作可以由库函数( )完成,输出操作可以由库函数( )完成。

A. scanf, printf B. inputf, output C. get, out

D. puts, gets

21、合法的数组定义是( )。

A. char a[]=\B. inta[5]={0,1,2,3,4,5}; C. int s=\D. char a[]={0,1,2,3,4,5};

22、当a=3,b=4,c=1时,表达式f=a>b>c的值是( )。

A. 3

B. 0

C. 1

D. 4

23、请问:下面这个程序段的输出是( )。

Int a,b,c; a=7;b=8;c=9; if(a>b) a=b, b=c;

c=a;

printf(“a=%d b=%d c=%d\\n”,a,b,c); A. a=7 b=8 c=7 B. a=7 b=9 c=7 C. a=8 b=9 c=7

D. a=8 b=9 c=8

24、若有char ch;则要使指针p指向该类型的定义语句为:( )

A. int p

B. char p C. char *p

D. int *p

25、有以下表达式int a[10]={19,23,14,17,37,28,49,36,},*p;p=a;则值为36的表达式为:(A. p+7 B. *(p+7) C. *(p)

D. *(p+1)

*26、执行printf(″%d,%o″,10,11)语句的值为( )。

A. 10,10 C. 10,13

B. 13,12 D. 13,10

27、已有定义float n;char ch1;,为使n=6.5,ch1=’a’,对应的scanf语句是( )。

A.scanf(“%f%c”,&n,&ch1); B.scanf(“%f,%c”,&n,&ch1,); C.scanf(“%f%c”, n,&ch1); D.scanf(“%f%c”,&n,ch1);

1、以下说法中正确的是( )。

A.C语言程序总是从第一个定义的函数开始执行

B.在C语言程序中,要调用的函数必须在main()函数中定义 C.C语言程序总是从main()函数开始执行

D.C语言程序中的main()函数必须放在程序的开始部分

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

3、下面合法的C语言字符常量是()。 A.‘\\t' B.\.65 D.A

4、字符(char)型数据在微机内存中的存储形式是()。 A.反码

B.补码 C.EBCD.IC码

5、表达式: 10!=9的值是()。

A. true B.非零值 C.0 D.1

6、为表示关系x≥y≥z,应使用的C语言表达式是()。 A.(x>=y) && (y>=z) B.(x>=y) AND (y>=z) C.(x>=y>=z)

D.(x>=y) & (y>=z)

7、阅读下面的程序 #include void main() { int i,j;

scanf(\ printf(\}

如果从键盘上输入1234567<回车>,则程序的运行结果是( )。 A.i=123,j=4567 B.i=1234,j=567 C.i=1,j=2 D.i=123,j=45

8、若已定义x和y是整型变量,x=2;,则表达式y=2.75+x/2的值是(A.5.5 B.5 C.3 D.4.0

)。9、以下程序的输出结果是( )。 #include void main() {

int a=12, b=12;

printf(\}

A.10,10 B.12,12

C.11,10 D.11,13

10、a=3,b=4,c=5,表达式a+b>c&& b==c的值是( )。 A.0

B.1

C.表达式不合法

D.均不对

11、为了避免嵌套的if-else语句的二义性,C语言规定else总是与( )组成配对关系. A.缩排位置相同的if B.在其之前未配对的if C.在其之前尚未配对的最近的if D.同一行上的if

12、下列程序执行后的输出结果是( )。 #include void main( ) { int a=5,b=60,c; if (a

{c=a*b;printf(\ else

{c=b/a;printf(\

}

A.60/5=12 B.300 C.60*5=300 D.12

13、设ch是char型变量,值为‘A',则表达式ch=(ch>=‘A' &&ch<=‘Z')?ch+32:ch的值是(A.Z B.a C.z D.A

14、下面程序的运行结果是( )。 #include void main() { int s=0,i=1; while (s<=10) { s=s+i*i; i++; }

printf(\}

A.4 B.3 C.5 D.6

)。

15、下面程序的输出结果是( )。 #include void main( ) { int i; for(i=1;i<6;i++)

{ if (i%2!=0) {printf(\printf(\ } printf(\

}

A.#*#*# B.##### C.***** D.*#*#*

16、以下叙述正确的是( )。

A.continue语句的作用是结束整个循环的执行 B.只能在循环体内和switch语句体内使用break语句 C.在循环体内使用break语句或continue语句的作用相同 D.从多层循环嵌套中退出时,只能使用goto语句

17、若有说明int a[3][4];,则对a数组元素的非法引用是(A.a[0][2*1]

B.a[1][3]

C.a[4-2][0] 18、要求下面的程序运行后,显示如下结果: 2 10 4 6 1 5 2 3 2 4 7 8 5 1 3 2

则程序中的划线处应填入( )。 #include void main( )

{ int a[4][4]={ ________ }; Inti,j;

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

{for(j=0;j<4;j++) printf(\printf(\}

A.{1,5,2,3},{2,4,7,8},{5,1,3,2}

B.{2,10,4,6},{1,5,2,3},{2,4,7,8},{5,1,3,2} C.{5,1,3,2},{2,4,7,8},{1,5,2,3}

D.{2,1,2,5},{10,5,4,1},{4,2,7,3},{6,3,8,2}

D.a[0][4]

)。

19、若有以下说明:char s1[ ]={\,则以下对数组元素或数组的输出语句中,正确的是( )。

A.printf(\ C.puts(s1);puts(s2);

B. printf(\D.puts(s1,s2);

20、运行下面程序段的输出结果是( )。 char s1[10]={'S','e','t','\\0','u','p','\\0'}; printf(\

A.Set B.Setup C.Set up D.'S''e''t'

21、调用函数时,当实参和形参都是简单变量时,它们之间数据传递的过程是( )。 A.实参将其地址传递给形参,并释放原先占用的存储单元

B.实参将其地址传递给形参,调用结束时形参再将其地址回传给实参 C.实参将其值传递给形参,调用结束时形参再将其值回传给实参 D.实参将其值传递给形参,调用结束时形参并不将其值回传给实参

22、以下叙述中,不正确的是( )。

A.在同一C程序文件中,不同函数中可以使用同名变量 B.在main函数体内定义的变量是全局变量 C.形参是局部变量,函数调用完成即失去意义

D.若同一文件中全局变量和局部变量同名,则全局变量在局部变量作用范围内不起作用

23、对于C语言的函数,下列叙述中正确的是( )。 A.函数的定义不能嵌套,但函数调用可以嵌套 B.函数的定义可以嵌套,但函数调用不能嵌套 C.函数的定义和调用都不能嵌套 D.函数的定义和调用都可以嵌套

24、设有以下函数: #include int f(int a) { int b=0,c; c=3; b++ ;c++;

return (a+b+c); }

如果在下面的程序中调用该函数,则输出结果是( B )。 void main() { int i;

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

7 9

A. 5

7

6

B.5

5

C.3 4

3

3

D.3

25、在C语言程序中,数组名做函数调用的实参时,传递给形参的是( )。 A.数组第一个元素的值 C.数组全部元素的值

B.数组的首地址 D.数组元素的个数

26、有如下函数调用语句func(rec1,rec2+rec3,rec4,rec5);该函数调用语句中,含有的实参个数是( )。 A.3 B.4 C.5 D.有语法错误

27、若已定义: int a[]={0,1,2,3,4,5,6,7,8,9},*p=a,i; 其中0≤i≤9,则对a数组元素不正确的引用是( )。

A.a[p-a] B.*(&a[i])

C.p[i] D.a[10]

28、下面程序的输出结果是( )。 main()

{ int a[]={1,2,3,4,5,6,7,8,9,0},*p;

p=a;

printf(\}

A.0 B.1

C.10 D.9

29、执行语句\,*p=a;\后,*(p+4)的值是( )。 A.\.'d'

C.'\\0' D.不能确定

1、下面标识符中,不合法的用户标识符为( )。 A.PAD B.a_10 C.CHAR D.a#b

2、源程序要正确地运行,必须要有什么函数? A.printf函数 B.自定义的函数

C.main函数

D.不需要函数

3、在C语言中,合法的字符常量是( )。 A.'\\084' B.'\\x43' C.'abff' D.“\\0”

4、在C语言中,要求运算数必须是整型的运算符是( )。 A./ B.++ C.!= D.%

5、若变量c为char类型,能正确判断出c为小写字母的表达式是( )。 A.'a'<=c<= 'z' B.(c>= 'a')||(c<= 'z') C.('a'<=c)and ('z'>=c) D.(c>= 'a')&&(c<= 'z')

6、若有说明:int x[3][4]; 则对x数组元素的正确引用是( )。 A.x[2][4] B.x[1,3] C. x[0][4] D.x[4-2][0]

7、若有定义: intb[5]; 则以下对b数组元素的正确引用是( )。 A.&b[5] B.b+2 C.*(*(b+2)) D.*(b+2)

8. 设x=2.5,y=4.7,a=7,算术表达式x+a%3*(int)(x+y) %2/4的值为( )。 A.2.75

B.7

C.4.7

D.2.5

9、能正确表示逻辑关系:\≥10或a≤0\的C语言表达式是( )。 A.a>=10 or a<=0 B.a>=0|a<=10 C.a>=10 &&a<=0 D.a>=10||a<=0

10、有如下程序 main()

{ float x=2.0,y; if(x<0.0) y=0.0; else if(x<10.0) y=1.0/x; else y=1.0; printf(\

该程序的输出结果是( )。

A.0.000000 B.0.250000 C.0.500000 D.1.000000 11、以下正确的描述是( )。

A.函数的定义可以嵌套,但函数的调用不可以嵌套 B.函数的定义不可以嵌套,但函数的调用可以嵌套 C.函数的定义和函数的调用均不可嵌套 D.函数的定义和函数的调用均可以调用

12、下面哪个表达式的值为4( )。 A.11/3

B.11.0/3

C.(float)11/3 13、有如下程序 main()

{ int i,sum;

for(i=1;i<=3;sum++) sum+=i; printf(\}

该程序的执行结果是( )。

A.6 B.3 C.死循环 D.0 14、有如下程序 main( ) { int n=9;

while(n>6) {n--;printf(\}

该程序段的输出结果是( )。

A.987 B.876 C.8765 D.9876 15、该源程序执行后,屏幕上显示什么( )? main() { int a; float b; a=4; b=9.5;

printf(\

A.a=%d,b=%f\\n B.a=%d,b=%f C.a=4,b=9.50 D.a=4,b=9.5

.(int)(11.0/3+0.5)

D

16、下面程序的运行结果为( )。 #include #include main( )

{ char *aa=”then”, *bb=”than”;

aa+=2; bb+=2;

printf(“%d\\n”,strcmp(aa,bb)); }

A.有语法错 B.大于零 C.等于零 D.小于零

17、下面程序中有错误的行是( )(每行程序前面的数字表示行号) 1. main() 2. {

3. int a[3]={1};

4. int i;

5. scanf(“%d”,&a[0]);

6. for(i=0;i<3;i++) a[0]=a[0]+a[i]; 7. printf(“a[0]=%d\\n”,a); 8. }

A.3 B.6 C.7 D.5

18、若调用一个函数,且此函数中没有return语句,则正确的说法是( ),该函数 A.没有返回值

B.返回若干个系统默认值 D.返回一个不确定的值

C.能返回一个用户所希望的函数值

19、若有定义语句:int x[5]={0,1,2,3,4},*p;,则以下数值不为2的表达式是( )。 A.p=x+1,++(*p) B.p=x+2,*p++ C.p=x+1,*(p++) D.p=x+1,*++p

20、以下不能对二维数组a进行正确初始化的是( ): A.int a[2][4]={0}

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

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

21、以下程序段的运行结果是( )。 char b[ ]= “Basic”,*p;

for(p=b;p

A.Basic B.B C.c D.Basic asic a ic sic s sic ic i asic c c Basic

22、对于下列说明,请指出哪个是不正确的( )? A.int a[ ][3];

B.int b[‘0’];

D.float f[ ][3]={1,2,3,4,5,6};

C.char c[10]={“abcd\\n”};

23、下列程序执行后的输出结果是( )。 main()

{ char arr[2][4];

strcpy(arr,\arr[0][3]='&'; printf(\

A.you&me B.you C.me D.err

24、请选择您认为正确的说法( )。 A.在C语言中,函数可以嵌套定义。

B.在C程序中,ABC和abc是两个不同的变量。 C.在函数中,只能有一条return语句。 D.C程序中,会检查数组下标是否越界。

25、若有以下说明和语句,且0<=i<10,则下面哪个是对数组元素地址的正确表示? int a[]={1,2,3,4,5,6,7,8,9,0}, *p,i;

p=a;

A.&(a+1) B.a++ C.&p D.&p[i] 26、若k为整型变量,则以下for循环的执行次数是( )。 for(k=2;k==0;) printf(“%d”,k--);

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

27、若用数组名作为函数调用的实参,传递给形参的是( )。 A.数组的首地址

B.数组第一个元素的值 D.数组元素的个数

C.数组全部元素的值

28、下面程序段的运行结果是

char x[5]={‘a’, ‘b’, ‘\\0’, ‘c’, ‘\\0’}; printf(“%s”,x);

A.‘a’‘B’ B.ab C.ab c D.abc

29、以下程序的正确运行结果是( )。

#define MAX 10 int a[MAX],i; main()

{ printf(\} sub2()

{ int a[MAX],i,max;

max=5;

for(i=0;i

} sub1() {

for(i=0;i

}

sub3(int a[]) { int i;

for(i=0;i

printf(\

}

A. 0 2 4 6 8 10 12 14 16 18

B.0 1 2 3 4

0 1 2 3 4

0 2 4 6 8 10 12 14 16 18

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

D.0 2 4 6 8 10 12 14 16 18

0 1 2 3 4

0 2 4 6 8 10 12 14 16 18

30、当运行以下程序时,从键盘输入My Book<回车>,则下面程序的运行结果是( #include\ char fun(char *s)

if(*s<='Z'&&*s>='A') *s+=1; return *s; } main()

{ char c[80],*p=c; gets(c);

while(*p) {*p=fun(p); putchar(*p); p++;} printf(\

}

A.mZ bPPk B.my book C.Ny Cook D.My Book

1、C语言规定,在源程序中,main函数的位置( )。 A. 必须在最开始

B. 必须在系统调用的库函数后面 C. 可以任意 D. 必须在最后

2、结构化程序设计的3种基本结构是( )、( )与( )。 A、顺序结构,选择结构,逆序结构 B、重复结构,顺序结构,逆序结构 C、顺序结构,选择结构,重复结构 D、顺序结构,选择结构,循环结构

3、下面正确的字符常量是是( )。

A. ″c″ B. ′′ C. ′w′ D. ″\\\\″

)。

4、若x、i、j和k都是int变量,则执行表达式x=(i=4,j=16,k=32)后x的值为( )。 A. 4

B. 16

C.32

D.52

5、已知各变量的类型说明如下

int k,a,b; unsigned long w=5; double x=1.42;

则以下不正确的表达式是( )。 A. x%(-3)

B. w+=-2

D.a+=a-=(b=4)*(a=3)

C. k=(a=2,b=3,a+b)

6、已知字符A的ASCII码为十进制数65,且定义c2为字符型变量,则执行语句c2=‘A’+‘6’-‘3’后,c2中的值为( )。 A. D

B. 67

C. 不确定的值

D.C

7、关系式10<x≤100对应的C语言表达式是( )。 A、x>10&&x<100 B、x=>10&&x=100 C、x=>10&&x<=100 D、x>10&&x<=100

8、若有以下定义,则正确的赋值语句是( )。 int a,b; float x; A. a=1,b=2,;

B. b++; C. a=b=5

D.b=int(x);

9、以下针对scanf函数的叙述中,正确的是( ) A. 输入项可以为一实型常量,如scanf(“%f”,3.5);

B. 只有格式控制,没有输入项,也能进行正确输入,如scanf(“a=%d”); C. 当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(“%4.2f”,&f); D. 当输入数据时,必须指明变量的地址,如scanf(“%f”,&f);

10、已知ch是字符型变量,下面正确的赋值语句是( )。 A. ch=′123′; B. ch=′\\xff′; C.ch=′\\08′; D.ch=″\\″;

11、下列关系表达式中结果为假的是( )。 A. 0!=1

B. 2<=8 D. y=(2+2)==4

C. (a=2*2)==2

12、设有说明语句:int x=43,y=0;char ch=′A′,则表达式(x>=y&&ch<′B′&&!y)的值为( )。 A. 0

B. 语法错

C. 1

D. 假

13、在C语言中,输入操作可以由库函数( )完成,输出操作可以由库函数( )完成。 A.scanf, printf B.input, output C.get, out D.puts, gets

14、以下程序的运行结果是( )。

main()

{ int k=4,a=3,b=2,c=1;

printf(“\\n%d\\n”,k

}

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

15、若已知a=15,b=10,则表达式!a>b的值为( )。 A.1 B.0 C.5 D.-5

16、以下描述中正确的是( )。

A. for循环只能用于循环次数已经确定的情况 B. for循环是先执行循环体语句,再判断表达式 C. 在for循环中,不能用break语句跳出循环体

D.for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来

17、以下不是无限循环的语句是( )。 A. for(y=0,x=1;x>++y;x=i++) i=x; B. for(;;x++=i); C. while(1) x++;

D. for(i=10;;i--) sum+=i;

18、执行语句for(i=1;i++<4;)后变量i的值为( )。 A. 3

B. 4

C. 5

D. 不定

19、下面程序的运行结果是( )。

#include main()

{ int k=0;char c=’A’; do

{ switch(c++)

{ case ‘A’:k++;break; case ‘B’:k--; case ‘C’:k+=2;break; case ‘D’:k=k%2;continue; case ‘E’:k=k*10;break; default:k=k/3; } k++;

}while(c<’G’); printf(“k=%d\\n”,k); }

A. k=3 B. k=4 C. k=2 D. k=0

20、若有说明:int a[10];则对a数组元素的正确引用是( )。 A. a[10]

B. a[3.5]

C.a(5)

D.a[10-10]

21、以下能对二维数组a进行正确初始化的语句是( )。 A. int a[2][]={{1,0,1},{5,2,3}}; B. int a[][3]={{1,2,3},{4,5,6}}; C.int a[2][4]={{1,2,3},{4,5},{6}}; D.int a[][3]={{1,0,1,0},{},{1,1}};

22、下面程序( )(每行程序前面的数字表示行号)。

1 main()

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

4 scanf(“%d”,&a);

5 for(i=1;i<3;i++) a[0]=a[0]+a[i]; 6 printf(“%d\\n”,a[0]); 7 }

A. 没有错误 B. 第4行有错误 C. 第5行有错误 D. 第6行有错误

23、定义如下变量和数组:

int k;

int a[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是( )。

for(k=0;k<3;k++)printf(“=”,a[k][k]);

A. 3 5 7 B. 3 6 9 C. 1 5 9 D.1 4 7

24、在C语言中,数组名代表( )。

A.数组首址 B.数组内容 C.数组长度 D.全部数组

25、以下正确的函数形式是( )。

A. double fun(intx;int y) { z=x+y; return z;}

B. double fun(intx,int y) { double z; z=x+y; return z;} C. fun(x,y); { intx,y; double z; z=x+y; return z;} D.fun(intx,y) {int z; return z;}

26、以下程序的运行结果是( )。

int f (intx,int y) { return (y-x)*x;} main()

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

d=f(f(a,c),f(a,b)+f(c,b));

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

A. -48 B. 58 C. -58 D.47

29、以下程序的运行结果是( )。

main()

{ int a,b,k=4,m=6,*p1=&k,*p2=&m;

a=p1==&m;

b=*p1/*p2+7;

printf(“a=%d,b=%d\\n”,a,b); }

A. a=-1,b=5 B. a=1,b=6 C. a=0,b=7 D.a=4,b=10

30、设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是( ) A. c=*p1+*p2; B. p2=c; C. p1=p2;

D. c=*p1*(*p2;)

1、以下叙述不正确的是( )。 A. 一个C源程序可由一个或多个函数组成 B. 一个C源程序必须包含一个main函数 C.C程序的基本组成单位是函数

D. 在C程序中,注释说明只能位于一条语句的后面

2、下列4组选项中,均不是C语言关键字的是( )。 A. define IF type B. getcchar printf C. Includescanf case D.while go pow

3、在C语言中,字符串的结束标志在存储器中以字符( )来表示。 A、'\\n' B、'\\c' C、‘\\0’

D、空格

4、假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是( )。 A. 7

B. 8

C.6

D.2

5、以下表达式值为3的是( )。 A. 16-13

B. 2+3/2

C. 14/3-2

D.(2+6)/(12-9)

7、以下程序的运行结果是( )。 #include main() {int m=5,n=10;

printf(“%d,%d\\n”,m++,--n); } A. 5,9

B. 6,9

C. 5,10

D.6,10

10、设x、y均为float型变量,则以下不合法的赋值语句是( )。 A. ++x

B. y+2=(x/2)/10

C. x*=y+8

D.x=y=0

11、逻辑运算符两侧运算对象的数据类型( )。 A. 只能是0或1 B. 只能是0或非0整数 C. 只能是整型或字符型数据 D.可以是任何数据类型的数据

12、设有说明语句:int a=1,b=2,c=3,d=4,m=2,n=2;,则执行(m=a>b)&&(n=c>d)后n的值为( )。 A. 1

B. 2

C. 3

D.4

14、若运行时为变量x输入12,则以下程序的运行结果是( )。

main() { int x,y;

scanf(“%d”,&x);

y=x>12?x+10:x-12; printf(“%d\\n”,y);

}

A.0 B. 22 C. 12 D.10

15、设有以下程序段:

int x=0,s=0;

while(!x!=0) s+=++x; printf(“%d”,s); 则( )。

A. 运行程序段后输出0 B.运行程序段后输出1 C. 程序段中的条件表达式是非法的 D.程序段执行无限次

16、以下描述中正确的是( )。

A.while、do-while、for循环中的循环体语句都至少被执行一次 B. do-while循环中,while(表达式)后面的分号可以省略

C. while循环体中,一定要有能使while后面表达式的值变为“假”的操作 D.do-while循环中,根据情况可以省略while

17、以下for循环的执行次数是( )。 for(x=0,y=0;(y=123)&&(x<4);x++);

A. 是无限循环 B. 循环次数不定 C. 执行4次 D. 执行3次

18、下面程序段的运行结果是( )。

for(y=1;y<10;)

y=((x=3*y,x+1),x-1);

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

A. x=27,y=27 B. x=12,y=13 C. x=15,y=14 D.x=y=27

20、以下对一维整型数组a的正确说明是( )。 A.int a(10) B. int n=0,a[n]; C.int n; D.#define SIZE 10

scanf(“%d”,&n); int a[SIZE]; int a[n]

21、以下对二维数组a的正确说明是( )。 A. int a[3][]; B. float a(3,4); C.double a[3][4]; D.float a(3)(4);

22、下面程序( )(每行程序前面的数字表示行号)。

1 main()

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

4 for(i=0;i<3;i++) scanf(“%d”,&a[i]); 5 for(i=1;i<4;i++) a[0]=a[0]+a[i]; 6 printf(“%d\\n”,a[0]); 7 }

A. 没有错误 B. 第4行有错误 C. 第5行有错误 D.第6行有错误

23、定义如下变量和数组:

int k;

int a[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是( )。

for(k=0;k<3;k++) printf(“=”,a[k][2-k]); A. 3 5 7 B. 3 6 9 C. 1 5 9 D.1 4 7

27、C语言规定,简单变量作为实参时,它和对应形参之间的数据传递方式为( )。 A. 地址传递 B. 单向值传递 C. 由实参传给形参,再由形参传回给实参 D.由用户指定传递方式

28、有以下表达式int a[10]={19,23,14,17,37,28,49,36,},*p;p=a;则值为36的表达式为:(A. p+7 B. *(p+7) C. *(p) D. *(p+1)

29、在C语言中,输入操作可以由库函数( )完成,输出操作可以由库函数( )完成。 A. scanf, printf B. input, output C. get, out D. puts, gets

30、C语言中用( )表示逻辑值“真”,用( )表示逻辑值“假”。 A.非零值,非零值 B.零,零 C.零,非零值 D.非零值,零

二、填空题(每空2分,共30分) 1、在C语言源程序中,一个变量代表(

)。

2、结构化程序由( )、( )、( )三种基本结构组成

3、设x和y均为int型变量,且x=1,y=2,则以下表达式的值为( )。 1.0+x/y

) 4、若采用十进制数的表示形式,则0XAB为( )。

5、设i,j,k均为int型变量,则执行完下面的for循环后,k的值为( )。 for(i=0,j=10;i<=j;i++,j--) k=i+j;

6、在C语言的赋值表达式中,赋值号左边必须是( )。 7、设y是int型变量,请写出判断y为奇数的关系表达( )。

10、以下函数的功能是,把两个整数指针所指的存储单元中的内容进行交换。请填空。

exchange(int *x, int *y) { int t;

t=*y; *y=( ); *x=( ); }

1、以下程序实现把学生的成绩划分为优,良,及格和不及格四个等级(成绩>=90,为优秀;70<=成绩<90,为良好;60<=成绩<70,为及格;成绩<60,为不及格;)要求输入学生成绩,输出学生所处的等级,请在处填入正确内容。

#include \void main() {

int x;

scanf(\( &x )); if()

( printf(“优秀”); );

else if ()

printf(\良好\

else if ()

printf(\及格\

( else if() ) }

2、输入若干个字符,分别统计数字字符的个数、英文字母的个数,当输入换行符时输出统计结果,运行结束。 #include main() { char ch; ( int s1,s2; )

while((ch=getchar(ch))!='\\n') { if(ch>='0'&&ch<='9') s1++;

if(ch>='a'&&ch<='z' || ( )) s2++; }

( printf(“%d%d”,s1,s2); ) }

printf(\不及格\

3、以下程序实现输入年,月后,判断这个月有多少天,请在处填入正确内容。 #include void main() {

intyear,month,day; printf(\请输入年,月\\n\scanf(\switch(( month )) { case 1: case 3: case 5: case 7: case 8: case 10:

case 12: ();break; case 4: case 6: case 9:

case 11:day=30;break; case 2: }

printf(\年%d月有%d天!\ }

4、程序的功能是计算y = 0! + 1! + 2! + 3! + 4! + ?? + n! 如输入n的值为5的话,则输出y值为154。 #include intfun(int n) { int i; int s; s=1;

if(( )) else day=28;

day=29;

for (i=1; i<=n; i++) s=();

( return(s) ); } main() { int s; int k,n; scanf(\s=0;

for (k=0; k<=n; k++) s=();

printf(\}

5、计算两个整数n和m(m<1000)之间所有数的和。n和m从键盘输入。例如,当n=1,m=100时,sum=5050,当n=100,m=1000时,sum=495550。 #include #include main() { intn,m; int sum; ();

printf(\ scanf(\ while( n<=m ) { ( );

n++; }

printf(\ }

1.、输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母;其它字符不变。请填空。 main( ) { char ch1;

scanf(“%c”,&c1);

if(ch1>=’A’&&ch1<=’z’) ch1=ch1+32; else if(ch1>=’a’&&ch1<=’z’) ( ); printf(“%c”,ch1);

}

2、以下程序的输出结果是()。 main()

{ int arr[ ]={30,25,20,15,10,5}, *p=arr; p++;

printf(\}

3、一下程序的功能是找出x,y,z三个数中的最小值。请填空。 main( )

{ int x=4,y=5,z=8; int u,v; u=x

5、若a、b和c均为int型变量,则执行以下表达式后,c值为()。 c=(a=5)-(b=2)+a

6、在C语言中,一个函数通常由两个部分组成,它们是( )和( )。 7、下面程序的运行结果是( )。 main( )

{ char str[ ]=”123\\0890\\0abc”, *p=str; printf(“%s”,p+5); }

8、下面程序的功能是打印100以内个位数为6且能被3整除的所有数,请填空。 main( ) { int i,j;

for(i=0;( i<=9 ); i++) { j=i*10+6; if( ) continue; printf(“%d”,j); } }

9、以下程序的运行结果是( )。 main()

{ int i=2,x=5,j=7; fun(j,6);

printf(\}

fun(int i,int j) {

int x=7;

printf(\}

10. 有以下程序

#include\main()

{int i,n[]={0,0,0,0,0}; for(i=1;i<=4;i++) {

n[i]=n[i-1]*3+1; printf(\ } }

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

1、一个C源程序中至少包括一个(

) 。

2、C语言源程序文件经编译后,生成文件的后缀是(

);经过链接后,生成文件的后缀是(

)3、若有定义语句:inta=7;float x=2.5,y=4.7;则表达式x+1*7%2/4的值是( )。 4、若a是int 型变量,且a的初值为6,则计算表达式a+=a-=a*a后a的值为(

)。

5、设a、b、c均为int类型变量,请用C语言的表达式描述以下命题。 ① 输出a和b中的最大值( )。

② c是奇数(

)。

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

)。 main() { int x=1,y=2;

printf(“x=%d,y=%d*sum*=%d\\n”,x,y,x+y);} 7、以下程序的运行结果是(

)。

main() { intx,y,z; x=3;y=3; z=x==y;

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

8、以下程序的功能是计算正整数2345的各位数字的平方和,请补写程序。 main()

{ int n=2345,sum=0; do

{ sum=sum+( n=(

}while(n)

)*( );

);

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

9、在C语言中,二维数组元素在内存中的存放顺序是(

)。

)。

10、凡是函数中未指定存储类别的局部变量,其隐含的存储类别为(

11、下面这个程序的作用是统计公元1年到公元2000年的闰年个数。判断闰年的方法是:能被400整除的年是闰年;除能被400整除的年以外,凡是能被4整除,但不能被100整除的年是闰年。其余年份是平年。请填空。 #include void main() { int year; int count=0;

for(year=0;year<=2000;year++)

if( (___year@0==0___)||( year%4==0 &&(____year0!=0__) ) (_____count++__); printf(\

1、C源程序的基本单位是( )。

)。

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

3、C语言的源程序必须通过( 4、引用头文件使用( )和(

)后,才能被计算机执行。

)命令。

5、设a、b、c均为int类型变量,请用C语言的表达式描述以下命题。 ① a或b中有一个大于c( ② c是偶数(

)。

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

main()

{printf(“*%f,%4.3f*\\n”,3.14,3.1415);} 7、当a=3,b=2,c=1时,表达式f=a>b>c的值是(

)。

8、以下程序段的功能是计算一个整数的各位数字之和,请补写程序( )。

int n,m=1; scanf(“%d”,&n); for(;n!=0;) { m( n/=10;} printf(“%d”,m);

);

10、若有定义:int a[5];则a数组中首元素的地址可以表示为( )。

11、以下程序运行后的输出结果是( )。

main()

{ int i=10, j=0; do

{ j=j+i; i--; } while(i>2); printf(\}

12. 设有以下程序: main()

{ int a, b, k=4, m=6, *p1=&k, *p2=&m; a=(p1==&m); b=(*p1)/(*p2)+7; printf(\printf(\执行该程序后,a的值为(

),b的值为(

)。

三、判断正误(每题1分,共10分)

1、在C程序中,main函数必须位于程序的最前面。( )

2、在C语言中,char型数据在内存中的存储形式是ASCII码。( ) 3、在C程序中,赋值运算符的优先级最低。( )

4、在C语言中,紧跟在if关键字后一对圆括号里的表达式可以是任意表达式。( ) 5、整型变量的输出格式符只有%d一种。( )

6、C语言规定else子句总是与同一行上的if配对。( )

7、在循环体内使用continue语句和break语句的作用相同。( ) 8、引用数组元素时,其数组下标的数据类型只能是整型常量。( ) 9、字符串″1000″小于字符串″20″。( )

10、用户可以重新定义标准库函数,若如此,该函数将失去原有含义。( ) 1. 在C语言程序中,所有的变量都必须先定义,后使用。( ) 2. 在C语言程序中函数的定义可以嵌套。( ) 3. 构成数组的各个元素可以有不同的数据类型。( )

4. 在对一个C程序进行编译的过程中,可发现注释中的拼写错误。( )

5. 语句char *str=\和语句 char *str; str=\的功能是等价的。( ) 6. 函数strlen(\的值是8。( )

7. 在C语言中,运算符“%”要求运算数可以是整型或实型。( )

8. 设x和y均为int型变量,则语句x+=y; y=x-y; x-=y;的功能是把x和y按从小到大的顺序进行排列。(9. 在C语言中,没有专门的逻辑值,而是用0表示“假”,用非0表示“真”。( ) 10. 通过return语句,函数可以带回一个或一个以上的返回值。( )

) 1、在VC++6.0中,实型数据在内存中占2个字节。( ) 2、在C语言中,字符‘D’在内存中占2个字节。( ) 3、在switch-case语句中,必须使用default语句。( ) 4、数组可以存储不同类型的值。( )

5、函数的递归调用是一个函数直接或间接地调用它自身。( ) 6、C语言程序中,语句以分号结尾。( ) 7、函数strlen(\的值是7。( )

8、continue语句和break语句用在循环体中,都是结束本次循环。( ) 9、int i=20; switch(i/20)

{ case 2:printf(\case 1:printf(\的输出结果为A。( ) 10、#include main( )

{ char a[ ]={‘\\1’, ‘\\2’, ‘\\3’, ‘\\4’, ‘\\0’,}; printf(“%d\\n”,strlen(a)); }

的输出结果为4。( )

1、C语言本身没有输入输出语句。( )

3、在C程序中,APH和aph是两个不同的变量。( )

4、当从键盘输入数据时,对于整型变量只能输入整型数据,对于实型变量只能输入实型数据。( ) 5、%x是格式符的一种,可以使用%8lx,其中数字8规定了输出字段的宽度。( ) 6、C语言规定else子句总是与其之前最近的if配对。( ) 7、只能在循环体内和switch语句体内使用break语句( )

8、若有说明:static int a[3][4];则数组a中各元素可在程序的运行阶段得到初值0。( ) 9、定义函数时,形参的类型说明可以放在函数体内。( )

10、用户可以重新定义标准库函数,若如此,该函数将失去原有含义。( )

1、C语言中的标识符只能由字母、数字和下划线3种字符组成,且第一个字符可以为字母、数字和下划线中任一字符。( )

2、在C语言中,int、char和short三种类型数据在内存中所占用的字节数由所用机器的机器字长决定。( ) 3、在C程序中,逗号运算符的优先级最低。( )

4、若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数。( ) 6、C语言规定else子句总是与缩排位置相同的if配对。( ) 7、continue语句的作用是结束整个循环的执行。( )

9、两个字符串所包含的字符个数相同时,才能比较字符串。( )

本文来源:https://www.bwwdw.com/article/9cvt.html

Top