习题15.docx
《习题15.docx》由会员分享,可在线阅读,更多相关《习题15.docx(42页珍藏版)》请在冰豆网上搜索。
习题15
习题1
一、单项选择题
1.一个C程序的执行是从
A)本程序的main函数开始,到main函数结束
B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
C)本程序的main函数开始,到本程序文件的最后一个函数结束
D)本程序文件的第一个函数开始,到本程序main函数结束
2.以下叙述正确的是
A)在C程序中,main函数必须位于程序的最前面
B)程序的每行中只能写一条语句
C)C语言本身没有输入输出语句
D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误
3.以下叙述不正确的是
A)一个C源程序可由一个或多个函数组成
B)一个C源程序必须包含一个main函数
C)C程序的基本组成单位是函数
D)在C程序中,注释说明只能位于一条语句的后面
4.C语言规定:
在一个源程序中,main的位置
A)必须在最开始B)必须在系统调用的库函数后面
C)可以任意D)必须在最后
5.一个C语言程序是由( )
A)一个主程序和若干子程序组成B)函数组成
C)若干过程组成D)若干子程序组成
二、填空题
1.C源程序的基本单位是。
2.一个C源程序中至少包括一个。
3.在C语言中,格式化输入操作是由库函数完成的,格式化输出操作是由库函数
完成的。
习题2
一、单项选择题
1.下面四个选项中,均是不合法的用户标识符的选项的是
A)A p_o do
B)float lao _A
C)b-a goto int
D)_123 temp INT
2.C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符
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.假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是
A)7 B)8
C)6 D)2
6.若有数学式
则不正确的C语言表达式是
A)a/b/c*e*3B)3*a*e/b/c
C)3*a*e/b*cD)a*e/c/b*3
7.在C语言中,要求运算数必须是整型的运算符是
A)/ B)++
C)!
= D)%
8.设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为
A)int B)float
C)double D)不确定
9.在C语言中,char型数据在内存中存储形式是
A)补码 B)反码
C)原码 D)ASCII码
10.表达式18/4*sqrt(4.0)/8值的数据类型为
A)float B)char
C)double D)不确定
11.判断字符型变量c1是否为小写字母的正确表达式为
A)’a’<=c1<=’z’B)(c1>=a)&&(c1<=z)
C)(‘a’>=c1)||(‘z’<=c1)D)(c1>=’a’)&&(c1<=’z’)
12.设:
inta=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后n的值为
A)1B)2
C)3D)4
13.下列表达式中,不满足“当x的值为偶数时值为真,为奇数时值为假”的要求的是
A)x%2==0B)!
x%2!
=0
C)(x/2*2-x)==0D)!
(x%2)
二、填空题
1.若s是int型变量,s=6;则表达式s%2+(s+1)%2的值为
2.若a是int型变量,则表达式(a=4*5,a*2),a+6的值为
3.若a.b和c均是int型变量,则计算表达式a=(b=4)+(c=2)后,a值为,b值为,c值为。
4.若x和n均是int型变量,且x和n的初值均为5,则精神表达式x+=n++后x的值为,n的值为。
5.若定义:
inta=2,b=3;floatx=3.5,y=2.5;则表达式(float)(a+b)/2+(int)x%(int)y的值。
6.在C语言中,不带任何修饰符的浮点常量,是按类型数据存储的。
7.假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为
8.C语言中的标识符只能由三种字符组成,它们是,和。
9.若有定义:
inte=1,f=4,g=2;floatm=10.5,n=4.0,k;则计算赋值表达式k=(e+f)/g+sqrt((double)n)*1.2/g+m后k的值是
10.表达式8/4*(int)2.5/(int)(1.25*(3.7+2.3))值的数据类型为
11.假设m是一个三位数,从左到右用a、b、c表示各位的数字,则从左到右各个数字是bac的三位数的表达式是
12.已知A=7.5,B=2,C=3.6,表达式A>B&&C>A||A
C>B的值是。
13.若有x=1,y=2,z=3,则表达式(xx:
y)==z++的值是。
14.执行以下程序段后,a=,b=,c=。
intx=10,y=9;
inta,b,c;
a=(x--=y++)?
x--:
y++;
b=x++;
c=y;
15.设x,y,z均为int型变量;写出描述“x,y和z中有两个为负数”的C语言表达式:
。
16.设有以下变量定义,并已赋确定的值,charw;intx;floaty;doublez;
则表达式:
w*x+z-y所求得的数据类型为。
17.若x为int类型,请以最简单的形式写出与逻辑表达式!
x等价的C语言关系表达式。
18.数学表达式
等价的C语言表达式是
19.数学表达式
等价的C语言表达式是
习题3
一、单项选择题
1.已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是。
inta1,a2;charc1,c2;
scanf(“%d%c%d%c”,&a1,&a2,&c1,&c2);
A)10A20B↙B)10A20B↙
C)10A20B↙C)10A20B↙
2.执行下列程序片段时输出结果是。
intx=13,y=5;
printf(“%d”,x%=(y/=2));
A)3B)2C)1D)0
3.若定义x为double型变量,则能正确输入x值的语句是。
A)scanf(“%f”,x);B)scanf(“%f”,&x);
C)scanf(“%lf”,&x);D)scanf(“%5.1f”,&x);
4.有输入语句:
scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为使变量a的值为1,b的值为3,c的值为2,则正确的数据输入方式是。
A)132↙B)1,3,2↙
C)a=1b=3c=2↙D)a=1,b=3,c=2↙
5.逻辑运算符两侧运算对象的数据类型。
A)只能是0或1B)只能是0或非0正数
C)只能是整型或字符型数据D)可以是任何类型的数据
6.下列表达式中,不满足“当x的值为偶数时值为真,为奇数时值为假”的要求。
A)x%2==0B)!
x%2!
=0C)(x/2*2-x)==0D)!
(x%2)
7.能正确表示“当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)
8.C语言对嵌套if语句的规定是:
else总是与。
A)其之前最近的if配对B)第一个if配对
C)缩进位置相同的if配对D)其之前最近的且尚未配对的if配对
9.设:
inta=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后n的值为。
A)1B)2C)3D)4
10.下述程序的输出结果是。
#include
intmain()
{
inta=0,b=0,c=0;
if(++a>0||++b>0)
++c;
printf(“%d,%d,%d”,a,b,c);
return0;
}
A)0,0,0B)1,1,1C)1,0,1D)0,1,1
11.以下程序输出结果是。
#include
intmain()
{
intx=1,y=0,a=0,b=0;
switch(x)
{
case1:
switch(y)
{
case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;break;
case3:
a++;b++;
}
printf(“a=%d,b=%d”,a,b);
return0;
}
A)a=1,b=0B)a=2,b=1C)a=1,b=1D)a=2,b=2
12.下面程序段
intk=2;
while(k=0){printf(“%d”,k);k--;}
则下面描述中正确的是。
A)while循环执行10次B)循环是无限循环
C)循环题语句一次也不执行D)循环体语句执行一次
13.以下程序段的循环次数是。
for(i=2;i==0;)printf(“%d”,i--);
A)无限次B)0次C)1次D)2次
14.下面程序的输出结果是。
#include
intmain()
{
intx=9;
for(;x>0;x--)
{
if(x%3==0)
{
printf(“%d”,--x);
continue;
}
}
return0;
}
A)741B)852C)963D)875421
15.下面程序的输出结果是。
#include
intmain()
{
intk=0,m=0,i,j;
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
k++;
k-=j;
}
m=i+j;
printf(“k=%d,m=%d”,k,m);
return0;
}
A)k=0,m=3B)k=0,m=5C)k=1,m=3D)k=1,m=5
16.若运行以下程序时,输入2473↙,则程序的运行结果是。
#include
intmain()
{
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”);
return0;
}
A)668977B)668966C)66778777D)6688766
二、基本知识填空题
1.一个表达式要构成一个C语句,必须。
2.复合语句是用一对界定的语句块。
3.写出数学式子
的C语言表达式。
4.将条件“y能被4整除但不能被100整除,或y能被400整除”写成逻辑表达式
。
5.C语言的语法规定:
else子句总是与的if相结合,与书写格式无关。
6.switch语句中,如果没有与该值相等的标号,并且存在default标号,则从开始执行,直到switch语句结束。
7.C语言三个循环语句分别是语句,语句和语句。
8.至少执行一次循环体的循环语句是。
9.continue语句的作用是结束循环。
10.用break语句可以使程序流程跳出switch语句体,也可以在循环结构中止循环体。
三、阅读程序,指出结果
1.若运行时输入100↙,写出以下程序的运行结果
#include
intmain()
{
inta;
scanf(“%d”,&a);
printf(“%s”,(a%2!
=0)?
”No”:
”Yes”);
return0;
}
2.写出以下程序的运行结果
#include
intmain()
{
inta=2,b=7,c=5;
switch(a>0)
{
case1:
switch(b<0)
{
case1:
printf(“@”);break;
case2:
printf(“!
”);break;
}
case0:
switch(c==5)
{
case1:
printf(“*”);break;
case2:
printf(“#”);break;
default:
printf(“#”);break;
}
default:
printf(“&”);
}
printf(“\n”);
return0;
}
3.阅读下面程序,输入字母A时,指出其运行结果
#include
intmain()
{
charch;
ch=getchar();
switch(ch)
{
case65:
printf("%c",'A');
case66:
printf("%c",'B');
default:
printf("%s\n","other");
}
return0;
}
3.写出下面程序运行的结果
#include
intmain()
{
intx,i;
for(i=1;i<=100;i++)
{
x=i;
if(++x%2==0)
if(++x%3==0)
if(++x%7==0)
printf(“%d”,x);
}
return0;
}
4.写出下面程序运行的结果
#include
intmain()
{
inti,b,k=0;
for(i=1;i<=5;i++)
{
b=i%2;
while(b--==0)k++;
}
printf(“%d,%d”,k,b);
return0;
}
5.写出下面程序运行的结果
#include
intmain()
{
inta,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);
return0;
}
6.写出下面程序运行的结果
#include
intmain()
{
intk=1,n=263;
do{k*=n%10;n/=10;}while(n);
printf(“%d\n”,k);
return0;
}
7.写出下面程序运行的结果
#include
intmain()
{
inti=5;
do
{
switch(i%2)
{
case0:
i--;break;
case1:
i--;continue;
}
i--;i--;
printf(“%d”,i);
}while(i>0);
return0;
}
8.写出下面程序运行的结果
#include
intmain()
{
inti,j;
for(i=0;i<3;i++,i++)
{
for(j=4;j>=0;j--)
{
if((j+i)%2)
{
j--;
printf(“%d,”,j);
continue;
}
--i;
j--;
printf(“%d,”,j);
}
}
return0;
}
9.写出下面程序运行的结果
#include
intmain()
{
inta=10,y=0;
do
{
a+=2;
y+=a;
if(y>50)break;
}while(a==14);
printf(“a=%dy=%d\n”,a,y);
return0;
}
10.写出下面程序运行的结果
#include
intmain()
{
inti,j,k=19;
while(i=k-1)
{
k-=3;
if(k%5==0)
{
i++;
continue;
}
elseif(k<5)break;
i++;
}
printf(“i=%d,k=%d\n”,i,k);
return0;
}
11.写出下面程序运行的结果
#include
intmain()
{inty=2,a=1;
while(y--!
=-1)
do{
a*=y;
a++;
}while(y--);
printf(“%d,%d\n”,a,y);
return0;
}
四、程序填空
1.以下程序输出x,y,z三个数中的最小值。
#include
intmain()
{
intx=4,y=5,z=8;
intu,v;
u=x;
v=u;
printf(“%d”,v);
return0;
}
2.下面程序的功能是输出1至100之间每位数的乘积大于每位数的和的数,请填空使程序完整。
#include
intmain()
{
intn,k=1,s=0,m;
for(n=1;n<=100;n++)
{
k=1;s=0;
;
while()
{
k*=m%10;
s+=m%10;
;
}
if(k>s)printf(“%d”,n);
}
return0;
}
3.已知如下公式:
下面程序的功能使根据上述公式输出满足精度要求的eps的
值,请填
(2)空使程序完整。
#include
intmain()
{
doubles=0.0,eps,t=1.0;
intn;
scanf(“%lf”,&eps);
for(n=1;;n++)
{
s+=t;
t=;
}
;
return0;
}
4.下面程序段的功能是计算1000!
的末尾有多少个零,请填空使程序完整。
#include
intmain()
{
inti,k;
for(k=0,i=5;i<=1000;i+=5)
{
m=i;
while()
{
k++;
m=m/5;
}
}
return0;
}
5.下面程序接受键盘上的输入,直到按↙键为止,这些字符被原样输出,但若有连续的一个以上的空格时只输出一个空格,请填(3)空使程序完整。
#include
intmain()
{
charcx,front=’\0’;
while(!
=’\n’)
{
if(cx!
=’’)putchar(cx);
if(cx==’’)
if()
putchar()
front=cx;
}
return0;
}
6.下面程序按公式
求和并输出结果,请填空使程序完整。
#include
intmain()
{
;
intk;
for(k=1;k<=100;k++)
s+=k;
for(k=1;k<=50;k++)
s+=k*k;
for(k=1;k<=10;k++)
s+=;
printf(“sum=”,s);
return0;
}
7.以下程序的功能是:
从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。
#include
intmain()
{
floats;
floatgmax,gmin;
scanf("%f",&s);
gmax=s;
gmin=s;
while()
{
if(s>gmax)
gmax=s;
if()
gmin=s;
scanf("%f",&s);
}
printf("\ngmax=%f\ngmin=%f\n",gmax,gmin);
return0;
}
五、编程题
1.有一函数:
编写一程序,输入x,输出y值。
2.从键盘上输入3个整数,求最小的数。
3.输入某人的出生日期,计算并显示其出生的当天是星期几。
(注:
要计算出生日是星期几,首先要计算出出生前一年的12月31日是星期几,其计算公式如下)
,如果是闰年出生的且出生月份大于2月,则总天数要加1。
4.企业发放的奖金根据利润提成:
利润低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时