C+语言试题库

更新时间:2024-06-22 13:18:01 阅读量: 综合文库 文档下载

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

C 语言试题库

\\1 A

-个C程序的执行是从

A)本程序的main函数开始,到main函数结束

B)本程序文件的第-个函数开始,到本程序文件的最后-个函数结束 C)本程序的main函数开始,到本程序文件的最后-个函数结束 D)本程序文件的第-个函数开始,到本程序main函数结束 \\2 C

以下叙述正确的是:

A)在C程序中,main函数必须位于程序的最前面 B)C程序的每行中只能写-条语句 C)C语言本身没有输入输出语句

D)在对-个C程序进行编译的过程中,可发现注释中的拼写错误 \\3 D

以下叙述不正确的是

A)-个C源程序可由-个或多个函数组成 B)-个C源程序必须包含-个main函数 C)C程序的基本组成单位是函数

D)在C程序中,注释说明只能位于-条语句的后面 \\4 C

C语言规定:在-个源程序中,main函数的位置 A)必须在最开始

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

-个C语言程序是由

A)-个主程序和若干子程序组成 B)函数组成

C)若干过程组成 D)若干子程序组成 \\6 A

在C语言中(以16位PC机为例),5种基本数据类型的存储空间长度的排列顺序为 A)char

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

A)4 B)16 C)32 D)52 \\8 B

假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是: A)7 B)8 C)6 D)2 \\9 A

下列四组选项中,均不是C语言关键字的选项是 A)define B)geto C)include D)while IF char scanf go type printf case pow \\10 B

下面四个选项中,均是C语言关键字的选项是 A)auto enum include

B)switch typedef continue C)signed union scanf D)if struct type \\11 C

下面四个选项中,均是不合法的用户标识符的选项是 A) A P_0 do B)float 1a0 -A C)b-a goto int D)-123 temp INT \\12 C

C语言中的标识符只能由字母、数字和下划线三种字符组成,且第-个字符 A) 必须为字母 B)必须为下划线

C)必须为字母或下划线

D)可以是字母,数字和下划线中任-种字符 \\13 A

下面四个选项中,均是合法整型常量的选项是: A)160 B)-0xcdf C)-01 D)-0x48a -0xffff 01a 986, 012 2e5 011 0xe 0668 0x \\14 D

下面四个选项中,均是不合法的整型常量的选项是:

A)--0f1 B)-0Xcdf C)-018 D)-0x48eg -0xffff 017 999 -068 0011 12,456 5e2 03f \\15 B

下面四个选项中,均是不合法的浮点数的选项是 A)160. B)123 C)-.18 D)-e3

0.12 2e4.2 123e4 .234 e3 .e5 0.0 1e3 \\16 b

下面四个选项中,均是合法浮点数的选项是

A) +le+1 B)-.60 C) 123e D)-e3 5e-9.4 12e-4 1.2e-.4 .8e4 03e2 -8e5 +2e-1 5.e-0 \\17 A

下面四个选项中,均是合法转义字符的选项是 A)'\\'' B)'\\' C)'\\018' D)'\\\\0' '\\\\' '\\017' '\\f' '101' '\\n' '\\\\\18 B

下面四个选项中,均是不合法的转义字符的选项是 A)'\\'' B)'\\1011' C)'\\011' D)'\\abc' '\\\\' '\\' '\\f' '\\101' '\\xf' '\\a' '\\}' 'xlf' \\19 C

下面正确的字符常量是:

A)\\\20 d

下面四个选项中,均是不正确的八进制数或+六进制数的选项是。

A) 016 B)oabc C)010 D) 0a12 0x8f 017 -0x11 7ff 018 0x8 0x16 -123 \\21 C

下面四个选项中,均是正确的八进制数或+六进制数的选项是。 A)-10 B)0abc C)0010 D) 0al2 0x8f -017 -0x11 -0xl23 -011 0xc 0xf1 -0x8 \\22 d

下面四个选项中、均是正确的数值常量或字符常量的选项是: A)0.0 B)\0f 3.9E-2.5 011 0xabcd 8.9e lel 0xFFOO 2e2 '&' '\\''' 0a 50. \\23 A

下面不正确的字符串常量是

A)'abc' B)\\\24 c

若有代数式3ae/bc,则不正确的C语言表达式是: A) a/b/c*e*3 B)3*a*e/b/c C)3*a*e/b*c D)a*e/c/b*3 \\25 A

已知各变量的类型说明如下: int k,a,b;

unsigned long w= 5; double x=1.42;

则以下不符合C语言语法的表达式是: A) x%(-3) B)w+=-2

C)k=(a=2,b=3,a+b) D)a+= a-=(b=4)*(a=3) \\26 A

已知各变量的类型说明如下: int i=8,k,a,b;

unsigned long w=5; double x=1.42,y=5.2;

则以下符合C语言语法的表达式是:

A)a+=a-=(b= 4)*(a=3) B)a=a*3=2 C)x%(-3) D)y=f1oat(i) \\27 D

以下不正确的叙述是

A)在C程序中,逗号运算符的优先级最低 B)在C程序中,APH和aph是两个不同的变量

C)若a和b类型相同,在执行了赋值表达式a=b后b中的值将放人a中,而b中的值不变。 D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值。 \\28 D

以下正确的叙述是:

A)在C程序中,每行中只能写-条语句

B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数 C)在C程序中,无论是整数还是实数,都能被准确无误地表示 D)在C程序中,%是只能用于整数运算的运算符 \\29 B

以下符合C语言语法的赋值表达式是

A)d=9+e+f=d+9 B)d=9+e,f=d+9 C)d=9+e,e++,d+9 D)d=9+e++=d+7 \\30 A

已知字母A的ASCII码为+进制数65,且c2为字符型, 则执行语句c2='A'+'6'-'3';后,c2中的值为 A)D B)68 C)不确定的值 D)C \\31 D

在C语言中,要求运算数必须是整型的运算符是: A)/ B)++ C)!= D)% \\32 A

若以下变量均是整型,且num=sum=7;则执行表达式sUM=num++,sUM++,++num后sum的值为 A)7 B)8 C)9 D)10 \\33 D

在C语言中,int、char和short种类型数据在内存中所占用的字节数 A)由用户自己定义 B)均为2个字节

C)是任意的 D)由所用机器的机器字长决定 \\34 A

若有说明语句:char c='\\72'则变量c A)包含1个字符 B)包含2个字符

C)包含3个字符 D)说明不合法,c的值不确定 \\35 A

若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是 A)2.500000 B)2.7500OO C)3.500000 D)0.000000。 \\36 B

sizeof(float)是:

A)-个双精度型表达式 B)-个整型表达式

C)-种函数调用 D)-个不合法的表达式 \\37 C

设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为 A)int B)float C)double D)不确定 \\38 A

下面四个选项中,均是非法常量的选项是

A)'as' B)'\\\\' c)-0xl8 D)0xabc -0fff '\\01' 01177 '\\0' '\\0xa' 12,456 0xf \\\39 D

在C语言中,char型数据在内存中的存储形式是: A)补码 B)反码 C)原码 D)ASCII码 \\40 B

设变量n为f1oat类型,m为int类型,则以下能实现将n中的数 值保留小数点后两位,第三位进行四舍五人运算的表达式是: A)n=(n*100+0.5)/100.0 B)m=n*100+0.5 ,n= m/100.0 C)n=n*100+0.5/100.0 D)n=(n/100+0.5)*100.0 \\41 C

表达式18/4*sqrt(4.0)/8值的数据类型为: A)int B)float C)double D)不确定 \\42 C

设C语言中,-个int型数据在内存中占2个字节, 则unsigned int型数据的取值范围为:

A)0~255 B)0~32767 C)0~65535 D)0~2147483647 \\43 D

设有说明:char w; int x; f1oat y; double z; 则表达式w* x+z-y值的数据类型为:

A)float B)char C)int D)double \\44 D

若有以下定义,则能使值为3的表达式是: int k= 7,x =12;

A)x%=(k%= 5) B)x%=(k-k%5) C)x%=k- k%5 D)(x%=k)-(k%=5) \\45 C

设以下变量均为int类型,则值不等于7的表达式是 A)(x= y= 6, x+y,x+1) B)(x= y= 6,x+y,y+1) C)(x= 6,x+1,y= 6,x+y) D)(y=6,y+l,x = y,x+1) \\46 D

putchar函数可以向终端输出-个: A)整型变量表达式值 B)实型变量值 C)字符串

D)字符或字符型变量值 \\47 B

printf函数中用到格式符%5s ,其中数字5表示输出的字符串占用5列。 如果字符串长度大于5,则输出按方式 A)从左起输出该字串,右补空格 B)按原字符长从左向右全部输出 C)右对齐输出该字串,左补空格 D)输出错误信息 \\48 C

printf函数中用到格式符%5s ,其中数字5表示输出的字符串占用5列。 如果字符串长度小于5,则输出按方式。 A)从左起输出该字串,右补空格 B)按原字符长从左向右全部输出 C)右对齐输出该字串,左补空格 D)输出错误信息 \\49 D

已有定义 int a=-2;和输出语句:printf(\以下正确的叙述是: A)整型变量的输出格式符只有%d-种

B)%x 是格式符的-种,它可以适用于任何-种类型的数据

C)%x 是格式符的-种,其变量的值按+六进制输出,但%8lx 是错误的 D)%8lx 不是错误的格式符,其中数字8规定了输出字段的宽度 \\50 D

若x ,y均定义为int型,z定义为double型,以下不合法的 scanf函数调用语句是:

A) scanf(\

B) scanf(\C) scanf(\

D) scanf(\\\51 A

已有如下定义和输入语句 ,若要求a1,a2,c1,c2值分别为10,20,A和B,

当从第-列开始输入数据时,正确的数据输入方式是 int a1,a2; char c1,c2;

scanf(\A)10A 20B< CR> B)10 A 20 B C)10A20 D)10A20 B。 \\52 B

已有定义int x; f1oat y;且执行scanf(\语句, 若从第1列开始输入数据12345678(回车),则x 的值为 A)12345 B)123 C)45 D) 345 \\53 B

已有定义int x; f1oat y;且执行scanf(\语句, 若从第-列开始输入数据12345 678(回车),则y 的值为: A)无定值 B)45.0000 C)678.000000 D)123.00000 \\54 D

已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A,B, 当从第-列开始输入数据时,正确的数据输入方式是: int a1,a2; char c1,c2; scanf(\scanf(\

A)1020AB B)10 20AB C)10 20 AB D)10 20AB \\55 D

已有程序段和输入数据的形式如下,程序中输入语句的正确形式应当为 main()

{int a;float f;

printf(\输入语句

printf(\}

Input number: 4.5 2

A)scanf(\C)scanf(\\\56 B

根据定义和数据的输入方式,输入语句的正确形式为: 已有定义: float fl,f2; 数据的输入方式:4.52 3.5

A)scanf(\

C)scanf(\\\57 D

阅读以下程序,当输入数据的形式为25,13,10正确的输出结果为: main()

{int x,y,z

scanf(\printf(\。 }

A)x+y+z=48 B)x+y+z=35 C)x+z=35 D)不确定值 \\58 B

阅读 下程序,若运行结果为如下形式 ,输入输出语句的正确内容是: main()

{int x; float y; printf(\输入语句 输出语句

}

输入形式 enter x,y: 2 3.4 输出形式 x+y=5.40

A)scanf(\B)scanf(\C)scanf(\D)scanf(\\\59 D

以下说法正确的是:

A)输入项可以为-实型常量,如scanf(\

B)只有格式控制,没有输入项,也能进行正确输入,如scanf(\C)当输入-个实型数据时,格式控制部分应规定小数点后的位数, 如scanf(\

D)当输入数据时,必须指明变量的地址,如scanf(\\\60 A

根据下面的程序及数据的输入方式和输出形式,程序中输入语句的 正确形式应该为: main()

{char ch1 ,ch2 ,ch3; 输入语句

printf(\输入形式: A B C 输出形式: A B

A) scanf(\

B) scanf(\C) scanf(\D) scanf(\\\61 D

有输入语句:scanf(\为使 变量a的值为1,b为3,c为2, 从键盘输入数据的正确形式应当是 A)132(回车) B)1,3,2(回车)

C)a=1b=3c=2(回车) D)a=1,b=3,c=2(回车) \\62 A

以下能正确地定义整型变量a,b和c并为其赋初值5的语句是 A)int a=b=c= 5; B) int a,b, c= 5; C)a= 5,b=5,c=5; D) a= b= c=5; \\63 A

已知ch是字符型变量,下面不正确的赋值语句是

A)ch='a+b'; B)ch='\\0'; C)ch='7'+'9'; D)ch=5+9; \\64 B

已知ch是字符型变量,下面正确的赋值语句是

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

若有以下定义,则正确的赋值语句是: int a,b;float x;

A) a=1,b=2, B)b++; C) a= b= 5 D) b= int(x); \\66 B

设x 、y均为f1oat型变量,则以下不合法的赋值语句是 A)++x; B)y=(x%2)/10; C)x*=y+8; D)x=y=0;

\\67 A

x,y,z均为int型变量,则执行语句x=(y=(z=10)+5)-5;后,x 、y 和之的值是: A) x=10 B) x=10 C) x=10 D) x=10 y=15 y=10 y=10 y=5 z=10 z=10 z=15 z=10 【题10.1】 D

已知学生记录描述为struct student

{int no;char name[20]; char sex;

struct {int year; int month; int day; }birth; }; struct student s;

设变量s中的“生日”应是“1984年11月11日”,下列对“生日”的正确赋值方式是 A) year= 1984; B) birth.year= 1984; month=11; birth.month=11; day=11; birth.day= 11;

C) s.year= 1984; D) s.birth.year=1984; s.month=11; s.birth.month=11; s.day=11; s.birth.day=11; 【题10.2】 A

当说明一个结构体变量时系统分配给它的内存是 A)各成员所需内存量的总和

B)结构中第一个成员所需内存量

C)成员中占内存量最大者所需的容量 D)结构中最后一个成员所需内存量 【题10.3】

以下对结构体类型变量的定义中不正确的是__。

A)#dedine STUDENT struct student B)struct student STUDENT {int num; {int num; float age; float age; }std1; }std1;

C)struct D)struct {int num; {int num; float age; float age; }std1; }student; struct student std1; [10.4] C

设有以下说明语句 struct stu {int a; float b; }stutype;

则下面的叙述不正确的是

A)struct是结构体类型的关键字

B)struct stu是用户定义的结构体类型 C)stutype是用户定义的结构体类型名 D)a和b都是结构体成员名 【题10.5】 A

C语言结构体类型变量在程序执行期间 A)所有成员一直驻留在内存中 B)只有一个成员驻留在内存中 C)部分成员驻留在内存中 D)没有成员驻留在内存中 【题10.6】 D

在16位IBM一PC机上使用C语言,若有如下走义: struct data {int i; char ch ; double f; }b;

则结构变量b占用内存的字节数是

A)1 B )2 C)8 D)11 【题10.7】 A

以下程序的运行结果是 #include\main()

{struct date

{int year,month,day; }today;

printf(\%d\\n\,sizeof(struct date)); }

A)6 B )8 C)10 D)12 【题10.8】 D

根据下面的走义,能打印出字母M的语句是 struct person {char name[9]; int age; }

struct person class[10]={\,17,\,19,\,\};

A)printf(\,class[3].name);

B)printf(\%c\\n\,class[3].name[1]); C)printf(\%c\\n\,class[2].name[1]); D)printf(\%c\\n\,class[2].name[0]); 【题10.9】 D

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

struct cmplx {int x; int y;

}cnum[2]={1,3,2,7};

printf(\%d\\n\,cnum[0].y/cnum[0].x*cnum[1].x); }

A)0 B)1 C)3 D)6 【题10. 10】 D

若有以下定义和语句: struct student

{int age;int num;};

struct student stu[3]={{1001,20},{1002,19},{1003,21}}; main()

{struct student *p; p=stu;... }

则以下不正确的引用是__。 A)(p++)->num B)p++

C)(*p).num D)p=&stu.age 【题10.11】 D

以下scanf函数调用语句中对结构体变量成员的不正确引用是 struct pupil

{char name[20];

int age; int sex; }pup[5],*p; p=pup;

A)scanf(\%s\,pup[0].name); B)scanf(\%d\].age); C)scanf(\%d\,&(p->sex)); D)scanf(\%d\,p->age); 【题10.12】 D

有以下定义和语句,则值为6的表达式是 struct s {int il;

struct s *i2; };

static struct s a[3]={ 5,&a[1],7,&a[2」,9,'\0'},* ptr; ptr= &a[0] ;

A)ptr-> il++ B)ptr++->il C)*ptr-> il D)++ptr->il 【题10.13】 C

设有如下定义: struct sk {int n; float x; }data,* n

若要使p指向data中的n域,正确的赋值语句是 A)p=&data.n; B)*p=data.n;

C)p=(struct sk * )&data.n; D)p=(struct sk *)data. n; 【题10.14】 D

若有以下说明和语句: struct student {int age; int num; }std,* p; p=&std;

则以下对结构体变量std中成员age的引用方式不正确的是 A)std.age B)p->age C)(*p).age D)*p.age 【题10. 15】 D

若有以下程序段: struct student

{int num;int age;}

struct student stu[3]={{101,20},{102,19},{103,20}}; main()

{struct student *p; p=stu;... }

则以下引用形式不合法的是。 A)(p++)-> num B)p++

C)(*p).num D)p=&stu.age 【题10.16】 D

若有以下说明和语句,则在scanf函数调用语句中对结构体 变量成员的不正确引用方式是: struct pupil {char name[20];

int age; int sex; }pup[5」,* p; p= pup;

A)scanf (\%s\[0].name); B)scanf(\%d\,&pup[0].age); C)scanf(\%d\,&(p-> sex));D)scanf(\%d\,&p-> age); [题10.18] C

以下程序的输出结果是 struct stu

{int x;int *y;} *p;

int dt[4]={10,20,30,40}

struct stu a[4] ={ 50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3] }; main()

{p=a ; printf(\%d\%d\,(++p)->x); printf(\%d\\n\,++(*p->y)); }

A)10,20,20 B)50,60,21 C)51,60,21 D)60,70,31 【题10. 20】 B

以下对结构体变量stul中成员age的非法引用是 struct student {int age; int num; }stu1,*p; p=&stu1;

A)stu1.age B)student.age C)p->age D)(*p).age 【题10.25】 C

当说明一个共用体变量时系统分配给它的内存是 A)各成员所需内存量的总和

B)结构中第一个成员所需内存量

C)成员中占内存量最大者所需的容量 D)结构中最后一个成员所需内存量 【题10.26】 C

以下对C语言中共用体类型数据的叙述正确的是 A)可以对共有体变量名直接赋值

B)一个共用体变量中可以同时存放其所有成员 C)一个共有体变量中不能同时存放其所有成员 D)共用体类型定义中不能出现结构体类型的成员 【题10.27】 B

若有以下定义和语句: union data {int i; char c; float f; }a;

int n;

则以下语句正确的是

A)a=5; B)a={2,'a',1.2}; C)printf(\%d\\n\,a); D)n=a; 【题10.28】 C

设有以下说明,则下面不正确的叙述是 union data {int i; char c;

f1oat f; )un;

A)un所占的内存长度等于成员f的长度

B)un的地址和它的各成员地址都是同一地址 C)un可以作为函数参数

D)不能对un赋值,但可以在定义un时对它初始化 【题10.29】 B

C语言共用体类型变量在程序运行期间 A)所有成员一直驻留在内存中 B)只有一个成员驻留在内存中 C)部分成员驻留在内存中 D)没有成员驻留在内存中 【题10.30】 B

以下程序的运行结果是 #inc1ude \main()

{union{long a; int b; char c; }m;

printf(\%d\\n\,sizeof(m)); }

A)2 B)4 C)6 D)8 【题10.33】 C

在16位IBM一PC机上使用C语言,若有如下走义: union data {int i; char ch; double f; }b;

则共用体变量b占用内存的字节数是

A)1 B )2 C)8 D)11 【题10.34】 A

以下程序的运行结果是 #include%union pw {int i;

char ch[2」; }a; main()

{ a.ch[0]=13; a.ch[1]=0; printf(\%d\\n\,a.i); }

A)13 B)14 C)208 D)209 【题10.35】 C

使用typedef定义一个新类型的正确步骤是

A)2,4,1,3 B)1,3,2,4 C)2,1,4,3 D)4,2,3,1 1.把变量名换成新类型名。

2.按定义变量的方法写出定义体。 3.用新类型名定义变量。

4.在最前面加上关键字typedef。 【题10.36】 B

下面对typedef的叙述中不正确的是

A)用typedef可以定义各种类型名,但不能用来定义变量

B)用typedef可以增加新类型

C)用typedef只是将已存在的类型用一个新的标识符来代表 D)使用tvpedef有利于程序的通用和移植 【题10.37】 C

以下程序的运行结果是

tvpedef union {1ong a[2]; int b[4]; char c[8]; }TY ; TY our; main()

{printf(\%d\\n\,sizeof(our)); }

A) 32 B)16 C)8 D)24

【题12.1】 A

系统的标准输入文件是指

A)键盘 B)显示器 C)软盘 D)硬盘 【题12.2】 C

以下可作为函数fopen中第一个参数的正确格式是 A)c:\%user\\text.txt B)c:\%user\\text.txt

C)\.txt\\user\\text.txt\【题12.3】 B

若执行fopen函数时发生错误,则函数的返回值是 A)地址值 B)O C)1 D)EOF 【题12.4】 B

若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写, 则文件方式字符串应是

A)\【题12.5】 A

若以“a+”方式打开一个已存在的文件,则以下叙述正确的是 A) 文件打开时,原有文件内容不被删除,

A) 位置指针移到文件末尾,可作添加和读操作, 文件打开时,原有文件内容不被删除,

A) 位置指针移到文件开头,可作重写和读操作 文件打开时,原有文件内容被删除,只可作写操作 D)以上各种说法皆不正确 【题12.6】 C

当顺利执行了文件关闭操作时,fclose函数的返回值是 A)-1 B)TURE C)0 D)1 【题12.7】 C

已知函数的调用形式:fread(buffer,size,count,fp); 其中buffer代表的是

A)一个整型变量,代表要读入的数据项总数 B)一个文件指针,指向要读的文件

C)一个指针,指向要读入数据的存放地址 D)一个存储区,存放要读的数据项 D

逻辑运算符两侧运算对象的数据类型 A)只能是0或1

B)只能是0或非0正数

C)只能是整型或字符型数据 D)可以是任何类型的数据 C

下关于运算符优先顺序的描述中正确的是

A)关系运算符< 算术运算符< 赋值运算符< 逻辑与运算符 B)逻辑 运算符< 关系运算符< 算术运算符< 赋值运算符 C)赋值运算符< 逻辑与运算符< 关系运算符< 算术运算符 D)算术运算符< 关系运算符< 赋值运算符< 逻辑与运算符 B

下列运算符中优先级最高的是: A)< B)+ C)&& D)!= C

能正确表示\当x 的取值在[1,10]和[200,210]范围内为真, 否则为假\的表达式是:

A) (x>=1) &&(x<=10) &&(x> = 200) &&(x<=210) B) (x>=1) || (x<=10) ||(x>=200) ||(x<=210) c) (x>=1) &&(x<=10)||(x>= 200) &&(x<=210) D) (x > =1)||(x< =10) && (x> = 200)||(x<=210) C

表示图中坐标轴上阴影部分的正确表达式是: /////||//////| /////||//////|

-----------------------------> X a b c

A)(X<=A)&&(X>=B)&&(X<=C) B) (x< =a)||(b<=x<=c)

C)(x<=a)|| (x> =b) && (x<=c) D)(x < =a)&&(b< = x < = c) C

判断char型变量ch是否为大写字母的正确表达式是

A)' A' <=ch<='z' B)(ch> = 'A')&(ch<=' z' )

C)(ch>=' A' )&&(ch<='z') D)(' A' < = ch)AND('z'> = ch) D

设x,y 和z是int型变量,且x = 3,y= 4,z= 5,则下面表达式中值为0的是 A)'y'&&'y' B)x < =y

C) x||y+z && y-z D) !(x

已知x =43,ch='A',y=0则表达式(x > = y && ch<'B'&&!Y) 的值是 A)0 B)语法错 C)1 D)\假\ C

若希望当A的值为奇数时,表达式的值为\真\的值为偶数时,表达式的值 为\假\。则以下不能满足要求的表达式是:

A) A%2= =1 B)!(A%2 = =0) C)!(A%2) D) A%2 B

设有 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

D

判断char型变量c1是否为小写字母 正确表达式为:

A)' a' <=cl<=' z' B) (cl> = a)&&(cl<=z) C)(' a' >=cl)||(' z' < = cl) D)(c1>='a')&&(cl<='z') B

以下程序的运行结果是: #include \main()

{int a,b,d= 241; a=d/100 % 9 b= (-1)&&(-1);

printf(\}

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

执行以下语句后a的值为: int a,b,c; a= b= c= 1;

++a||++b&&++c

A)错误 B) 0 C) 2 D) 1 A

执行以下语句后b 的值为:

int a=5,b=6,w=1,x=2,y=3,z=4; (a=w>x)&&(b=y>z);

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

以下不正确的if语句形式是: A)if(x>y && x!=y);

B)if(x= =y) x+=y;

C)if(x != y) scanf(\ D)if(x

下列运算符中优先级最低的是:

A)?: B)&& c)+ D) != * B

以下if语句语法正确的是: A) if(x>0) printf(\ else printf(\

A) if (x>0) {x=x+y; printf(\ else printf(\

A) if(x>0) {x=x+y; prinrf(\ else printf(\

A) if(x > 0) { x = x +y; printf(\ else printf(\* D

请阅读以下程序: main()

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

if(a=b+c) printf(\e1se printf(\ 以上程序 :

A)有语法错不能通过编译 B)可以通过编译但不能通过连接 C)输出*** D)输出$$$ *

C

以下程序的运行结果是 : main() {int m=5;

if(m++> 5) printf(\ e1se printf(\ A)4 B)5 C)6 D)7 * B

当a=1,b=3,c=5,d=4 ,执行完下面一段程序后x 的值是 : if(a

if(c

if(b

A)1 B)2 C)3 D)6 * C

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

{int a=100,x =10,y=20,okl=5,ok2=0; if (x

if(ok2) a=10; a=-1;

printf(\

A) 1 B) 0 C)-1 D)值不确定 * B

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

{int x= 2,y=-1,z=2; if (x

if(y<0) z= 0; else z+ =1;

printf(\

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

为了避免在嵌套的条件语句If一else中产生二义性, C语言规定else子句总是与( )配对。

A)缩排位置相同的if B)其之前最近的if C) 之后最近的if D)同一行上的if * B

以下不正确的语句为: A) if(x>y);

B) if (x= y) &&(x! = 0) x+= y;

C) if(x!= y)scanf(\ D) if(x< y){x++ ;y++;} * B

请阅读以下程序:

#include main()

{float a,b

scanf(\if (a<0.0) b=0.0;

else if((a<0.5) &&(a!=2.0)) b= 1.0/(a+2.0); else if(a<10.0) b= 1.0/x ; else b=10.0;

printf(\

若运行时输入2.0(回车),则上面程序的输出结果是:

A)0.000000 B)0.500000 C) 1. 000000 D) 0.250000 * B

若有条件表达式(exp) ? a++:b--,则以下表达式中能完全等价 于表达式(exp)的是:

A) (exp==0) B) (exp!=0)

C) (exp==1) D) (exp!=1) A

若运行时给变量x 输入12,则以下程序的运行结果是: main()

{int x,y;

scanf(\

y=x>12 ? x+10:x-12; printf(\

A)0 B)22 C)12 D)10 * D

以下程序的运行结果是: main()'

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

printf(\ A)4 B )3 C)2 D)1 * B

执行以下程序段后,变量a,b,c的值分别是: int x=10,y=9; int a,b,c;

a =(--x==y++)?--x:++y ; b = x++; c = y;

A)a=9,b=9,c= 9 B )a=8,b=8,c=10 C)a=9,b=10,c=9 D)a=1,b=11,c=10 * A

若w,x,y,z,m均为int型变量,则执行下面语句后的m值是: w= 1;x = 2;y= 3;z=4; m=(w

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

若w=1,x=2,y=3,z=4,则条件表达式w

执行以下程序段后的输出结果是 int w=3, z=7,x =10;

printf(\ printf(\ printf(\ printf(\

A)0 B) 1 C)0 D) 0 * C

设有程序段 int k=10;

while (k=0) k= k-1; 则下面描述中正确的是

A) while循环执行10次 B)循环是无限循环

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

有以下程序段

int x=0,s=0;

while (!x!= 0) s+=++x; printf(\则

A)运行程序段后输出0 B)运行程序段后输出1 C)程序段中的控制表达式是非法的 D)程序段执行无限次 * A

语句while(!E)中的表达式!E等价于:

A) E==0 B) E!=1 C) E!=0 D) E==1 * A

下面程序段的运行结果是: a=1;b= 2;c=2;

while(a

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

下面程序段的运行结果是: x=y=0;

while(x<15) y++,x+=++y; printf(\

A) 20,7 B)6,12 c) 20,8 D)8,20 * C

下面程序段的运行结果是 int n=0;

while(n++<=2); printf(\ A)2 B)3 C)4 D)有语法错 * B

设有程序段 t=0;

while (printf(\ {t++;

if(t<3) break } 下面描述正确的是:

A)其中循环控制表达式与0等价 B)其中循环控制表达式与'0'等价

C)其中循环控制表达式是不合法的 D)以上说法部不对 * B

下面程序的功能是将从键盘输入一对数,由小到大排序输出。 当输入一对相等数时结束循环,请选择填空: #include main()

{int a,b,t;

scanf(\while( 【1】 ) {if(a>b)

{t=a;a=b;b=t;}

printf(\scanf(\

【1】 A) !a=b B) a!=b C) a==b D) a=b * C

下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数m 和小写字母的个数n,并输出m、n中的较大者,请选择填空: #include \ main()

{int m=0,n=0; char c;

while((【1】)!='\\n')

{ if(c>='A' && C<='Z') m++ ;

if(c>='a' && c<='z') n++; } printf(\

【1】 A) c=getchar() B) getchar() C)c=getchar() D) scanf(\* C

下面程序的功能是将小写字母变成对应大写字母后的第二个字母。 其中y变成A,z 变成B.请选择填空。 #include \ main() {char c;

while((c=getchar())!='\\n') {if(c>= 'a'&& c<='z') c-=30; if(c>'Z' && c<='Z'+ 2) 【2】; }

printf(\

【2】A) c='B' B) c='A' C) c-=26 D) c=c+26 * B

下面程序的功能是在输入的一批正整数中求出最大者,输入0 结束循环,请选择填空。 #include main()

{int a,max= 0; scanf(\ while(【1】)

{if(max

【1】 A) a==o B)a C) !a==1 D)!a * C

下面程序的运行结果是。 #include main()

{ int num= 0; while(num<=2) {num++

printf (\

A)1 B ) 1 c)1 D)1 2 2 2 3 3

4 *

C

以下程序段 x= -1; do

{x=x*x;} while(!x);

A)是死循环 B)循环执行二次 C)循环执行一次 D)有语法错误 * C

以下描述中正确的是:

A)由于do一while循环中循环体语句只能是一条可执行语句, 所以循环体内不能使用复合语句

B)do一while循环由do开始,用while结束,在while(表达式) 后面不能写分号

C)在do一while循环体中,一定要有能使while后表达式值 变为零(\假\的操作

D)do一while循环中,根据情况可以省略while * B

若有如下语句 int x=3;

do { printf(\ 则上面程序段

A)输出的是 1 B)输出的是1和-2 C)输出的是3和0 D)是死循环 *

下面程序的功能是计算正整数2345的各位数字平方和,请选择填空。 #include main()

{int n,sum=0; n=2345

do{ sum=sum+(n)*(n)}; n=【2】; }while(n);

printf(\

【2】 A) n/1000 B)n/100 C) n/10 D) n * B

下面程序是从键盘输入学号,然后输出学号中百位数字是3的学号,输入 0时结束循环。请选择填空。 # include main()

{1ong int num;

scanf(\

do { if( 【1】) printf(\ scanf(\ }while(!num==0);}

【1】 A) num B) num>0==0 C)!num==0 D) !num!= 0 * B

下面程序的功能是把316表示为两个加数的和,使两个加数分别能被 13和11整除。请选择填空。 #include main()

{int i=0,j,k;

do{ i++;k=316-13*i;} while(【1】);j=k/11;

printf(\

【1】A)k/11 B) k C) k/11==0 D) k/11== 0

* D

下面程序的运行结果是: #indude main()

{int y=10; do{y--;} while(--y);

printf(\

A)-1 B) 1 C)8 D) 0 * D

若运行以下程序时,从键盘输入ADescriptor(CR)表示回车, 则下面程序的运行结果是: #include main()

{ char c;int v0=0.v1=0,v2=0; do { switch(c=getchar())

{case 'a':case 'A' :case 'e':case ' E' :

case 'i':case 'I' :case 'o':Case 'O' :case 'u':case 'U' :vl+=1; default:v0+=1;v2+=1 ;} while(c!='\\n');

printf(\

A) v0=7,v1=4,v2=7 B)v0=8,v1=4,v2=8 C)v0=11,v1=4,v2=11 D)v0=12,vl=4,v2=12 * B

下面程序的运行结果是: #include main()

{int a=1,b=10; do

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

printf(\

A)a=3,b=11 B )a=2,b=8 C)a=1, b=-1 D)a=4,b=9 * D

下面有关for循环的正确描述是:

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

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

对for(表达式1;;表达式3)可理解为: A) for(表达式1; 0;表达式3) B) for(表达式1;1;表达式3)

C) for(表达式1;表达式1;表达式3) D) for(表达式1;表达式3;表达式3) * B

若i为整型变量,则以下循环执行次数是:

for (i=2;i==0;) printf(\ A)无限次 B) 0次 C) 1 次 D) 2次 * C

以下for循环的执行次数是:

for (x=0,y=0; (y=123)&&(x<4); x++);

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

A

以下不是无限循环的语句为:

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; * C

下面程序段的运行结果是:

for (y=1;y<10;) y=((x=3*y,x+1),x-1); printf (\

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

下面程序段的运行结果是

for(x=3;x<6;x++)printf((x%2)?(\ A)**3 B )##3 C)##3 D)**3##4 ##4 **4 **4##5 **5 **5 ##5 * C

下列程序段不是死循环的是 A) int i=100; whiLe (1) {i=i0+1;

if (i>100) break; } B) for(;;); C) int k=0;

do{++k;} while (k> =0) ; D) int s=36; while(s);--s * C

执行语句for(i=1;i++<4;);后变量i的值是 A)3 B )4 C)5 D)不定 * D

下面程序的功能是计算:至50中是7的倍数的数值之和,请选择填空。 #include · main()

{int i,sum= 0; for(i=1;i<=50;i++) if([1]) sum+=i;

printf(\

A) (int)(i/7)==i/7 B) (int)i/7==i/7 C) i%7= 0 D) i%7==0 * B

下面程序的功能是计算 1至10之间的奇数之和及偶数之和。请选择填空; # include main()

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

for(i=0;i<=10;i+=2) { a+=i; [1]; c+=b;}

printf(\偶数之和=%d\\n\ printf(\奇数之和=%d\\n\

[1] A )b=i-- B) b=i+1 C) b=i++ D)b=i-1 * B

下面程序的运行结果是:

#include main() {int i;

for(i=1;i<=5;i++) switch(i%5) {case 0:printf(\ case 1 :printf(\ default :printf(\ case 2 :printf(\

A)#&&&* B) #& C) # D)#& & &

& & * & * * D

下面程序的运行结果是: #include main()

{ int x,i; for(i=1;i<=100;i++) {x=i;

if(++x%2==0) if(++x%3==0) if(++x%7==0)

printf(\

A)39 81 B)42 84 C)26 68 D) 28 70 * C

下面程序段的功能是计算1000!的末尾含有多少个零。请选择填空。 (提示:只要算出1000!中含有因数5的个数即可 for(k=0,i=5;i<=1000; i+=5) while(【1】){k++; m=m/5;}

【1】A)m%5==0 B)m=m%5==0 C)m%5==0 D)m%5!=0 * D

下面程序的运行结果是: #include main()

{int i,b,k=0;

for(i=1;i<=5;i++) {b=i%2;

while(b-->=0) k++;} printf(\

A)3,-1 B )8,-1 C)3,0 D)8,-2 * B

以下正确的描述是。

A)continue语句的作用是结束整个循环的执行

B)只能在循环体内和switch语句体内使用break语句

C)在循环体内使用break语句或continue语句的作用相同 D)从多层循环嵌套中退出时, 只能使用goto语句 * D

下面程序段:

for (t=1; t<=100;t++) {scanf(\ if(x<0) continue; printf(\ A) 当x<0时整个循环结束 B) x>=0时什么也不输出

C) printf函数永远也不执行 D) 最多允许输出100个非负整数 * C

下面程序段: x=3; do

{y=x--;

if(!y){ printf(\ printf(\ A)将输出## B)将输出##*

C)是死循环 D)含有不合法的控制表达式 * C

以下描述正确的是

A) goto语句只能用于退出多层循环

B) switch语句中不能出现continue语句 C) 只能用continue语句来终止本次循环 D) 在循环中break语句不能独立出现 * C

与下面程序段等价的是: for(n=100;n<=200; n++) {if (n%3==0) continue; printf(\

A) for(n=100;(n%3)&& n<=200;n++) printf(\ B) for(n=100;(n%3)|| n<=200;n++) printf(\ C) for(n=100;n<=200;n++) if(n%3!=0) printf(\ D) for(n=100;n<=200;n++)

{if(n%3) printf(\ else continue; break;} * B

下面程序的运行结果是: #include { 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(\

A)k=3 B)k=4 C)k=2 D)k=0 * B

若运行以下程序时,从键盘输入3.6,2.4,(表示回车), 则下面程序的运行结果是: #include # include main()

{float x,y,z;

scanf(\ z=x/y; while(1)

{if(fabs(z)>1.0) {x=y;y=z;z=x/y;} else break;}

printf(\

A) 1.5 B)1.6 C) 2.0 D) 2.4 * B

下面程序的运行结果是: #include \main() {int a,b;

for(a=1,b=1;a<=100;a++) {if (b>=20) break;

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

printf(\

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

下面程序的运行结果是: #include \main() {int i;

for(i=1;i<=5;i++) {if (i%2) printf(\else continue; printf(\printf(\

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

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

{int i,j,a=0;

for (i=0;i<2;i++) { for (j=0;j<=4;j++) {if (j%2) break; a++;} a++;}

printf(\

A) 4 B) 5 C) 6 D) 7 *【题6.1】 c

在c语言中,引用数组元素时,其数组下标的数据类型允许是 A)整型常量 B)整型表达式

C)整型常量或整型表达式 D)任何类型的表达式 *【题6.2】 D

以下对一维整型数组a的正确说明是 A)int a(10); B)int n=10,a[n]; C)int n; D)#define SIZE 10; scanf(\ int a[n]; *【题6.3】 D

若有说明:int a[10];则对a数组元素的正确引用是

A)a[10] B) a[3.5] C) a(5) D) a[10-10] *【题6.4】 A

在C语言中,一维数组的定义方式为:类型说明符 数组名

A) [常量表达式] B) [整形表达式] C)[ 整型常量]或[整型表达式] D)[整型常量] *【题6.5】 C

以下能对一维数组a进行正确初始化的语句是 A) int a[10]=(0,0,0,0,0) B)int a[10]={} C) int a[]={0}; D) int a[10]={10*1}; *【题6.6】 C

以下对二维数组a的正确说明是

A)int a[3][]; B)float a(3,4); C) double a[1][4]; D)float a(3)(4); *【题6.7】 C

若有说明:int a[3][4]; 则对a数组元素的正确引用是 A) a[2][4] B) a[1,3] C) a[1+1][0] D) a(2)(1); *【题6.8】 D

若有说明:int a[3][4];则对a数组元素的非法引用是 A) a[0][2*1] B) a[1][3] C)a[4-2][0] D)a[0][4] *【题6.9】 B

以下能对二维数组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},{},{1,1}}; *【题6.10】 C

以下不能对二维数组a进行正确初始化的语句是 A) int a[2][3]={0};

B) int a[][3」={{1,2},{0}};

C) int a[2][4]={{1,2},{3,4},{5,6}}; D) int a[][3」={1,2,3,4,5,6}; *【题6.11】 D

若有说明: int a[3][4]={0};则下面正确的叙述是 A)只有元素a[0][0]可得到初值0 B)此说明语句不正确:。

C)数组a中各元素都可得到初值,但其值不一定为0。 D)数组a中每个元素均可得到初值0 *【题6.12】 D

若有说明:int a[][4]={0,0};则下面不正确的叙述是 A)数组a的每个元素都可得到初值0 B)二维数组a的第一维大小为1

C)因为二维数组0中第二维大小的值除以初值个数的商为1,故数组a行 数为1

D)只有元素a[0][0]和a[0][1]可得初值0,其余元素均得不到初值0 *【题6.13] B

若有说明:int a[3]「4]则数组a各元素 A)可在程序的运行阶段得到初值0

B)可在程序的编译阶段得到初值0 C)不能得到确定的初值

D)可在程序的编译或运行阶段得初值0 *【题6.14】 C

以下各组选项中,均能正确定义二维实型数组a的选项是 A)float a[3][4]; B)float a(3,4); float a[][4]; float a[3][4];

float a[3][]={{1},{0}}; float a[][]={{0},{0}};

C)float a[3][4]; D)float a[3][4]; static float a[][4]={{0},{0}}; float a[3][]; auto float a[][4]={{0},{0},{0}}; float a[][4] *【题6.15] A

下面程序(每行程序前面的数字表示行号) 1 main() 2 {

3 int a[3]={3*0}; 4 int i;

5 for(i=0;i<3;i++) scanf(\ 6 for(i=1;i<3;i++) a[0]=a[0]+a[i] 7 printf(\ 8 }

A)第3行有错误 B) 第7行没有错误 C)第5行有错误 D) 没有错误 *【题6.16] C

下面程序一一一(每行程序前面的数字表示行号)。 1 main() 2 {

3 float a[10]={0.0}; 4 int i

5 for(i=0;i<3;i++) scanf(\6 for(i=0;i<10;i++) a[0]=a[0]+a[i]; 7 printf(\8 }

A)没有错误 B)第3行有错误 C)第5行有错误 D)第7行有错误 *【题6.17】 D

下面程序有错的行是 1 main() 2 {

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

5 scanf(\

6 for(i=1;i<3;i++) a[0]=a[0]+a[i]; 7 printf(\ 8 }

A)3 B)6 C)7 D)5 *【题6.18】 D

下面程序(每行程序前面的数字表示行号) 1 main() 2 {

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

5 for(i=0;i<3;i++)scanf(\ 6 for(i=1;i<4;i++)a[0]=a[0]+a[i]; 7 printf(\ 8 }

A)没有错误 B)第3行有错误 C)第5行有错误 D)第6行有错误 *【题6.19】 D

若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为 (假设a[0][0]位于数组的第一个位置上。)

A)i*m+j B)j*p+i。C)i*m+j-1 D)i*m+j+1 *【题6.20】 B

对以下说明语句的正确理解是 int a[10]={6,7,8,9,10};

A)将5个初值依次赋给a[1]至a[5] B)将5个初值依次赋给a[0]至a[4] C)将5个初值依次赋给a[6]至a[10]

D)因为数组长度与初值的个数不相同,所以此语句不正确 *【题6.21】 B

以下不正确的定义语句是__.

A) double x[5]={2.0,4,0,6.0,8.0,10.0}; B) int y「5」={0,1,3,5,7,9};

C) char c1[]={’1’,’2’,’3’,’4’,’5’}; D) char c2[]=}{'\\x10','\\xa','\\x8'}; *【题6.22】 B

若有说明:int a[ ][3]={1,2,3,4,5,6,7};则a数组第一维的大小是 A) 2 B) 3 C) 4 D)无确定值 *【题6.23】 B

若二维数组a有m列,则在a[i][j]前的元素个数为 A)j*m+j B)i*m+j C)i*m+j D)i*m+j+1 *【题6.24】 A

定义如下变量和数组: int k;

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

for(k=0;k<3;k++) printf(\ A) 3 5 7 B) 3 6 9 C) 1 5 9 D) 1 4 7 *【题6.25】 B

若有以下程序段: ......

int a[]={4,0,2,3,1};i,j,t; for(i=1;i<5;i++) {t=a[i];j=i-1;

while(j>=0&&t>a[j]) {a[j+1]=a[j];j- -;} a[j+1]=t;} ......

则该程序段的功能是

A)对数组a进行插入排序(升序) B)对数组a进行插入排序(降序) C)对数组a进行选择排序(升序) D)对数组a进行选择排序(降序) *【题6.26】 D

以下正确的定义语句是

A) int a[1」[4」={1,2,3,4,5}; B) float x[3][]={{1},{2},{3}};

C) long b[2][3]={{1},{1,2},{1,2,3}}; D) double y[][3]={0}; *【题6.27】 C

下面程序的运行结果是 main() {int a[6」「6」,i,j; for(i=1;i<6;i++)

for(j=1;j<6,j++) a[i][j]=(i/j)*(j/i); for(i=1;i<6;i++)

{for(j=1;j<6;j十十) printf(\ A)11111 B)00001 C)10000 D)10001 11111 00010 01000 01010 11111 00100 00100 00100

11111 01000 00010 01010 11111 10000 00001 10001 *【题6.28】 C

下面程序的运行结果是 __. main()

{int a[6],i;

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

{a[i]=9*(i-2+4*(i>3))%5; printf(\

A)—40404 B)—40403 C)一40443 D)一40440 *【题6.29】 D

下面是对s的初始化,其中不正确的是

A) char s[5」={\ C) char s[5]=\*【题6.30】 B

下面程序段的运行结果是

char c[5]={'a','b','\\0','c','\\0'}; printf(\

A)’a’’b’ B)ab C)ab c D)ab (其中 表示空格) *【题6.31】 D

对两个数组a和6进行如下初始化 char a[]=\

char b[]={’A’,’B’,’C’,’D’,’E’,’F’}; 则以下叙述正确的是

A) a与b数组完全相同 B) a与b长度相同

C) a和b中都存放字符串 D) a数组比b数组长度长 *【题6.32】 B

有两个字符数组a、b,则以下正确的输入格式是

A) gets(a,b); B) scanf(\

C) scanf(\*【题6.33】 D

有字符数组a[80]和b[80],则正确的输出形式是 A) puts(a,b); B) printf(\C) putchar(a,b); D) puts(a),puts(b); *【题6.34】 D

下面程序段的运行结果是 char a[7]=\ char b[4]=\ strcpy(a,b);

printf(\

A)一 B)\\O C)e D)f (其中一表示空格) *【题6.35】 D

有下面的程序段

char a[3],b[]=\a=b;

printf(\则

A)运行后将输出China B)运行后将输出Ch C)运行后将输出Chi D)*【题6.36】 B

编译出错

下面程序段的运行结果是

char c[」=\printf(\

A)14 B)3 C)9 D)字符串中有非法字符,输出值不确定 *【题6.37】 D

判断字符串a和b是否相等,应当使用 A) if (a= =b) B) if (a=b)

C) if (strcpy(a,b)) D) if (strcmp(a,b)) *【题6.38】 D

判断字符串s1是否大于字符串s2应当使用 A) if (sl>s2) B) if (strcmp(s1,s2))

C) if (strcmp(s2,sl)>0) D) if (strcmp(s1,s2)>0) *【题6.40】 D

下面描述正确的是

A)两个字符串所包含的字符个数相同时,才能比较字符串 B)字符个数多的字符串比字符个数少的字符串大 C)字符串\与\相等

D)字符串\小于字符串\一表示空格) *【题6.41】 C

下述对C语言字符数组的描述中错误的是 A)字符数组可以存放字符串

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

C)可以在赋值语句中通过赋值运算符\对字符数组整体赋值 D)不可以用关系运算符对字符数组中的字符串进行比较 *【题6.45】 B

下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间 用空格分隔。请选择填空。 #include main()

{char s[80」,c1,c2=''; int i=0,num=0; gets(s); while(s[i]!='\\0')

{c1=s[i];if(i= =0) c2='';else c2=s[i-1]; if(【1】) num++;i++}

printf(\【1】A)c1='' && c2=='' B)cl!='' && c2=='' C)c1=='' && c2!='' D)cl!='' && c2!='' *【题6.46】 A

下面程序的运行结果是 #indude main()

{char ch[7]={\ int i,s=0;

for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2) s=10*s+ch[i]-'0'; printf(\ }

A)1 B)1256 C) 12ab56 D)1 *【题6.47】 A

当运行以下程序时,从键盘输入:aa bb cc dd

(表示回车),则下面程序的运行结果是 main()

{char a1[5],a2[5」,a3[5],a4[5];

scanf(\ puts(al); puts(a2);puts(a3);puts(a4);} A) aa B)aa C)aa D) aa bb

bb bb bb cc cc cc dd dd cc dd dd ee *【题6.48】 D

当运行以下程序时,从键盘输入:ab c def (表示回车),则下面程序的运行结果是 #define N 6 main()

{ char c[N]; int i=0;

for (;i

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

{char a[80」=\ int i=0;strcat(a,b);

whi1e(a[i++]!='\\0')b[i]=a[i];puts(b);} A)LB B)ABLMNP C)AB D)LBLMNP *【题6.51】 B

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

{char str[]=\for(k=2;(c=str[k]!='\\0';k++) {switch(c)

{case 'I':++k;break; case 'L':continue;

default:putchar(c);continue;} putchar('*');}}

A)SSW* B)SW* C) SW*A D)SW *【题6.52】 B

下面程序的运行结果是 #include main()

{char a[]=\int i,j=0;

for(i=1;i<7;i++) if(a[j]

A)mogninr B)mo C)morning D)mornin *【题7.1】 B

以下正确的说法是

建立函数的目的之一是A)提高程序的执行效率

B)提高程序的可读性 C)减少程序的篇幅 D)减少程序文件所占内存 *【题7.2】 B

以下正确的说法是

A)用户若需调用标准库函数,调用前必须重新定义

B)用户可以重新定义标准库函数,若如此,该函数将失去原有含义 C)系统根本不允许用户重新定义标准库函数

D)用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件 包括到用户源文件中,系统自动去调 *【题7.3】 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); *【题7.4】 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;} *【题7.5】 A

以下正确的说法是 在C语言中

A)实参和与其对应的形参各占用独立的存储单元 B)实参和与其对应的形参共占用一个存储单元

C)只有当实参和与其对应的形参同名时才共占用存储单元 D)形参是虚拟的,不占用存储单元 *【题7.6】 D

若调用一个函数,且此函数中没有return语句,则正确的说法是 该函数

A)没有返回值

B)返回若干个系统默认值

C)能返回一个用户所希望的函数值 D)返回一个不确定的值 *【题7.7】 B

以下不正确的说法是 C语言规定

A)实参可以是常量、变量或表达式 B)形参可以是常量、变量或表达式 C)实参可以为任意类型、

D)形参应与其对应的实参类型一致 *【题7.8】 C

以下正确的说法是

A)定义函数时,形参的类型说明可以放在函数体内 B) return后边的值不能为表达式

C)如果函数值的类型与返回值类型不一致,以函数值类型为准 D)如果形参与实参的类型不一致,以实参类型为准 *【题7.9】 B

C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是 A)地址传递

B)单向值传递

C)由实参传给形参,再由形参传回给实参 D)由用户指定传递方式 *【题7.10】 C

以下程序有语法性错误,有关错误原因的正确说法是 main()

{int G=5,k; void prt_char(); ......

k=prt_char(G); ......}

A)语句void prt_char();有错,它是函数调用语句,不能用void 说明 B)变量名不能使用大写字母

c)函数说明和函数调用语句之间有矛盾 D)函数名不能使用下划线 *【题7.11】 B

C语言允许函数值类型缺省定义,此时该函数值隐含的类型是 A)float型 B)int型 c)1ong型 D)double型 *【题7.12】

C语言规定,函数返回值的类型是由 A) return语句中的表达式类型所决走 B)调用该函数时的主调函数类型所决定 C)调用该函数时系统临时决定

D)在定义该函数时所指定的函数类型所决定 *【题7.13】 B

下面函数调用语句含有实参的个数为

func((expl,exp2), (exp3,exp4,exp5)); A)1 B)2 C)4 D)5 *【题7.14】 D

以下错误的描述是 函数调用可以

A)出现在执行语句中 B)出现在一个表达式中 C)做为一个函数的实参 D)做为一个函数的形参 *【题7.16】 B

以下正确的描述是 在C语言程序中

A)函数的定义可以嵌套,但函数的调用不可以嵌套 B)函数的定义不可以嵌套,但函数的调用可以嵌套 C)函数的定义和函数的调用均不可以嵌套 D)函数的定义和函数的调用均可以嵌套 *【题7.19】 A

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

B)数组第一个元素的值 C)数组中全部元素的值 D)数组元素的个数 *【题7.20】 B

已有以下数组定义和f函数调用语句,则在f函数的说明中,对形参数组

array的错误定义方式为 int a[3][4]; f(a);

A) f(int array[][6]) B) f(int array[3][]) C) f(int array[][4]) D) f(int array[2][5]) *【题7.21】 A

若使用一维数组名作函数实参,则以下正确的说法是 A)必须在主调函数中说明此数组的大小

B)实参数组类型与形参数组类型可以不匹配 C)在被调函数中,不需要考虑形参数组的大小 D)实参数组名与形参数组名必须一致 *【题7.23】 A

以下正确的说法是

如果在一个函数中的复合语句中定义了一个变量,则该变量 A)只在该复合语句中有效 B)在该函数中有效

C)在本程序范围内均有效 D)为非法变量 *【题7.24】 D

以下不正确的说法为

A)在不同函数中可以使用相同名字的变量 B)形式参数是局部变量

C)在函数内定义的变量只在本函数范围内有效

D)在函数内的复合语句中定义的变量在本函数范围内有效 *【题7.26】 C

以下程序的正确运行结果是 void num()

{extern int x,y; int a=15,b=10; x=a-b;y=a+b;} int x,y; main()

{int a=7,b= 5;

x=a+b;y=a-b; num(); printf(\

A) 12,2 B)不确定 C)5,25 D) 1,12 *【题7.27】 A

凡是函数中未指定存储类别的局部变量,其隐含的存储类别为 A)自动(auto) B)静态(static)

C)外部(extern) D)寄存器(register) *【题7.28】 D

在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全 局变量,则该变量需要使用的存储类别是 A)extern B)register C)auto D)static *【题7.29】 D

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

{int a=2,i;

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

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

A) 7 7 7 B) 7 10 13 C) 7 9 11 D) 7 8 9 *【题7.30】 A

以下程序的正确运行结果是 #inc1ude main()

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

p=func(k,m); printf(\ p=func(k,m); printf(\ 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 *【题8.1】 C

以下叙述中不正确的是

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

B)在程序中凡是以#号开始的语句行都是预处理命令行 C)C程序在执行过程中对预处理命令行进行处理 D)以下是正确的宏定义 #define IBM一PC *【题8.2】 C

以下叙述中正确的是

A)在程序的一行上可以出现多个有效的预处理命令行 B)使用带参的宏时,参数的类型应与宏定义时的一致 C)宏替换不占用运行时间,只占编译时间 D)在以下定义中CR是称为\宏名\的标识符 #define C R 045 *【题8.3】 B

请读程序:

#define ADD(x) x+x main() {

int m=1,n=2,k=3; int sum=ADD(m+n)*k; printf(\ }

上面程序的运行结果是

A)sum=9 B)sum=10 C)sum=12 D)sum=18 *【题8.4】 B

以下程序的运行结果是

#define MIN(x,y) (x)<(y)?(x):(y) main()

{int i=10,j=15,k; k=10*MIN(i,j);

prinif(\}

A) 10 B)15 C)100 D)150 *【题8,5】 D

在宏定义#define PI 3.14159中用宏名PI代替一个 A)常量 B)单精度数 C)双精度数 D)字符串 *【题8.6】

B

以下程序的运行结果是 #include \

#define FUDGE(y) 2.84十y

#define PR(a) printf(\#define PRINT1(a) PR(a);putchar(\main()

{int x=2;

PRINT1(FUDGE(5)*x); }

A)11 B)12 C)13 D)15 *【题8.7】 D

以下有关宏替换的叙述不正确的是

A)宏替换不占用运行时间 B)宏名无类型

C)宏替换只是字符替换 D)宏名必须用大写字母表示 *【题8.8】 D

C语言的编译系统对宏命令的处理是 A)在程序运行时进行的 B)在程序连接时进行的

C)和C程序中的其它语句同时进行编译的

D)在对源程序中其它成份正式编译之前进行的 *【题8.9】 D

若有宏走义如下:

#define X 5 #define Y X+1 #define Z Y*X/2

则执行以下printf语句后,输出结果是 int a; a=Y;

printf(\printf(\

A)7 B)12 C)12 D)7 6 6 5 5 *【题8.10】 B

若有以下宏定义: #define N 2

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

则执行语句z=2*(N+Y(5));后的结果是 A)语句有错误 B)z=34 C)z=70 D)z无定值 *【题8.11】 B

若有宏定义: #define MOD(x,y) x%y 则执行以下语句后的输出为 int z,a=15,b=100; z=MOD(b,a);

printf(\

A)11 B)10 C)6 D)宏定义不合法 *【题8.12】 C

以下程序的运行结果是

#define MAX(A,B) (A)>(B)?(A):(B) #define PRINT(Y)printf(\main()

{int a=1,b=2,c=3,d=4,t; t=MAX(a+b,c+d); PRINT(t);

}

*【题8.13】 D

以下程序段中存在请误的是 A)#define array_size l00 int arrayl [array_size]; B)#define PI 3.14159

#define S(r) PI*(r)*(r) area=s(3.2);

C)#define PI 3.1415

#define S(r) PI*(r)*(r) area=S(a+b); D)#deine PI 3.4159

#define S(r) PI*(r)*(r) area=S(a); *【题8.14】 A

请读程序:

#include

#define MUL(x,y) (x)*y main()

{int a=3,b=4,c; c=MUL(a++,b++); printf\ }

上面程序的输出结果是

A)12 B)15 C)20 D)16 *【题8.15】 C

#define能作简单的替代,用宏替代计算多项式4*x*x+3*x+2之值的 函数f,正确的宏定义是

A)#define f(x) 4*x*x+3*x+2 B)#define f 4*x*x+3*x+2 C)#define f(a)(4*a*a+3*a+2) D)#define (4*a*a+3*a+2)f(a) *【8.16】 B

对下面程序段: #define A 3

#define B(3)((A+1)*a) x=3*(A十B(7)); 正确的判断是

A)程序错误,不许嵌套宏定义 B)x=93 C)x=21

D)程序错误,宏定义不许有参数 *【题8.17】 D

以下程序中,第一个输出值是8,第二个输出值是 #include #define M 3

#define N (M+1) #define NN N*N/2 main()

{printf(\ printf(\ }

A)17 B)18 C)30 D)40 *【题8.18】 B

以下程序的输出结果为 。 #inc1ude #deflne F(y) 3.84+y

#define PR(a) printf(\#define PRINT(a) PR(a);putchar('\\n’); main()

{int x=2;

PRINT(F(3)*x); )

A)8 B)9 C)10 D)11 *【题8.19】 B

以下程序的输出结果为 define PT 5.5

#define S(x) PT*x*x main()

{int a=1,b=2;

printf(\十b)); }

A)12.O B)9.5 C)2.5 D)33.5 *【题8.20】 D

以下在任何情况下计算平方数时都不会引起二义性的宏定义是 A)#define POWER(x) x*x

B)#define POWER(x) (x)*(x) C)#define POWER(x) (x*x)

D)#define POWER(x) ((x)*(x)) *【题8.21】 B

主\文件包含\预处理语句的使用形式中,当#include后面的文件名用\(双引号)括起时,寻找被包含文件的方式是 A) 直接按系统设定的标准方式搜索目录

B) 先在源程序所在目录搜索,再按系统设定的标准方式搜索 C)仅仅搜索源程序所在目录 D)仅仅搜索当前目录 *【题8.22】 C

在\文件包含\预处理语句的使用形式中,当#include后面的文件名用< > (尖括号)括起时,寻找被包含文件的方式是 A)仅仅搜索当前目录

B)仅仅搜索源程序所在目录

C)直接按系统设定的标准方式搜索目录

D)先在源程序所在目录搜索,再按系统设定的标准方式搜索 *【题8.23】 B

请读程序:

#define LETTER 0 main()

{char str[20]=\ while ((c=str[i]!='\\0')

{i++; #if LETTER if(c>='a'&&c<='z') c=c-32; #else if(c>='A' &&c<='Z') c=c+32; #endif printf(\ } }

上面程序的运行结果是

A)C Language B)c language C)C LANGUAGE D)c lANGUAGE *【题8;24】 C

以下正确的描述是

A)C语言的预处理功能是指完成宏替换和包含文件的调用 B)预处理指令只能位于C源程序文件的首部

C)凡是C源程序中行首以\标识的控制行都是预处理指令 D)C语言的编译预处理就是对源程序进行初步的语法检查 *【题8.25】 D

C语言提供的预处理功能包括条件编译,其基本形式为: #XXX标识符 程序段1 #else 程序段2 #endif

这里XXX可以是

A)define或include B)ifdef或include

C)ifdef或ifndef或define D)ifdef或ifndef或if *【题9.1】 B

以下程序的运行结果是

sub(int x,int y,int *z) {*z=y-x;} main()

{int a,b,c; sub(10,5,&a); sub(7,a,&b); sub(a,b,&c);

prinif(\A)5,2,3 B)-5,-12,-7 C)-5,-12,-17 D)5,-2,-7 *【题9.2】 C

执行以下程序后,b的值为【1】 main( )

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

b=(-*pl)/(*p2)+7; printf(\ printf(\ }

A)5 B)6 C)7 D)10 *【题9.3】 D

下面程序应能对两个整型变量的值进行交换。以下正确的说法是 main( )

{int a=10,b=20; printf(\ swap(&a,&b); prinif(\ 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)以上说法都不正确 *【题9·4】 D

有四组对指针变量进行操作的语句,以下判断正确的选项是 (1)int *p,*q;q=p;

int a,*p,*q;p=q=&a; (2)int a,*p,*q;q=&a;p=*q; int a=20,*p;*p=a;

(3)int a=b=0,*p;p=&a;b=*p;

int a=20,*p,*p=&a;*p=*q; (4)int a=20,*p;*q=&a;p=q; int p,*q;q=&q;

A)正确:(1); 不正确:(2),(3),(4) B)正确:(1),(4); 不正确:(2),(3) c)正确:(3); 不正确:(1),(2),(4) D)以上结论都不正确 *【题9·5】 B

以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是 main()

{int *p,*q,a,b; p=&a;

printf(\ scanf(\ }

A)*p表示的是变量p的地址

B)*p表示的是变量a的值,不是变量a的地址 C)*p表示的是指针变量p的值

D)*p只能用来说明p是一个指针变量 *【题9.6】 D

以下程序有错,错误原因是 main()

{int *p,i; char *q,ch; p=&i; q=&ch; *p=40; *p=*q; }

A)p和q的类型不一致,不能执行*p=*q;语句

B)*p中存放的是地址值,因此不能执行*p=40;语句 C)q没有指向具体的存储单元,所以*q没有实际意义

D)q虽然指向了具体的存储单元,但该单元中没有确定的值,所以不能执行*p=*q;语句 *【题9.8 ] B

已有定义int k=2; int *ptr1,*ptr2;且ptrl和Ptr2均已指向变量k,下 面不能正确执行的赋值语句是 A)k=*ptrl+*ptr2; B)ptr2=k

c)ptrl=ptr2; D)k=*ptrl*(*ptr2); *【题9.9】 B

变量的指针,其含义是指该变量的 A)值 B)地址

c)名 D)一个标志 *【题9·10】 D

若已定义int a=5;下面对(1),(2)两个语句的正确解释是 (1)int *p=&a; (2)*p=a;

A)语句(1)和(2)中的*P含义相同,都表示给指针变量p赋值

B)(1)和(2)语句的执行结果,都是把变量a的地址值赋给指针变量p

C)(1)在对p进行说明的同时进行初始化,使p指向a (2)将变量a的值赋给指针变量p D)(1)在对p进行说明的同时进行初始化,使p指向a (2)将变量a的值赋于*p *【题9;11] D

若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是 A)a,point,*&a B)&*a,&a,*point C)*&point,*point,&a D)&a,&*point,point *【题9。13】 D

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

Top