您的当前位置:首页正文

C语言练习题选择题100道

2021-02-18 来源:好走旅游网
题目部分,(卷面共有100题,300.0分,各大题标有题量和总分) 一、单项选择题(100小题,共300.0分)

(3分)[1]

以下是有关汉诺塔问题的程序段,若在main函数中有调用语句hanoi(3,‘A’,‘B’,‘C’);则符合程序段运行结果的选项是 void move(char getone,char putone) {

printf(“%c-->%c\\n”,getone,putone); }

void hanoi(int n,char one,char two,char three) {

if(n==1) move(one,three); else {

hanoi(n-1,one,three,two); move(one,three);

hanoi(n-1,two,one,three); } }

A、A-->C B、A-->C C、A-->C D、A-->C A-->B A-->B A-->B A-->B C-->B C-->A C-->B C-->B B-->A A-->B A-->C A-->C C-->B B-->C B-->A A-->B A-->C A-->C B-->C B-->C A-->B A-->B A-->C A-->C (3分)[2]

以下不正确的说法是

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

D、形参应与其对应的实参类型一致 (3分)[3]

以下正确的描述是

在C语言程序中 A、函数的定义可以嵌套,但函数的调用不可以嵌套 B、函数的定义不可以嵌套,但函数的调用可以嵌套 C、函数的定义和函数的调用均不可以嵌套 D、函数的定义和函数的调用均可以嵌套 (3分)[4]

以下程序的功能是计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请选择填空。 #include #include main() {

float x,y,z,sum;

scanf(“%f %f %f”,&x,&y,&z); sum=f(【1】)+f(【2】); printf(“sum=%f\\n”,sum); }

float f(float a,float b) {

float value; value=a/b; return(value); }

【1】 A、x-y,x+y B、x+y,x-y C、z+y,z-y 【2】 A、x-y,x+y B、x+y,x-y C、z+y,z-y (3分)[5]

以下错误的描述是

函数调用可以 A、出现在执行语句中 B、出现在一表达式中 C、做为一个函数的实参 D、做为一个函数的形参 (3分)[6]

下面函数调用语句含有实参的个数为 func((exp1,exp2),(exp3,exp4,exp5));

A、1 B、2 C、4 D、5 (3分)[7]

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

D、 在定义该函数时所指定的函数类型所决定 (3分)[8]

C语言允许函数值类型缺省定义,此时该函数值隐含的类型是 A、 float型 B、 int型 C、 long型 D、 double型 (3分)[9]

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

int G=5,k;

void prt_char(); … …

k=prt_char(G); … … }

A、 语句void prt_char();有错,它是函数调用语句,不能用void说明D、z-y,z+y D、z-y,z+y

B、 变量名不能使用大写字母

C、 函数说明和函数调用语句之间有矛盾 D、 函数名不能使用下划线 (3分)[10]

以下正确的说法是

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

C、 如果函数值的类型与返回值类型不一致,以函数值类型为准 D、 如果形参与实参的类型不一致,以实参类型为准 (3分)[11]

若调用一个函数,且此函数中没有return语句,则正确的说法是 该函数 A、没有返回值 B、返回若干个系统默认值

C、能返回一个用户所希望的函数值 D、返回一个不确定的值 (3分)[12]

以下正确的说法是

在C语言中 A、实参和与其对应的形参各占用独立的存储单元 B、实参和与其对应的形参共占用一个存储单元

C、只有当实参和与其对应的形参同名时才共占用存储单元 D、形参是虚拟的,不占用存储单元 (3分)[13]

以下正确的函数形式是 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; } (3分)[14]

以下正确的函数定义形式是 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分)[15]

以下正确的说法是

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

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

D、 用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调 (3分)[16]

建立函数的目的之一是

A、提高程序的执行效率 B、提高程序的可读性 C、减少程序的篇幅 D、减少程序文件所占内存 (3分)[17]

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

C、 由实参传给形参,再由形参传回给实参 D、 由用户指定传递方式 (3分)[18]

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

B、 数组第一个元素的值 C、 数组中全部元素的值 D、 数组元素的个数 (3分)[19]

以下程序是选出能被3整除且至少有一位是5的两位数,打印出所有这样的数及其个数。请选择填空。 sub(int k,int n) {

int a1,a2; a2=【1】; a1=k-【2】;

if((k%3==0&&a2==5)||(k%3==0&&a1==5)) {

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

else return -1; }

main() {

int n=0,k,m;

for(k=10;k<=99;k++) {

m=sub(k,n); if(m!=-1) n=m; }

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

【1】 A、k*10 B、k%10 C、k/10 D、k*10%10 【2】 A、a2*10 B、a2 C、a2/10 D、a2%10 (3分)[20]

下面程序的功能是将小写字母变成对应大写字母后的第二个字母。其中y变成A,z变成B。

请选择填空。 #include main() {

char c;

while((c=getchar())!=„\\n‟) {

if(c>=„a‟&&c<=„z‟) {

【1】; if(c>„Z‟) 【2】; }

printf(“%c”,c); } }

【1】 A、c+=2 B、c-=32 C、c=c+32+2 D、c-=30 【2】 A、c=‘B’ B、c=‘A’ C、c-=26 D、c=c+26 (3分)[21]

一个C语言程序是由

A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 (3分)[22]

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

B、必须在系统调用的库函数的后面 C、可以任意 D、必须在最后 (3分)[23]

以下叙述不正确的是

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

D、在C程序中,注释说明只能位于一条语句的后面 (3分)[24]

以下叙述正确的是

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

D、在对一个C程序进行编译的过程中,可发现注释中的拼写错误 (3分)[25]

一个C程序的执行是从

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

B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C、本程序的main函数开始,到本程序文件的最后一个函数结束 D、本程序文件的第一个函数开始,到本程序main函数结束 (3分)[26]

在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是

A、extern B、register C、auto D、static (3分)[27]

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

int a=2,i;

for(i=0;i<3;i++) printf(“%4d”,f(a)); }

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 (3分)[28]

凡是函数中未指定存储类型的局部变量,其隐含的存储类别为A、自动(auto) B、静态(static) C、外部(extern) D、寄存器(register) (3分)[29]

以下程序的正确运行结果是 #include 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(“%d,%d\\n”,x,y); }

D、7 8 9 A、12,2 B、不确定 C、5,25 D、1,12 (3分)[30]

以下程序的正确运行结果是 #define MAX 10 int a[MAX],i; main() {

printf(“\\n”); sub1(); sub3(a); sub2(); sub3(a); }

sub2() {

int a[MAX],i,max; max=5;

for(i=0;isub1() {

for(i=0;isub3(int a[]) { int i;

for(i=0;iA、 0 2 4 6 8 10 12 14 16 18 0 1 2 3 4

B、 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 0 1 2 3 4

D、 0 2 4 6 8 10 12 14 16 18 0 2 4 6 8 10 12 14 16 18 (3分)[31]

以下不正确的说法为

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

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

D、 在函数内的复合语句中定义的变量在本函数范围内有效 (3分)[32]

以下正确的说法是

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

C、 在本程序范围内均有效

D、 为非法变量 (3分)[33]

折半查找法的思路是:先确定待查元素的范围,将其分成两半,然后测试位于中间点元素的值。如果该待查元素的值大于中间点元素,就缩小待查范围,只测试中点之后的元素;反之,测试中点之前的元素,测试方法同前。函数binary的作用是应用折半查找法从存有10个整数的a数组中对关键字m进行查找,若找到,返回其下标值;返回-1。请选择填空。 binary(int a[10],int m) {

int low=0,high=9,mid; while(low<=high) {

mid=(low+high)/2; if(ma[mid]) 【2】; else return(mid); }

return(-1); }

【1】 A、high=mid-1 B、low=mid+1 C、high=mid+1 D、low=mid-1 【2】 A、high=mid-1 B、low=mid+1 C、high=mid+1 D、low=mid-1 (3分)[34]

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

B、 实参数组类型与形参数组类型可以不匹配 C、 在被调函数中,不需要考虑形参数组的大小 D、 实参数组名与形参数组名必须一致 (3分)[35]

已有以下数组定义和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]) (3分)[36]

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

int k=4,m=1,p;

p=func(k,m); printf(“%d”,p); p=func(k,m); printf(“%d\\n”,p); }

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 (3分)[37]

下面程序的运行结果是 #include 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(“%d\\n”,a); }

A、4 B、5 (3分)[38]

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

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

if(i%2) printf(“*”); else continue; printf(“#”); }

printf(“$\\n”); }

A、*#*#*#$ B、#*#*#*$ (3分)[39]

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

C、6 C、*#*#$ D、7 D、#*#*$ int i,j,x=0;

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

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

if(j%2) continue; x++; } x++; }

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

(3分)[40]

下面程序的运行结果是 #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(“%d\\n”,a); }

A、7 B、8 C、9 D、10 (3分)[41]

下面程序的功能是将从键盘输入的偶数写成两个素数之和。请选择填空。 #include #include main() {

int a,b,c,d;

scanf(“%d”,&a);

for(b=3;b<=a/2;b+=2) {

for(c=2;c<=sqrt(b);c++) if(b%c==0) break; if(c>sqrt(b)) d= 【1】 ; else break;

for(c=2;c<=sqrt(d);c++) if(d%c==0) break; if(c>sqrt(d)) printf(“%d=%d+%d\\n”,a,b,d); } }

【1】A、a+b B、a-b C、a*b D、a/b

(3分)[42]

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

int n,sum=0; n=2345; do{

sum=sum+【1】 n=【2】 }while(n);

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

【1】A、n%10 B、(n%10)*(n%10) C、n/10 D、(n/10)*(n/10) 【2】 A、n/1000 B、n/100 C、n/10 D、n%10 (3分)[43]

若运行以下程序时,从键盘输入3.6 2.4表示回车),则下面程序的运行结果是_________。

#include #include main() {

float x,y,z;

scanf(“%f %f”,&x,&y); z=x/y; while(1) {

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

printf(“%f\\n”,y); }

(3分)[44]

若i为整型变量,则以下循环执行次数是 for(i=2;i==0;) printf(“%d”,i--);

A、无限次 B、0次 C、1次 D、2次 (3分)[45]

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

C、for(表达式1; 表达式1;表达式3) D、for(表达式1; 表达式3;表达式3) (3分)[46]

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

A、 for循环只能用于循环次数已经确定的情况

B、 for循环是先执行循环体语句,后判断表达式 C、 在for循环中,不能用break语句跳出循环体

D、 for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 (3分)[47]

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

int a=1,b=10;

do{ b-=a; a++; }while(b--<0); printf(“a=%d,b=%d\\n”,a,b); }

A、a=3,b=11 B、a=2,b=8 C、a=1,b=-1 D、a=4,b=9 (3分)[48]

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

#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‟: v1+=1; default: v0+=1; v2+=1; }

}while(c!=„\\n‟);

printf(“v0=%d,v1=%d,v2=%d\\n”,v0,v1,v2); }

A、v0=7,v1=4,v2=7 B、v0=8,v1=4,v2=8 C、v0=11,v1=4,v2=11 D、v0=12,v1=4,v2=12 (3分)[49]

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

int y=10;

do{ y--; }while(--y); printf(“%d\\n”,y--); }

A、-1 B、1 C、8 D、0 (3分)[50]

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

#include main() {

int i=0,j,k;

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

printf(“316=13*%d+11*%d”,i,j); }

A、k/11 B、k%11 C、k/11==0 D、k%11==0 (3分)[51]

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

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; (3分)[52]

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

#include main() {

long int num;

scanf(“%ld”,&num); do{

if(【1】) printf(“%ld”,num); scanf(“%ld”,&num); while( 2】); }

【1】A、num%100/10==3 B、num/100%10==3 C、num%10/10==3 D、num/10%10==3

【2】A、n=n-2 B、n=n C、n++ D、n-=1 (3分)[53]

下面程序段的运行结果是

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 (3分)[54] 若有如下语句 int x=3;

do{ printf(“%d\\n”),x-=2; }while(!(--x)); 则上面程序段

A、输出的是1 B、输出的是1和-2 C、输出的是3和0 D、是死循环 (3分)[55]

以下描述中正确的是

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

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

C、 在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操作 D、 do-while循环中,根据情况可以省略while (3分)[56] 以下程序段 x=-1; do

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

A、是死循环 B、循环执行二次 C、循环执行一次 D、有语法错误 (3分)[57]

以下能正确计算1×2×3ׄ×10的程序段是

A、do{i=1; s=1; B、do{i=1; s=0; s=s*i; s=s*i; i++; i++;

}while(i<=10); }while(i<=10); C、i=1; s=1; D、i=1; s=0; do{s=s*i; do{s=s*i; i++; i++; }while(i<=10); }while(i<=10); (3分)[58]

C语言中while和do-while循环的主要区别是 A、 do-while的循环体至少无条件执行一次

B、 while的循环控制条件比do-while的循环控制条件严格 C、 do-while允许从外部转到循环体内 D、 do-while的循环体不能是复合语句 (3分)[59]

若运行以下程序时,从键盘输入2473<回车>,则下面程序的运行结果是_________。 #include main() { int c;

while((c=getchar())!=„\\n‟) switch(c-„2‟) {

case 0:

case 1: putchar(c+4);

case 2: putchar(c+4); break; case 3: putchar(c+3);

default: putchar(c+2); break; }

printf(“\\n”); }

A、668977 B、668966 C、66778777 D、6688766 (3分)[60]

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

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

num++;

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

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

(3分)[61]

一个C程序的执行是从

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

B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C、本程序的main函数开始,到本程序文件的最后一个函数结束 D、本程序文件的第一个函数开始,到本程序的main函数结束 (3分)[62]

等比数列的第一项a=1,公比q=2,下面程序的功能是求满足前n项和小于100的最大n,请选择填空。

#include main() {

int a,q,n,sum;

a=1; q=2; n=sum=0; do{ 【1】; ++n; a*=q;

}while(sum<100); 【2】;

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

【1】A、sum++ B、sum+=a C、sum=a+a D、a+=sum 【2】 A、n=n-2 B、n=n C、n++ D、n-=1 (3分)[63]

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

while(【1】) { k++; m=m/5; } }

【1】A、m%5==0 B、m=m%5==0 C、m%5==0 D、m%5!=0 (3分)[64]

与下面程序段等价的是 for(n=100;n<=200;n++) {

if(n%3==0) continue; printf(“%4d”,n); }

A、 for(n=100;(n%3)&&n<=200;n++) printf(“%4d”,n); B、 for(n=100;(n%3)||n<=200;n++) printf(“%4d”,n); C、 for(n=100;n<=200;n++) if(n%3!=0) printf(“%4d”,n); D、 for(n=100;n<=200;n++) {

if(n%3) printf(“%4d”,n); else continue; break; }

(3分)[65]

以下描述正确的是

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

B、 switch语句中不能出现continue语句 C、 只能用continue语句来终止本次循环 D、 在循环中break语句不能独立出现 (3分)[66]

以下是死循环的程序段是 A、 for(i=1;;) {

if(++i%2==0) continue; if(++i%3==0) break; }

B、 i=32767;

do{ if(i<0) break; }while(++i); C、 for(i=1;;) if(++i<10) continue; D、 i=1; while(i--); (3分)[67] 下面程序段 x=3;

do{ y=x--;

if(!y) { printf(“x”); continue; } printf(“#”);

}while(1<=x<=2);

A、将输出## B、将输出##*

C、是死循环 D、含有不合法的控制表达式 (3分)[68] 下面程序段

for(t=1;t<=100;t++) {

scanf(“%d”,&x); if(x<0) continue; printf(“%3d”,t); }

A、当x<0时整个循环结束 B、x>=0时什么也不输出

C、printf函数永远也不执行 D、最多允许输出100个非负整数 (3分)[69]

以下正确的描述是

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

B、 只能在循环体内和switch语句体内使用break语句 C、 在循环体内使用break语句或continue语句的作用相同 D、 从多层循环嵌套中退出时,只能使用goto语句 (3分)[70]

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

int i,b,k=0;

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

b=i%2;

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

printf(“%d,%d”,k,b); }

A、3,-1 B、8,-1 C、3,0 D、8,-2 (3分)[71]

以下for循环的执行次数是

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

A、是无限循环 B、循环次数不定 C、执行4次 D、执行3次 (3分)[72]

下面程序的功能是求算式xyz+yzz=532中x,y,z值(其中xyz和yzz分别表示一个三位数),请选择填空。 #include

main() {

int x,y,z,i,result=532; for(x=1;x<10;x++) for(y=1;y<10;y++) for(【1】;z<10;z++) {

i=100*x+10*y+z+100*y+10*z+z; if(【2】)

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

【1】A、z=x B、z=1 【2】 A、i/result==1 B、i=result (3分)[73]

下面程序的运行结果是 #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 (3分)[74]

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

int x,i;

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

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

C、z=0 C、i!=result D、k=0 D、z=y D、i==result if(++x%7==0) printf(“%d”,x); } }

(3分)[75]

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

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

case 0: printf(“*”); break; case 1: printf(“#”); break; default: printf(“\\n”); case 2: printf(“&”); } }

A、#&&&* B、#& C、# D、#& & &

&* & * & *

(3分)[76]

下面程序的功能是计算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”,a);

printf(“奇数之和=%d\\n”, 【2】 ); }

【1】A、b=i-- B、b=i+1 C、b=i++ D、b=i-1

【2】A、c-10 B、c C、c-11 D、c-b (3分)[77]

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

main() {

int i,sum=0;

for(i=1;i<=50;i++) if( 【1】 ) sum+=I; printf(“%d”,sum); }

A、(int)(i/7)==i/7 B、(int)i/7==i/7 C、i%7=0 D、i%7==0 (3分)[78]

有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个零件;若分成7个零件一组,则多3个零件;若分成9个零件一组,则多5个零件。下面程序是求这堆零件总数,请选择填空。 #include main() { int i;

for(i=100;i<200;i++) if((i-2)%4==0) if(!((i-3)%7)) if(【1】)

printf(“%d”,i); }

A、i%9=5 B、i%9!=5 C、(i-5)%9!=0 D、i%9==5 (3分)[79]

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

A、3 B、4 C、5 D、不定 (3分)[80]

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

i=i%100+1; if(i>100) break; }

B、 for(;;); C、 int k=0;

do{ ++k; }while(k>=0); D、 int s=36; while(s); --s; (3分)[81]

下面程序段的运行结果是

for(x=3;x<6;x++) printf((x%2)?(“**%d”):(“##%d\\n”),x);

A、**3 B、##3 C、##3 D、**3##4 ##4 **4 **4##5 **5 **5 ##5

(3分)[82]

下面程序是输出一个正整数等差数列的前十项,此数列前四项之和及之积分别是26和880,请选择填空。 #include main() {

int a,d,i,s,f,x; /* a是第一项 */ for(a=1;a<30;a++) for(d=1; 【1】;d++) {

s=0; f=1; x=a; for(i=1;i<=4;i++) {

s=s+x; f=f*x; x=x+d; }

if(s==26&&f==880) for(i=0;i<10;i++)

printf(“%3d”, 【2】); }

printf(“\\n”); }

【1】A、d<=a B、空 C、d<=5 【2】A、a+i*d B、i*d C、a+(i+1)*d D、a+d (3分)[83]

判断字符串s1是否大于字符串s2,应当使用

A、if(s1>s2) B、if(strcmp(s1,s2)) C、if(strcmp(s2,s1)>0) D、if(strcmp(s1,s2)>0) (3分)[84]

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

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

char a1[5],a2[5],a3[5],a4[5]; scanf(“%s %s”,a1,a2); gets(a3); gets(a4); puts(a1); puts(a2); puts(a3); puts(a4); }

A、aa B、aa C、aa D、aa bb bb bb bb cc cc cc dd dd

D、d下面程序的运行结果是 #include main() {

char ch[7]={“12ab56”}; int i,s=0;

for(i=0;ch[i]>=„0‟&&ch[i]<=„9‟;i+=2) s=10*s+ch[i]-„0‟; printf(“%d\\n”,s); }

A、1 B、1256 C、12ab56 D、1 2 5 6

(3分)[86]

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

#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(“There are %d words.\\n”,num); }

【1】 A、c1==‘’&&c2==‘’ B、c1!=‘’&&c2==‘’ C、c1==‘’&&c2!=‘’ D、c1!=‘’&&c2!=‘’ (3分)[87]

下面程序的功能是将字符串s中所有的字符c删除。请选择填空。 #include main() {

char s[80]; int i,j; gets(s);

for(i=j=0;s[i]!=„\\0‟;i++) if(s[i]!=‘c’) 【1】; s[j]=„\\0‟; puts(s); }

【1】 A、s[j++]=s[i] B、s[++j]=s[i] C、s[j]=s[i]; j++ D、s[j]=s[i] (3分)[88]

下面程序的功能是将已按升序排好序的两个字符串a和b中的字符按升序归并到字符串c中。请选择填空。 #include main() {

char a[]=“acegikm”; char b[]=“bdfhjlnpq”; char c[80],*p; int i=0,j=0,k=0;

while(a[i]!=„\\0‟&&b[j]!=„\\0‟) {

if(a[i]c[k]= „\\0‟;

if(【3】) p=b+j; else p=a+i; strcat(c,p); puts(c); }

【1】 A、c[k]=a[i]; i++; B、c[k]=a[j]; i++; C、c[k]=a[i]; j++; D、c[k]=a[j]; j++;

【2】 A、c[k]=a[i]; i++; B、c[k]=a[j]; i++; C、c[k]=a[i]; j++; D、c[k]=a[j]; j++;

【3】 A、a[i]==‘\\0’ B、a[i]!=‘\\0’ C、a[i-1]==‘\\0’ D、a[i-1]!=‘\\0’ (3分)[89]

有已排好序的字符串a,下面的程序是将字符串s中的每个字符按a中元素的规律插入到a中。请选择填空。 #include main() {

char a[20]=“cehiknqtw”; char s[]=“fbla”; int i,k,j;

for(k=0;s[k]!=„\\0‟;k++)

{ j=0;

while(s[k]>=a[j]&&a[j]!=„\\0‟) j++; for(【1】) 【2】; a[j]=s[k]; }

puts(a); }

【1】 A、i=strlen(a)+k; i>=j; i-- B、i=strlen(a); i>=j; i-- C、i=j; i<=strlen(a)+k; i++ D、i=j; i<=strlen(a); i++

【2】 A、a[i]=a[i+1] B、a[i+1]=a[i] C、a[i]=a[i-1] D、a[i-1]=a[i] (3分)[90]

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

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

C、 可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 D、 不可以用关系运算符对字符数组中的字符串进行比较 (3分)[91]

下面程序段是输出两个字符串中对应字符相等的字符。请选择填空。 char x[]=“programming”; char y[]=“Fortran”; int i=0;

while(x[i]!=„\\0‟&&y[i]!= „\\0‟) {

if(x[i]==y[i]) printf(“%c”,【1】); else i++; }

【1】 A、x[i++] B、y[++i] C、x[i] D、y[i] (3分)[92]

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

char a[80]=“AB”,b[80]=“LMNP”; int i=0; strcat(a,b);

while(a[i++]!=„\\0‟) b[i]=a[i]; puts(b); }

A、LB B、ABLMNP C、AB D、LBLMNP (3分)[93]

判断字符串a和b是否相等,应当使用

A、if(a==b) B、if(a=b) C、if(strcpy(a,b)) D、if(strcmp(a,b))

(3分)[94]

下面程序段的运行结果是 char c[]=“\\\v\\\\\\0will\\n”; printf(“%d”,strlen(c));

A、14 B、3 C、9 D、字符串中有非法字符,输出值不确定 (3分)[95]

有下面的程序段

char a[3],b[]=“China”; a=b;

printf(“%s”,a); 则

A、运行后将输出China B、运行后将输出Ch C、运行后将输出Chi D、编译出错 (3分)[96]

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

printf(“%c”,a[5]);

A、空格 B、\\0 C、e D、f (3分)[97]

有字符数组a[80]和b[80],则正确的输出形式是

A、puts(a,b); B、printf(“%s %s”,a[],b[]); C、putchar(a,b); D、puts(a),puts(b); (3分)[98]

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

A、gets(a,b); B、scanf(“%s %s”,a,b); C、scanf(“%s %s”,&a,&b); D、gets(“a”),get(“b”); (3分)[99]

对两个数组a和b进行如下初始化 char a[]=“ABCDEF”;

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

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

C、a和b中都存放字符串 D、a数组比b数组长度长 (3分)[100]

下面程序段的运行结果是 char c[5]={„a‟,„b‟,„\\0‟,„c‟,„\\0‟}; printf(“%s”,c);

A、‘a’‘b’ B、ab C、ab c

答案部分,(卷面共有100题,300.0分,各大题标有题量和总分) 一、单项选择题(100小题,共300.0分)

(3分)[1] 答案C (3分)[2] 答案B

(3分)[3] 答案 B (3分)[4] 答案 BC (3分)[5] 答案 D (3分)[6] 答案 B (3分)[7] 答案D (3分)[8] 答案B (3分)[9] 答案 C (3分)[10] 答案C (3分)[11] 答案D (3分)[12] 答案 A (3分)[13] 答案D (3分)[14] 答案A (3分)[15] 答案B (3分)[16] 答案B (3分)[17] 答案B (3分)[18] 答案A (3分)[19] 答案 C A (3分)[20] 答案 D C (3分)[21] 答案 B (3分)[22] 答案C (3分)[23] 答案D (3分)[24] 答案C (3分)[25] 答案A (3分)[26]

答案D (3分)[27] 答案D (3分)[28] 答案A (3分)[29] 答案C (3分)[30] 答案 D (3分)[31] 答案D (3分)[32] 答案A (3分)[33] 答案 A B (3分)[34] 答案 A (3分)[35] 答案 B (3分)[36] 答案 A (3分)[37] 答案 A (3分)[38] 答案 A (3分)[39] 答案B (3分)[40] 答案 B (3分)[41] 答案 B (3分)[42] 答案 B C (3分)[43] 答案B (3分)[44] 答案B (3分)[45] 答案B (3分)[46] 答案D (3分)[47] 答案 B (3分)[48] 答案D (3分)[49] 答案D

(3分)[50] 答案B (3分)[51] 答案 A (3分)[52] 答案 B C (3分)[53] 答案C (3分)[54] 答案 B (3分)[55] 答案C (3分)[56] 答案C (3分)[57] 答案 C (3分)[58] 答案A (3分)[59] 答案A (3分)[60] 答案C (3分)[61] 答案 A (3分)[62] 答案 B D (3分)[63] 答案 C (3分)[64] 答案C (3分)[65] 答案C (3分)[66] 答案C (3分)[67] 答案C (3分)[68] 答案 D (3分)[69] 答案B (3分)[70] 答案D (3分)[71] 答案C (3分)[72] 答案 C D (3分)[73]

答案B (3分)[74] 答案D (3分)[75] 答案B (3分)[76] 答案 BC (3分)[77] 答案 D (3分)[78] 答案 D (3分)[79] 答案C (3分)[80] 答案C (3分)[81] 答案D (3分)[82] 答案 CA (3分)[83] 答案D (3分)[84] 答案A (3分)[85] 答案A (3分)[86] 答案 B (3分)[87] 答案A (3分)[88] 答案 ADA (3分)[89] 答案 B B (3分)[90] 答案 C (3分)[91] 答案A (3分)[92] 答案 D (3分)[93] 答案D (3分)[94] 答案B (3分)[95] 答案 D (3分)[96] 答案D

(3分)[97] 答案D (3分)[98] 答案B (3分)[99] 答案D (3分)[100] 答案 B