C考试系统题库含答案(1)

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

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

1

第一章 C语言基础知识

(C语言概述、算法、数据类型 运算符 表达式、位运算)

一、

判断题(正确的填A,错误的填B)

R1.在C语言中,逗号运算符的优先级最低。(A)

2.在C语言可执行程序的开始执行点是程序中第一个函数。(B) 3.“5ch”是合法的变量名。(B)

4.C语言程序书写格式自由,一行内可以写几个语句,一个语句可以分写在多行上。(A)

5.当输入数据时,必须指明变量的地址,如scanf(\ (A) N6.表达式i++与++i在任何场合功能完全相同。(B)

7.在赋值表达式中,赋值号左边的变量和右边的表达式之值的数据类型可以不相同。(A)

R8.C语言程序中,语句以逗号结尾。( B )

9.在 C 程序中,APH 和aph 代表不同的变量。( A ) 10. a-=7等价于a=a-7。( A )

N11. printf函数中用到格式符%5s ,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按原字符长从左向右全部输出。(A ) 12.如果x>y为真或ay)&&(a

14.若a和b是同类型变量,在执行了赋值语句a=b;后b中的值将放入a中,b中的值将丢失。( B )

15.程序的执行总是从main函数开始,在程序的最后一个函数中结束。(B ) 16.变量的三个属性是指变量的名字、变量的值和变量在内存中的地址。(A) 17. 运算符优先顺序:赋值运算符<逻辑运算符<关系运算符<算术运算符(B) 18.对应float类型的变量,也可以用等号“==”进行数值的判断。(B) 19.表达式:1 && 3.14 和 1 & 3 的值一样大。(B)

20. 为了正确计算表达式既要考虑运算符的优先级,也要考虑其结合性。(A) 21、任何C程序都是从main函数开始和结束;(A) 22. 在C程序中,使用分号“;”表示语句的结束。(A ) 23. C程序中的必须要有至少一个main的函数,可以有多个。( B ) 24. 在C程序中,无论是整数还是实数,都能准确无误的表示。( B ) 25. 在C程序中,赋值运算符的优先级最低。(B )

26. 当输入数值数据时,对于整型变量只能输入整型值;对于实型变量只能输入实型值。( B )

27. 在C程序中,变量可以一边定义一边使用。( B ) 28. C程序中的注释部分可有可无,可以省略。( A) 29.字符型变量可以存放多个字符。( B )

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

2

5.在C程序中,无论是整数还是实数,都能被准确无误地表示。(B ) 1.一个C程序的执行是从本程序的main函数开始,到main函数结束。(A)

4.运算符优先顺序:赋值运算符<逻辑运算符<关系运算符<算术运算符(B) 二、

单项选择题

R1、以下标识符中,不能作为合法的C用户定义标识符的是:( ) A .a3_b3 B.void C._123 D.abc R2、C语言规定:在一个源程序中,main函数的位置( )。 A.必须在最后 B.必须在系统调用的库函数的后面。 C.必须在最开始。 D.可以任意 R3、下列说法中正确的是( )。 A. C程序书写时,不区分大小写字母 B. C程序书写时,一行只能写一个语句 C. C程序书写时,一个语句可分成几行书写 D. C程序书写时每行必须有行号

4、 已知ch是字符型变量,下面不正确的赋值语句是 ( )。 A.ch = 5 + 9 ; B.ch= ' a + b '; C. ch = ' \\ 0 '; D. ch= '7' + '6' ; 5、 若有定义:int a = 7; float x = 2.5 , y = 4.7 ; 则表达式 x + a % 3 * (int) (x + y) % 2/4 的值是( )。 A. 2.750000 B. 0.00000 C. 3.500000 D. 2.500000 6.已知ch是字符型变量,下面正确的赋值语句是( )。

A.ch = '123' ; B. ch=' \\08 '; C. ch =' \\xff '; D.ch =\

1. 以下标识符中,不能作为合法的C用户定义标识符的是:____________。 A)a3_b3 B)void C)_123 D)abc 2.C语言中,运算对象必须是整型的运算符是__________。 A) % B) / C) %和/ D) *

7. 在 C 程序中,用___________表示逻辑值“真”。

A)1 B)非 0 的数 C)非 1 的数 D) 大于 0 的数 N8.设int c=5和int a; a=2+(c+=c,c+8,++c), 则a=__________ A) 15 B) 14 C) 13 D) 16

9.C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符________。

A)必须为字母或下划线。 B)必须为下划线。

C)必须为字母 D)可以是字母、数字和下划线中的任一种字符。 10. 若变量已正确定义并赋值,表达式____________不符合C语言语法。 A)a*b/c; B)3.14%2 C)2, b D)a/b/c 11. 下列说法中正确的是___________。

A) C程序书写时,不区分大表达式小写字母

3

B) C程序书写时,一行只能写一个语句 C) C程序书写时,一个语句可分成几行书写 D) C程序书写时每行必须有行号

12.为表示数学关系x≥y≥z,正确的C语言表达式是__________。 A) (x>=y)&&(y>=z) B) (x>=y)AND(y>=z) C) (x>=y>=z) D) (x>=y)&(y>=z) 13.不合法的八进制数是________

A) 0 B) 028 C) 077 D)01 14、以下不能定义为用户标识符是 A Main

B _0

C _int

D sizeof

15.若x=5,y=4 则y*=x+5; y的值为( )。

A. 40 B. 20 C B. 15 D. 30 16、组成C语言程序的基本单位是( )。

A) 过程 B) 子程序

C) 函数 D) 主程序和子程序 17.下列哪个标识符是C语言合法的标识符( )。

A) a*b B) -xyz C) ba2 D) 5i

N18.若有定义:int a=7; float x=2.5, y=4.7; 则表达式x+a%3*(int)(x+y)/4的值是( )。

A) 2.75 B) 3.5 C) 2.5 D) 0 19.设int m=1,n=2;则++m= =n的结果是( )

A、0 B、1 C、2 D、3 N20. 若变量已定义并赋值,下列符合C语法的表达式是:( A、a:=b+1 B、a=b=c+2 C、int 18.5%3 D、a=a+7=c+b

R(3)在C程序中,设一表达式中包含有int,long, unsigned和char类型的变量和数据,则表达式最后的运算结果类型是( ) A.int B.char C.unsigned D.long

R21.C语言中基本的数据类型包括__________。

A) 整型、实型、逻辑型 B) 整型、实型、字符型

C) 整型、字符型、逻辑型 D) 整型、实型、逻辑型、字符型

N22. 若定义x和y为double类型,则表达式:x=2,y=x+5/2的值是__________ A) 4 B) 4.5 C) 4.0 D) 3.0 23. 在以下运算符中,优先级最高的运算符是__________

A) ? : B) ++ C) && D) +=

4

24.C语言中基本的数据类型不包括__________。 A) 整型 B)字符串型 C)字符型 D)实型

25. 若定义int x=7,y=5,z;则表达式:z=x+5/2*y的值是__________ A) 7 B) 7.5 C) 17 D) 19.5

6.以下说法中正确的是( )

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

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

D、C语言程序中的main()函数必须放在程序的开始部分 (1)设int a=2,b;则执行b=a&&1;语句后,b的结果是( ) A.0 B.1 C.2 D.3

N(2)逗号表达式(a=3*5,a*4),a+15的值是( )

A.15 B.60 C.30 D.75

7. 若已经定义了一个字符型变量为a,下面哪个表达式的含义跟其余表达式不同:

A) a!=0 B) a!=’\\0’ C) a D) !a 8. 在以下运算符中,优先级最高的运算符是__________

A) , B) [ ] C) && D) += 9. 在C语言中,逻辑值“真”用__________表示。

A) true B) 大于0的数 C) 非0的整数 D) 非0的数 10. 表达式__________是满足:当c的值为1、3、5三个数中任意一个时值为“真”,否则值为“假”的表达式

A) (c=1)||(c=3)||(c=5) B) (c!=1)&&(c!=3)&&(c!=5) C) (c==1)&&(c==3)&&(c=5) D) (c==1)||(c==3)||(c==5) 1.C语言中,int类型数据占2个字节,则long类型数据占( )

A、1个字节 B、2 个字节 C、3个字节 D、4个字节 1.下列字符串是合法的标识符的是( )。

A、_HJ B、9_student C、 long D、LINE 1 2.下列说法中正确的是( )。

A、 C程序书写时,不区分大小写字母 B、 C程序书写时,一行只能写一个语句

C、 C 程序书写时,一个语句可分成几行书写

5

D、 C程序书写时每行必须有行号

3.在C语言中,要求参加运算的数必须是整数的运算符是( )。 A、/ B、! C、% D、= = 4.C语言中,逻辑“真“等价于( )。

A、大于零的数 B、大于零的整数 C、非零的数 D、非零的整数

6.假设在程序中a,b,c均被定义为整型,并且已赋大于1的值,则下列能正确表示

代数式1/abc的表达式是( )。

A、1/a*b*c B、1/(a*b*c) C、1/a/b/(float) c D、1.0/a/b/c 1.下列合法的字符常量是( )。

A、'\\084'

B、'\\x43'

C、'ab'

D、sturct D、\

2.在C语言提供的合法的关键字是(

A、switch

B、cher

C、Case

3.若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是 A、 2 三、

B、 1

C、 2.0

D、2.5

程序填空题

1以下程序不用第三个变量实现两个数对调的操作。 #includ “stdio.h” main() {

int a,b;

scanf(\ a=;(三个字符) b=;(三个字符) a= a-b;

printf(\}

2、选择程序的运行结果 。

main ( )

{ int x=1, y=2, z, a, b, c, d; z = ++x||++y;

printf(\

printf(\输出结果(三个字符) */

6

a=-1; b=-2; c=++a&&b++;

printf(\输出结果 (三个字符)*/ }

3以下程序的结果为_______ main() {

unsigned int a=3, b=10;

printf(\输出结果<14> */ printf(\输出结果<0> */ }

4 若x=3,y=z=4,则下列表达式的值是。 (1) (z>=y>=x)? 1:0

/*值为<0> */

(2) z>=y&&y>=x /*值为<1> */

5已知float x=4.3,int y;执行语句y=(int)x后,x为型(填写小写英文字母),且y=<4>(填写阿拉伯数字);

6表达式’c’&&’d’的值为<1>(填写阿拉伯数字),’c’&&’d’||!(3+4)的值为<1>(填写阿拉伯数字)。

7若x为int类型,则与逻辑表达式“x”等价的表达式是, 与逻辑表达式“!x”等价的表达式是

8 表示“整数x的值大于5”时逻辑值为“真”的表达式是5>,逻辑值为“假”的表达式是

9已知字母A的ASCII码为十进制数65,且设ch为字符型变量,则表达式ch=‘A’-‘4’+‘9’的值为(一个字符常量);若定义:char c=‘\\72’;则变量c中包含的字符个数为<1>(数字)。 10、C语言所提供的基本数据类型的整型类型包括:<短整型>、整型、<长整型>。(按每种类型所占字节数,从小到大排列)

第二章 C语言程序结构

(顺序程序设计、选择结构程序设计、循环控制)

7

一、 判断题(正确的填A,错误的填B)

1. do-while语句中的条件为非0时,就结束该循环。(B) 2.在switch-case语句中,不是每个case后都要使用break语句。( A ) 3.Break语句只能用于循环结构中。(B )

48. 未给变量赋初值,只是运行结果不正确,不会有其他不良影响。(B) 5、switch语句中,可以不使用break语句;(A) 6、for语句中,三个表达式都可以省略;(A)

7(7)在for循环中使用break语句的目的是使流程跳出循环体,终止当前循环(A)

8. continue语句只能用于循环语句中。( A )

9. while语句中的条件为0时,就结束该循环。(A) 10.在循环体内使用break语句或continue语句的作用相同。(B)

在C语言中,逻辑值“真”用 表示。

11) 1 12) 大于0的数 13) 非0的整数 14) 非0的数

在循环语句的循环体中,continue语句的作用是( )。

15) 立即终止整个循环 16) 继续执行continue语句之后的循环体 17) 结束本次循环 18) 结束本次循环并跳出循环

语句while(!e);中,条件!e等价于( )

19.e==0 20 .e!=0 21.e!=1 22.e==1

设int c=5和int a; a=2+(c+=c++,c+8,++c), 则a=__________

23) 15 24)14 25) 13 26) 16

若要表示if( a不等于0 )这一关系式,则能正确表示这一关系的表达式为if ( ) 27) a<>0 28) !a 29) a=0 30) a

二、 单项选择题

N1、以下不是死循环的语句是_______。 for( ; ; x+i ); while (1) {x++;}

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

for( ; (c=getchar()) != ?\\n? ; ) printf(“%c” , c) ; 2.设有程序段 int k = 10 ;

8

while ( k = 0 ) k = k - 1 ; 以下描述正确的是 ( )。 A. 循环体语句一次也不执行。 B. 循环是无限循环。 C. while 循环语句执行十次。 D. 循环体语句执行一次。 3.对下述程序,正确的判断是( )。 main( ) { int a,b;

scanf (\if(a>b)a=b; b=a; else a++; b++;

printf(\ }

A. 有语法错误不能通过编译 B. 若输入4,5则输出5,6 C. 若输入5,4则输出4,5 D. 若输入5,4则输出5,5 R4. 以下程序 main() {

int i=010,j=10,k=0x10; printf(\}有语法错误不能通过编译 输出结果是( )

A.8,10,16 B.8,10,10 C.10,10,10 D.10,10,16

R5. 若变量已正确说明为int类型,要给a,b,c输入数据,以下语句正确的是__________

A) read(a,b,c); B) scanf(“%d%d%d”,a,b,c);

C) scanf(“%D%D%D”,&a,%b,%c); D) scanf(“%d%d%d”,&a,&b,&c); R6.已知在ASCII字符集中,数字0的序号为48,下面程序的输出结果为__________。 main() {

char x,y;

x=’0’;y=’9’;

pirntf(“%d,%d\\n”,x,y); }

A)因输出格式不合法,输出错误信息 B)48,57 C)0,9 D)48,58 7. 语句 for(k=0;k<5;++k) {

if(k= = 3) continue; printf(“%d”,k); }的输出结果为_________。

A)012 B) 0124 C) 01234 D) 没有输出结果 8.为表示关系x>=y>=z,应使用C语言表达式___________。 A)(y<=x)&&(y>=z) B)(x>=y)AND(y>=z)

9

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

6. 若变量已正确定义,语句“if(a>b) k=0; else k=1;”和___________等价。

A、k=(a>b)?1:0; B、k=a>b;

C、k=a<=b; D、a<=b ? 0 : 1; 9.以下程序的输出结果是__________

void main() {

int a = 2,b = 5;

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

A) a=%2,b=%5 B) a=2,b=5 C) a=%%d,b=%%d D) a=%d,b=%d N10.以下程序的输出结果是__________ void main() { int x=10,y=10;

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

A) 10 10 B) 9 9 C) 9 10 D) 10 9 11.若要表示if( a不等于0 )这一关系式,则能正确表示这一关系的表达式为 if (__________)

A) a<>0 B) !a C) a=0 D) a R12对于循环语句while(1);下面( )是正确的 A、死循环 B、循环一次 C、不进入循环体 D、编译有错 13.下面程序的输出是(假设 int 数据是 2 个字节) void main() { int a = 32768; printf(“a=%d\\n”,a); }

A) a=32768 B) a=32767 C) a=-32768 D) a=-1 14.表达式__________是满足:当c的值为1、3、5三个数中任意一个时值为“真”,否则值为“假”的表达式

A) (c=1)||(c=3)||(c=5) B) (c!=1)&&(c!=3)&&(c!=5) C) (c==1)&&(c==3)&&(c=5) D) (c==1)||(c==3)||(c==5)

10

N15. 以下程序段的输出结果是_____ int x=3; do

{ printf(\ while (!(--x));

A) 1 B) 3 0

C) 1 -2 D) 死循环 16、数字字符0的ASCII值为48,若有以下程序 main() {

char a='1',b='2'; printf(\

printf(\ }

程序运行后的输出结果是 A 3,2 B 50,2 C 2,2 D 2,50 17、有以下程序 main() {

int a,b,d=25; a = d/10 & (-1); b = a && (-1);

printf(\ }

程序运行后的输出结果是 A 6,1 B 2,1 C 6,0 D 2,0

18.若定义float a;现要从键盘输入a的数据,其整数位为3位,小数位为2位,则选用( )。

A)scanf(\ B) scanf(\C) scanf(\ D) scanf(\19.若定义int i; 则以下循环语句的循环执行次数是( )。 for(i=2; i==0;) printf(\

A) 无限次 B) 0次 C) 1次 D) 2次 20.下面程序段___ x=3; do {

y=x--;

if(!y){printf(\ printf(\}

while(1<=x<=2);

11

A) 将输出## B) 将输出##*

C) 是死循环 D) 含有不合法的控制表达式 21.以下程序中,while循环的循环次数是( )。

#include “stdio.h” main( ) {int i=0; while(i<10) {if(i<1)continue; if(i= =5)break; i++; }

}

A、1 B、10 C、6 DN 22.有以下程序:

#include “stdio.h” int a=3; main( ) { int s=0; {

int a=5; s+=a++; }

s+=a++;printf(\}

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

A、8 B、10 C、7 D23(4)下面程序段的运行结果是( ) main ( )

{int a=11,b=10,c=0; a/=b+(b&&c);

printf(″%d\\n″a);}

12

、死循环,不能确定次数、11 A.0 B.1 C.1.1 D.11

24(5)两次运行下面程序,如果从键盘上分别输入6和4,则程序的输出结果是( ) main ( ) {int x;

scanf(″%d″,&x);

if(x++>5) printf(″%d″,x); else printf(″%d\\n″,x-1);}

A.7和5 B.6和3 C.7和4

(6)语句while(!e);中,条件!e等价于( )

A.e=0 B.e!=0 C.e!=1

R25下面程序的输出是______ main() {

int k=11;

printf(\ }

A) k=11,k=12,k=13 B) k=11,k=13,k=13 C) k=11,k=013,k=oXb D) k=11,k=13,k=b

26(7)下面程序的运行结果是( ) main( )

{int i=1,sum=0; lop:sum=sum+i ; i=i+2;

if(i<6)goto lop;

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

A.sum=4 B.sum=9 C.sum=16 27. 以下程序的输出结果是__________

void main(){ int a = 2,b = 5;

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

A) a=%2,b=%5 B) a=2,b=5 C) a=%%d,b=%%d D) a=%d,b=%d 28执行下面的程序后,a的值为_____ main()

13

D.6和4 D.e==0 D.sum=25 { 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 29

30.下面的程序会( )

main()

{ int x=3,y=0,z=0;

if(x=y+z) printf(“****”); else printf(“####”); }

A、有语法错误不能通过编译 B、输出****C、可以通过编译,但不能通过连接,因而不能运行 D、输出#### 4.以下程序的输出结果是( ) main()

{ int x=10,y=10,i; for(i=0;x>8;y=++i)

printf(“%d %d”,x--,y); }

A、10 1 9 2 B、9 8 7 6 C、10 9 9 0 D、10 10 9 1.下面程序的输出是______ main() {

int k=11;

printf(\ }

A) k=11,k=12,k=13 B) k=11,k=13,k=13 C) k=11,k=013,k=oXb D) k=11,k=13,k=b

2.两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是____

14

1 main() { int x;

scanf(\

if (x++>5) printf(\ else printf(\ }

A) 7和5 B) 6和3 C) 7和4 D) 6和4 3.读程序

#include”stdio.h” main()

{ int a; float b,c;

scanf(\ printf(\ }

若运行时从键盘上输入9876543210(表示回车),则上面程序的输出结果是_____

A) a=98,b=765,c=4321 B) a=1,b=432,c=8765

C) a=98,b=765.000000,c=4321.000000 D) a=98,b=765.0,c=4321.0 5.下面程序的输出是____ main()

{int x=3,y=6,a=0; while (x++!=(y-=1)) {

a+=1;

if (y

printf(\ }

A) x=4,y=4,a=1 B) x=5,y=5,a=1 C) x=5,y=4,a=3 D) x=5,y=4,a=1 6. 7. 8. 8.

15

本文来源:https://www.bwwdw.com/article/7uft.html

Top