C语言练习4附参考答案.docx
《C语言练习4附参考答案.docx》由会员分享,可在线阅读,更多相关《C语言练习4附参考答案.docx(24页珍藏版)》请在冰豆网上搜索。
C语言练习4附参考答案
实验4:
运算符与表达式(3)
实验目的:
1、熟悉逗号运算符等的基本运用和规则。
2、学会使用C语言的关系运算符和逻辑运算符,以及包含这些运算符的表达式。
3、进一步熟悉C语言程序的编辑、编译、连接和运行的方法。
实验内容:
一、选择题
1、逻辑运算符两侧运算对象的数据类型( D )。
A)只能是0或1B)只能是0或非0正数
C)只能是整型或字符型数据D)可以是任何类型的数据
2、以下关于运算符优先顺序的描述中正确的是( C )。
A)关系运算符<算术运算符<赋值运算符<逻辑与运算符
B)逻辑与运算符<关系运算符<算术运算符<赋值运算符
C)赋值运算符<逻辑与运算符<关系运算符<算术运算符
D)算术运算符<关系运算符<赋值运算符<逻辑与运算符
3、能正确表示“当x的取值在[1,100]和[200,300]范围内为真,否则为假”的表达式是( C )。
A)(x>=1)&&(x<=100)&&(x>=200)&&(x<=300)
B)(x>=1)||(x<=100)||(x>=200)||(x<=300)
C)(x>=1)&&(x<=100)||(x>=200)&&(x<=300)
D)(x>=1)||(x<=100)&&(x>=200)||(x<=300)
4、为判断字符变量c的值不是数字也不是字母时,应采用下述表达式( D )。
A)c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122
B)!
(c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122)
C)c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122
D)!
(c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122)
5、设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是( D )。
A)‘x’&&‘y’B)x<=y
C)x||y+z&&y-zD)!
((xz||1)
6、已知x=43,ch=‘A’,y=0;则表达式(x>=y&&ch<‘B’&&!
y)的值是( C )。
A)0B)语法错C)1D)“假”
7、以下正确的叙述是( D )。
A)在C程序中,每行中只能写一条语句
B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数
C)在C程序中,无论是整数还是实数,都能被准确无误地表示
D)在C程序中,%是只能用于整数运算的运算符
8、以下选项中,与k=n++完全等价的表达式是(A)。
A)k=n,n=n+1B)n=n+1,k=nC)k=++nD)k+=n+1
9、与数学式子
对应的C语言表达式是(C)。
可参看教材P211-212页
A)3*x^n(2*x-1)B)3*x**n(2*x-1)
C)3*pow(x,n)*(1/(2*x-1))D)3*pow(n,x)/(2*x-1)
10、设a和b均为double型变量,且、,则表达式(int)a+b/b的值是(D)。
A)6.500000B)6
11、输入并运行下面的程序,写出运行结果:
main()
{
inta=1,b=2,c=3;
printf("%d,%d,%d,%d\n",a=b=c,a=b==c,a==(b=c),a==(b==c));
}
输出结果:
3,1,0,0
在上机前先分析程序,写出应得结果,上机后将二者对照。
12、输入并运行以下程序,写出运行结果:
main()
{
inta=10,b=20,c=30,d;
d=++a<=10||b-->=20||c++;
printf("%d,%d,%d,%d\n",a,b,c,d);
}
在上机前先分析程序,写出应得结果,上机后将二者对照。
输出结果:
11,19,30,1
程序设计题
1、英里公里,地球与月球之间的距离大约是238857英里,请编写C程序,在屏幕上显示出地球与月球之间大约是多少公里?
#include
voidmain()
{
printf("地球与月球之间大约是%.2lf公里!
\n",238857*1.609/1.31);
}
2、编写程序计算和打印净薪酬。
假设每周工作40个小时,每小时工资6.67元,假设每个月要扣除9%的考核工资,年底再一起发放。
请计算每个月应发工资实额和第12个月发放工资额,并输出。
#include
voidmain()
{
doublehour=40,gongzi=6.67;
printf("每个月应发工资为%.2lf元\n",hour*gongzi*4*0.91);
printf("第12个月工资应发%.2lf元\n",hour*gongzi*4+hour*gongzi*4*0.09*11);
}
习题一
1、C语言源程序最多可能由____ABCD____________部分组成?
A)预处理部分B)变量说明部分
C)函数原型声明部分D)函数定义部分
2、一个完整的C语言源程序最少必须有___C____。
A)若干个主函数B)若干个函数
C)且只能有一个主函数D)一个函数
3、C语言以函数为源程序的基本单位最主要有利于__B_____。
A)程序设计结构化B)程序设计模块化
C)程序设计简单化D提高程序设计有效性
4、要使得C语言编写的程序能够在计算机上运行并得出正确结果,必须要先经过______________B_______________________。
A)编辑和链接B)编译和链接
C)修改和运行D运行并输入数据
5、 一个C程序的执行是从______A______。
A)本程序的main函数开始,到main函数结束。
B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
C)本程序的main函数开始,到本程序文件的最后一个函数结束
D)本程序文件的第一个函数开始,到本程序main函数结束
6、 以下叙述正确的是__A______。
A)在C程序中,main函数必须位于程序的最前面
B)C程序的每行中只能写一条语句
C)C语言本身没有输入输出语句
D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误
7、以下叙述不正确的是___D_____。
A)一个C源程序可由一个或多个函数组成
B)一个C源程序必须包含一个main函数
C)C程序的基本组成单位是函数
D)在C程序中,注释说明只能位于一条语句的后面
8、C语言规定:
在一个源程序中,main函数的位置是___A_____。
A)必须在最开始
B)必须在系统调用的库函数的后面
C)可以任意
D)必须在最后
习题二
一、程序题
1、阅读程序写运行结果
(1)#include
intmain()
{
intx=10,y=6,z=3,t;
if(x>y){t=x;x=y;y=t;}
if(y>z){t=y;y=z;z=t;}
if(x>y){t=x;x=y;y=t;}
printf("%d\t%d\t%d\n",x,y,z);
return0;
}
运行结果3610
(2)#include
intmain()
{
intn=123;
intx,y,z;
x=n/100;
y=n%100/10;
z=n%10;
printf("x=%d,y=%d,z=%d\n",x,y,z);
return0;
}
运行结果1,2,3
(3)#include
intmain()
{
intx=10,y=6;
printf("%d\n",!
x);
printf("%d\n",x||y);
printf("%d\n",x&&y);
return0;
}
运行结果0
1
1
(4)#include
intmain()
{
intx=10,y=6,z=3,s=0;
s+=x;
s+=y;
s+=z;
printf("%d\n",s);
return0;
}
运行结果19
(5)#include
intmain()
{
inta=2,b=3;
floatx=3.5,y=2.5;
printf("%f\n",(float)(a+b)/2+(int)x%(int)y);
return0;
}
运行结果
(6)#include
intmain()
{
inta=-100;
unsignedb,c;
longd=32768;
floate=4.56;
b=a;
a=c=d;
printf("%d,%u,%u,%ld\n",a,b,c,d);
a=e;
printf("%d,%f\n",a,e);
return0;
}
本题假设int型数据占两个字节。
(提示:
%u表示以无符号整型的格式输出;%ld表示以长整型的格式输出)
运行结果32768,100,32768,32768L
(7)#include
intmain()
{
inti=1,j,k;
j=i++;printf("j=%d,i=%d\n",j,i);
k=++i;printf("k=%d,i=%d\n",k,i);
j=i--;printf("j=%d,i=%d\n",j,i);
k=--i;printf("k=%d,i=%d\n",k,i);
return0;
}
运行结果j=1,i=2
k=3,i=3
j=3,i=2
k=1,i=1
(8)#include
#defineM(x)x*(x+1)
intmain()
{
inta=2,b=3;
printf("%d\n",M(1+a+b));
return0;
}
运行结果
2、仿照本章的例题写程序
(1)输入三个整数,计算并输出它们的平均值。
(2)输入三个整数,对它们进行从小到大排序,并输出排序后的结果。
(3)输入一个0-100的整数,若该数是偶数且是5的倍数,则输出“Y”,否则输出“N”。
(4)输入两个英文小写字母,输出其中的较大字母、较小字母,以及较大字母和较小字母之间间隔的字符个数。
(5)输入圆的半径r,计算并输出圆的周长和面积,要求将
定义为符号常量。
二、选择题
1、在C语言中(以16位PC机为例),5种基本数据类型的存储空间长度的排列顺序为____A___。
A) charB) char=int C) charD)char=int=long int<=float2、假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)
的值是____B___。
A) 7 B) 8 C)6 D)2
3、下面四个选项中,均是不合法的用户标识符的选项是_C______。
A)A B)float C)b-a D)_123
P_0 la0 goto struct
do _A int type
4、C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符____C___。
A)必须为字母
B)必须为下划线
C)必须为字母或下划线
D)可以是字母、数字和下划线中任一种字符
习题三
一、程序题
1、阅读程序写运行结果
(1)请写出以下程序的运行结果
intmain()
{
inta=5,b=8;
floatx=34.5678,y=-567.123;
charc='A';
longn=1234567;
unsignedu=65535;
printf("%d%d\n",a,b);
printf("%3d%3d\n",a,b);
printf("%10f%-10f\n",x,y);
printf("%e%10.2e\n",x,y);
printf("%c%d%o%x\n",c,c,c,c);
printf("%ld%lo%lx%x\n",n,n,n,n);
printf("%u%d%o%x\n",u,u,u,u);
printf("%s%3.2s\n","CHINA","CHINA");
return(0);
}
运行结果
(2)用下面的scanf函数输入数据,使a=3,b=7,,,c1=‘Q’,c2=‘q’。
问在键盘上如何输入?
intmain()
{
inta,b;
floatx,y;
charc1,c2;
scanf("a=%db=%d",&a,&b);
scanf("%f,%f",&x,&y);
scanf("%c%c",&c1,&c2);
printf("%d%d%f%f%c%c\n",a,b,x,y,c1,c2);
return(0);
}
运行结果
(3)下面程序运行时从键盘上输入,程序运行结果是什么?
#include
intmain()
{
inta,b,c;
scanf("%2d%3d%*2d%3d",&a,&b,&c);
printf("\na=%d,b=%d,c=%d\n",a,b,c);
return(0);
}
运行结果
(4)下面程序的输出结果是什么?
#include
intmain()
{
intc;
chard;
c=66;
d='B';
putchar(c);putchar(d);putchar('B');putchar(66);
c=68;
d='D';
putchar(c);putchar(d);putchar('B');putchar(66);
return(0);
}
运行结果
(5)下面程序的输出结果是什么?
#include
intmain()
{
inta=-1;longb=-2;floatf=123.456;charc='a';
printf("a=%d,a=%o,a=%x,a=%u\n",a,a,a,a);
printf("b=%1d,b=%1o,b=%1x,b=%1u\n",b,b,b,b);
printf("f=%f,f=%,f=%\nf=%e,f=%g\n",f,f,f,f,f);
printf("c=%c,c=%3c,c=%-3c,c=%d,c=%c\n",c,c,c,'a',65);
printf("s1=%s,s2=%7.3s,s3=%-7.3s\n","12345","ABCD","12345");
return(0);
}
运行结果
(6)下面程序的输出结果是什么?
#include
intmain()
{
intn,x1,x2,x3,y;
printf("Pleaseinputnumbern:
");
scanf("%3d",&n);
x1=n/100;
x2=n/10%10;
x3=n%100;
y=x3*100+x2*10+x1;
printf("y=%d\n",y);
return(0);
}
运行结果
2、写程序
(1)设圆柱底面圆半径r=1.5,圆柱高h=3,求底面圆周长、圆柱侧面积、圆柱面积、圆柱体积。
(2)输入一个华氏温度,要求输出摄氏温度。
公式为
要求输出要有文字说明,保留两位小数。
(3)若a=3,b=4,c=5,x=1.2,y=2.4,z=—3.6,u=33278,n=126765,c1=’a’,c2=’b’,编写程序输出以下的输出结果。
a=▁3▁▁b=▁4▁▁c=▁5
x+y=▁▁▁y+z=-1.20▁▁
u=▁33278▁▁n=▁▁▁▁126765
c1=’a’其ASCII码值为97
c2=’b’其ASCII码值为98.
(4)编写程序,读入一个字母,输出与之对应的ASCII码,输入输出都要有相应的文字提示。
二、选择题
1、已知’A’的ASCII代码是65,以下程序的输出结果是(B)
#include "stdio.h"
main()
{int c1=65,c2=66;
printf("%c, %c",c1,c2);
}
A.因输出格式不合法,输出错误信息B.65,66
C.A,B D.65,66
2、若变量已正确定义,要将a和b中的数进行交换,下面不正确的语句组是(B)
A.a=a+b,b=a-b,a=a-b; B.t=a,a=b,b=t;
C.a=t,t=b,b=a; D.t=b;b=a;a=t;
3、若k是整型变量,则以下程序段的输出是(D)
k=-8567;
printf (“|%d|\n”,k);
A.输出格式不正确 B.输出为|008567|
C.输出为|8567| D.输出为|-8567|
4、下列可作变量的标识符是(B)
A.3rt B.je_cC.$89 D.a+6
5、C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符(A)
C.必须为字母
D.可以是字母、数字和下划线中的任一种字符
6、C语言并不是非常严谨的算法语言,在以下关于C语言的不严谨的叙述中,错误的说法是(A)
A.大写字母和小写字符的意义相同
B.有些不同类型的变量可以在一个表达式中运算
C.在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型
D.同一个运算符号在不同的场合可以有不同的含义
一、程序题
1、阅读程序写运行结果
(1)intmain()
{
floata=2.5,b=3.4;
intc,d;
c=(a>b);
d=(c==0);
printf("%d%d\n",c,d);
return(0);
}
运行结果01
(2)intmain()
{
inta,b,c,d;
a=!
3.1;printf("%d\n",a);
b=!
'a';printf("%d\n",b);
b=!
0;printf("%d\n",b);
c=1&&2;printf("%d\n",c);
c=a&&2;printf("%d\n",c);
d=a||2;printf("%d\n",d);
d=a||c;printf("%d\n",d);
return(0);
}
运行结果0
1
1
1
0
1
0
(3)
#include
intmain()
{
intop1,op2,result;
charoperato;
scanf("%d",&op1);
operato=getchar();
while(operato!
='='){
scanf("%d",&op2);
switch(operato){
case'+':
result=op1+op2;break;
case'-':
result=op1-op2;break;
case'*':
result=op1*op2;break;
case'/':
result=op1/op2;break;
default:
result=0;
}
op1=result;
operato=getchar();
}
printf("%d\n",result);
return(0);
}
程序运行时,
输入2*3−4=,输出:
输入2+1/4=,输出:
输入1+2*5−10/2=,输出:
(4)
#include
intmain()
{
floata=2.5,b=3.4;
intc,d;
c=(a>b);
printf("%d",c);
d=(c==0);
printf("%d",d);
return(0);
}
运行结果
(5)
#include
intmain()
{
inttestnum,remainder;
printf("Enteryournumbertobetested.\n");
scanf("%d",&testnum);
remainder=testnum%2;
if(remainder==0)
printf("Thenumberiseven.\n");
else
printf("Thenumberisodd.\n");
return(0);
}
运行结果
(6)
#include
intmain()
{
inti;
scanf("%d",&i);
switch(i)
{
case1:
case2:
putchar('i');
case3:
printf("%d\n",i);
default:
printf("OK!
\n");
}
return(0);
}
运行结果
(7)下面程序运行时,分别输入‘5’、‘D’、‘w’和‘!
’后的输出结果是什么?
#include
intmain()
{
charc;
scanf("%c",&c);
if(c>='0'&&c<='9')
printf("0-9\n");
elseif(c>='A'&&c<='Z')
printf("A-Z\n");
elseif(c>='a'&&c<='z')
printf("a-z\n");
else
printf("othercharacter\n");
return(0);
}
运行结果
2、写程序
(1)有一分段函数如下:
写程序实现,输入x值,输出y值。
(2)编写程序