广西科技大学工科类专业C语言复习练习题.docx
《广西科技大学工科类专业C语言复习练习题.docx》由会员分享,可在线阅读,更多相关《广西科技大学工科类专业C语言复习练习题.docx(47页珍藏版)》请在冰点文库上搜索。
广西科技大学工科类专业C语言复习练习题
第2部分补充练习题
第1、2章C语言概述及数据类型与表达式
一、单项选择题
1.C语言源程序名的后缀是。
A.exe
B.c
C.obj
D.cpp
2.以下叙述中错误的是。
A.计算机不能直接执行用C语言编写的源程序
B.C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件
C.后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件
D.后缀为.obj和.exe的二进制文件都可以直接运行
3.可在C程序中作为用户标识符的一组是。
A.and
B.Date
C.Hi
D.case
_2007
y-m-d
Dr.Tom
Bigl
4.以下关于long、int和short类型数据占用内存大小的叙述中正确的是。
A.均占4个字节
B.根据数据的大小来决定所占内存的字节数
C.由用户自己定义
D.由C语言编译系统决定
5.若变量均已正确定义并赋值,以下合法的C语言赋值语句是。
A.x=y==5;
B.x=n%2.5;
C.x+n=i;
D.x=5=4+1;
6.以下正确的字符串常量是。
A."\\\"
B.'abc'
C.OlympicGames
D.""
7.已知字符'A'的ASCⅡ代码值是65,字符变量c1的值是'A',c2的值是'D'。
执行语句printf("%d,%d",c1,c2-2);后输出结果是。
A.A,B
B.A,68
C.65,66
D.65,68
8.执行scanf("a=%d,b=%d",&a,&b);语句,若要使变量a和b的值分别为3和4,则正确的输入方法为.
A.3,4
B.a:
3b:
4
C.a=3,b=4
D.34
9.设变量均已正确定义,若要通过scanf("%d%c%d%c",&a1,&c1,&a2,&c2);语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。
以下所示的输入形式中正确的是(注:
□代表空格字符)。
A.10□X□20□Y<回车>
B.10□X20□Y<回车>
C.10□X<回车>
D.10X<回车>
20□Y<回车>
20Y<回车>
10.转换说明符%x的输出形式是。
A.十六进制数
B.八进制数
C.十进制数
D.二进制数
11.若有以下类型说明语句:
charw;
intx;
floaty;
doublez;
则表达式w*x+z-y的结果为类型。
A.float
B.double
C.int
D.char
12.将int型变量n转换成float型变量的方法是。
A.floatn
B.(float)n
C.float(n)
D.intn
13.以下不能正确计算代数式
值的C语言表达式是。
A.1/3*sin(1/2)*sin(1/2)
B.sin(0.5)*sin(0.5)/3
C.pow(sin(0.5),2)/3
D.1/3.0*pow(sin(1.0/2),2)
14.C语言中运算对象必须是整型的运算符是。
A./
B.%
C.!
D.*
15.运行以下程序段时编译出错,其原因是。
charc1='a',c2='123';
printf("%c,%d\n",c1,c2);
A.字符串要用"123"表示
B.'123'只能赋值给字符数组
C.c2是字符变量,不能用%d格式输出
D.c2是字符变量,只能赋以字符常量,不能赋以字符串常量
16.设有定义:
intk=0;以下选项的四个表达式中与其他三个表达式的值不相同的是。
A.k++
B.k+=1
C.++k
D.k+1
17.已知大写字母A的ASCII码是65,小写字母a的ASCII码是97,以下不能将变量c中的大写字母转换成对应小写字母的语句是。
A.c=(c-'A')%26+'a'
B.c=c+32
C.c=c-'A'+'a'
D.c=('A'+c)%26-'a'
18.有以下程序:
#include
voidmain()
{intx,y,z;
x=y=1;
z=x++,y++,++y;
printf("%d,%d,%d\n",x,y,z);
}
程序运行后的输出结果是。
A.2,3,3
B.2,3,2
C.2,3,1
D.2,2,1
19.指出下面输入函数正确的是。
A.scanf("a=b=%d",&a,&b);B.scanf("a=%d,b=%f",&m,&f);
C.scanf("%3c",c);D.scanf("%5.2f",&f);
20.有以下程序:
#include
voidmain()
{charc1,c2,c3,c4,c5,c6;
scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
c5=getchar();
c6=getchar();
putchar(c1);
putchar(c2);
printf("%c%c\n",c5,c6);
}
程序运行后,若从键盘输入(从第1列开始)
123<回车>
45678<回车>
则输出结果是。
A.1267
B.1256
C.1278
D.1245
21.以下程序的功能是:
给r输入数据后计算半径为r的圆面积s。
#include
voidmain()
/*Beginning*/
{intr;
floats;
scanf("%d",&r);
s=π*r*r;
printf("s=%f\n",s);
}
程序在编译时出错,出错的原因是。
A.注释语句书写位置错误
B.存放圆半径的变量r不应该定义为整型
C.输出语句中格式描述符非法
D.计算圆面积的赋值语句中使用了非法变量
22.以下程序的输出结果是。
#include
voidmain()
{intm=3,n=4,x;
x=-m++;
x=x+8/++n;
printf("%d\n",x);
}
A.3
B.5
C.-1
D.-2
23.以下程序的输出结果是。
#include
voidmain()
{intx=4,y=8;
x+=y;
y+=x;
printf("%d%d\n",x,y);
}
A.1220
B.48
C.1212
D.84
24.下列程序的执行结果是。
#include
voidmain()
{intx='c';
printf("%c\n",'B'+(x-'b'+1));
}
A.D
B.H
C.I
D.J
25.下列程序的执行结果是。
#include
voidmain()
{inta=5;
floatx=2.14;
a*=x*('D'-'A');
printf("%f\n",(float)a);
}
A.32.100000
B.32
C.32.000000
D.33.000000
26.数字字符0的ASCII值为48,以下程序运行后的输出结果是。
#include
voidmain()
{chara='1',b='2';
printf("%c,",b++);
printf("%d\n",b-a);
}
A.3,2
B.50,2
C.2,2
D.2,50
27.有以下程序:
#include
voidmain()
{chara1='M',a2='m';
printf("%c\n",a1,a2);
}
以下叙述中正确的是。
A.程序输出大写字母M
B.程序输出小写字母m
C.格式说明符不足,编译出错
D.程序运行时产生出错信息
28.有以下程序:
#include
voidmain()
{charc1='1',c2='2';
c1=getchar();
c2=getchar();
putchar(c1);
putchar(c2);
}
当运行时输入:
a<回车>后,以下叙述正确的是。
A.变量c1被赋予字符a,c2被赋予回车符
B.程序将等待用户输入第2个字符
C.变量c1被赋予字符a,c2中仍是原有字符2
D.变量c1被赋予字符a,c2中将无确定值
二、填空题
1.一个C源程序是由若干个函数构成,其中必须有一个是main函数。
2.两整数相除的结果为int类型。
3.函数体由{开始,由符号}结束。
函数体的前面是定义语句部分,其后是执行语句部分。
4.在C语言中整数可用二进制进制数、十六进制数和十进制进制数三种数制表示。
5.在C语言程序中,整型数据占4字节,用关键字float定义单精度实型变量,字符型数据占1字节。
6.执行以下程序后的输出结果是14。
#include
voidmain()
{inta=10;
a=(3*5,a+4);
printf("a=%d\n",a);
}
7.设有定义:
floatx=123.4567;则执行以下语句后的输出结果是123.460000。
printf("%f\n",(int)(x*100+0.5)/100.0);
8.已知字母A的ASCII码为65。
以下程序运行后的输出结果是67G。
#include
voidmain()
{chara,b;
a='A'+'5'-'3';
b=a+'6'-'2';
printf("%d,%c\n",a,b);
}
9.有以下程序,当运行时输入:
12<回车>后,输出结果是12。
#include
voidmain()
{charch1,ch2;
intn1,n2;
ch1=getchar();
ch2=getchar();
printf("%c%c\n",ch1,ch2);
n1=ch1-'0';
n2=n1*10+(ch2-'0');
printf("%d\n",n2);
}
10.执行以下程序后的输出结果是。
#include
voidmain()
{intx,y,z;
x=y=2;
z=3;
y=z++-1;
printf("%d\t%d\t",x,y);//x=2y=2z=4
y=++x-1;
printf("%d\t%d\n",x,y);//x=3,y=2,z=4
y=z---1;
printf("%d\t%d\t",z,y);//x=3,y=3,z=3
y=--z-1;
printf("%d\t%d\n",z,y);//x=3,y=1,z=2
}
11.执行以下程序后的输出结果是。
#include
voidmain()
{intx;
x=-3+4*5-6;
printf("%d,\t",x);//11,
x=3+4%5-6;
printf("%d,\t",x);//1,
x=(7+6)%5%2;
printf("%d\n",x);//1
}
12.执行以下程序后的输出结果是。
#include
voidmain()
{inta,b=97;
a=-3;
printf("\ta=%d\tb=\'%c\'\t\"end\"\n",a,b);//-3a
}
13.以下程序输入1.2345.6789,则程序运行结果为x=1.230000,y=45.678900,
请填空完成程序。
注:
表示回车。
#include
voidmain()
{doublex,y;
scanf();//"%4lf%7lf",&x,&y
printf("x=%lf,y=%lf\n",x,y);
}
14.以下程序的运行结果是。
#include
voidmain()
{inti=5,j=9;
floatx=2.3,y=4.5;
printf("%8.2f\n",i%(int)(x+y)*j/2/3+y);//11.5
}
第3章算法的基本控制结构
一、单项选择题
1.以下叙述中错误的是。
A.C语句必须以分号结束
B.复合语句在语法上被看作一条语句
C.空语句出现在任何位置都不会影响程序运行
D.赋值表达式末尾加分号就构成赋值语句
2.当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同
这个选项是。
A.k%2
B.k%2==1
C.(k%2)!
=0
D.!
k%2==1
3.有以下程序段
intk=0,a=1,b=2,c=3;
k=a
b:
a;k=k>c?
c:
k;
执行该程序段后,k的值是。
A.3
B.2
C.1
D.0
4.设变量a、b、c、d和y都已正确定义并赋值。
若有以下if语句
if(a
if(c==d)y=0;
elsey=1;
该语句所表示的含义是。
0a
A.y=
1a≥b
0a
B.y=
1a≥b且c≠d
0a
C.y=
1a
0a
D.y=
1c≠d
5.以下程序运行后的输出结果是。
#include
voidmain()
{inta,b,d=25;
a=d/10%9;b=a&&(-1);
printf("%d,%d\n",a,b);
}
A.6,1
B.2,1
C.6,0
D.2,0
6.以下程序运行后的输出结果是。
#include
voidmain()
{inta=1,b;
for(b=1;b<=10;b++)
{if(a>=8)break;
if(a%2==1)//b=1a=1a=6b=2a=3b=3a=8b=4break;
{a+=5;
continue;
}
a-=3;
}
printf("%d\n",b);
}
A.3
B.4
C.5
D.6
7.设变量已正确定义,则以下能正确计算f=n!
的程序段是。
A.f=0;
for(i=1;i<=n;i++)
f*=i;
B.f=1;
for(i=1;if*=i;
C.f=1;
for(i=n;i>1;i++)
f*=i;
D.f=1;
for(i=n;i>=2;i--)
f*=i;
8.设a为整型变量,不能正确表达数学关系:
10A.10B.a==11||a==12||a==13||a==14
C.a>10&&a<15
D.!
(a<=10)&&!
(a>=15)
9.当执行以下程序段时,供选择的答案是。
a=-3;do{a+=a;}while(!
a);
A.循环体将执行一次
B.循环体将执行两次
C.循环体将执行无限次
D.系统提示有语法错误
10.若定义intk;则以下循环语句的循环执行次数是。
for(k=2;k==0;)printf("%d",k--);
A.无限
B.0
C.1
D.2
11.为了避免嵌套的条件语句if-else的二义性,C语言规定。
A.else与缩排位置相同的if配对
B.else与其之前最近的if配对
C.else与其之后最近的if配对
D.else与同一行上的if配对
12.以下不正确的描述是。
A.用while和do-while循环时,循环变量初始化的操作应在循环语句前完成
B.while循环是先判断表达式,后执行循环体语句
C.do-while和for循环均是先执行循环体语句,后判断表达式
D.for,while和do-while循环中的循环体语句均可以由空语句构成
13.下列条件语句中,功能与其他语句不同的是。
A.if(a)printf("%d\n",x);elseprintf("%d\n",y);
B.if(a==0)printf("%d\n",y);elseprintf("%d\n",x);
C.if(a!
=0)printf("%d\n",x);elseprintf("%d\n",y);
D.if(a==0)printf("%d\n",x);elseprintf("%d\n",y);
14.以下程序的输出结果是。
#include
voidmain()
{inti=0,s=0;
for(;;)
{if(i==3||i==5)continue;
if(i==6)break;
i++;
s+=i;
}
printf("%d\n",s);
}
A.10
B.13
C.21
D.程序是死循环
15.以下程序的输出结果是。
#include
voidmain()
{inta=3,b=4,c=5,d=2;
if(a>b)
if(b>c)
printf("%d",d+++1);
else
printf("%d",++d+1);
printf("%d\n",d);
}
A.2
B.3
C.43
D.44
16.在以下给出的表达式中,与while(E)中的(E)不等价的表达式是。
A.(!
E==0)
B.(E>0‖E<0)
C.(E==0)
D.(E!
=0)
17.要求通过while循环不断读入字符,当读入字母N时结束循环。
若变量已正确定义,以下正确的程序段是。
A.while((ch=getchar())!
=N)printf("%c",ch);
B.while(ch=getchar()!
='N')printf("%c",ch);
C.while(ch=getchar()=='N')printf("%c",ch);
D.while((ch=getchar())=='N')printf("%c",ch);
18.有以下程序:
#include
voidmain()
{intx=6;
while(x--);
printf("x=%d\n",x);
}
运行程序的输出结果是。
A.x=0
B.x=-1
C.x=1
D.while构成无限循环
二、填空题
1.表示条件:
102.当x=6,y=5,z=4时,表达式a=x>y>z的值是。
3.阅读下列程序:
#include
voidmain()
{charc;
while((c=getchar())!
='\n')
{if(c>='A'&&c<='Z')c=c+32;
elseif(c>='a'&&c<='z')c=c-32;
printf("%c",c);
}
printf("\n");
}
执行时,如果从键盘上输入:
DEFabc<回车>,则运行结果是。
4.输入:
742<回车>,以下程序的运行结果是9866。
#include
voidmain()
{intc;
while((c=getchar())!
='\n')
{switch(c-'2')
{case0:
case1:
putchar(c+4);
case2:
putchar(c+4);break;
case3:
putchar(c+3);
default:
putchar(c+2);break;
}
}
printf("\n");
}
5.执行以下程序后的输出结果是4。
#include
voidmain()
{inti,j,x=0;
for(i=0;i<2;i++)
{x++;
for(j=0;j<3;j++)
if(j%2)break;
x++;
}
printf("x=%d\n",x);
}
6.以下程序的功能是:
输出a、b、c三个变量中的最小值,请填空。
#include
voidmain()
{inta,b,c,t1,t2;
scanf("%d%d%d",&a,&b,&c);
t1=a
;
t2=c;
printf("%d\n",t2);
}
7.有以下程序段,且变量已正确定义和赋值:
for(s=1.0,k=1;k<=n;k++)
s=s+1.0/(k*(k+1));
printf("s=%f\n\n",s);
请填空,使下面程序段的功能与之完全相同。
s=1.0;k=1;
while()
{s=s+1.0/(k*(k+1));
;}
printf("s=%f\n\n",s);
8.:
一球从100米高度垂直自由落下,每次落地后反弹回上次高度的一半,再落下……。
以下程序计算该球第10次反弹高度(米),以及球第10次落地时经过的路程(米)。
9.求s=1+12+123+