电大计算机科学与技术c语言各章练习题答案Word格式文档下载.docx
- 文档编号:20975790
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:46
- 大小:46.63KB
电大计算机科学与技术c语言各章练习题答案Word格式文档下载.docx
《电大计算机科学与技术c语言各章练习题答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《电大计算机科学与技术c语言各章练习题答案Word格式文档下载.docx(46页珍藏版)》请在冰豆网上搜索。
对于第一种格式(即尖括号格式),将从C语言系统层次目录中查找头文件,若查找不到则给出错误信息;
对于第二种格式(即双引号格式),如果头文件名没有给出磁盘号和路径名,则首先从当前工作目录(即包含该命令的程序文件所属的目录)中查找头文件,若查找不到,再接着从C语言系统层次目录中查找头文件,若还是查找不到则给出错误信息。
在第二种格式中,如果头文件名带有磁盘号和路径名,则只在该指定路径中查找头文件,若查找不到则给出错误信息。
(关于第二种格式中头文件名带有磁盘号和路径名的情况,教材的叙述是错误的)
7.答:
第一步需要上机建立相应的工作区和工程并建立、输入和编辑该程序中的相应文件,通常首先建立主文件;
第二步对每个程序文件进行编译生成各自的目标代码文件,通常主文件被首先编译并生成目标文件;
第三步使主目标文件与同一程序中的其他目标代码文件以及有关C语言系统库函数文件相连接,生成一个可执行文件;
第四步运行最后生成的可执行文件。
1.2选择题
1.B2.C3.A4.D5.A6.B7.D8.C
上机实验题
1.程序代码:
stdio.h>
voidmain(){
intx,y。
x=5。
y=6。
printf("
x+y=%d,"
x+y)。
x*y=%d\n"
x*y)。
}
运行结果:
x+y=11,x*y=30
2.程序代码:
intcube(int)。
cube(3)=%d\n"
cube(3))。
cube(5)=%d\n"
cube(5))。
cube(8)=%d\n"
cube(8))。
intcube(intx){returnx*x*x。
}
cube(3)=27
cube(5)=125
cube(8)=512
3.程序代码:
A.主程序文件代码:
#include"
abc.cpp"
doublea,b,c。
doubleaverageValue。
a=2。
b=3。
c=4。
averageValue=AVE(a,b,c)。
averageValue:
%lf\n"
averageValue)。
averageValue=AVE(a+1,b+2,c+5)。
%Lf\n"
B.abc.cpp文件代码:
(新建时选择“File|New|C++SourceFile”。
注意去掉“Addtoproject…:
”前面的勾,以后新建其他程序文件或头文件时还要勾上)
doubleAVE(doublex,doubley,doublez)
{
return(x+y+z)/3。
3.000000
5.666667
4.程序代码:
example.h"
inta,b,c。
请输入任意三个整数:
)。
scanf("
%d%d%d"
&
a,&
b,&
c)。
求和:
%d\n"
Sum(a,b,c))。
乘积:
Product(a,b,c))。
B.example.h头文件代码:
(新建时选择“File|New|C/C++HeaderFile”。
注意勾上“Addtoproject…:
”前面的勾)
intSum(int,int,int)。
intProduct(int,int,int)。
C.另一个程序文件的代码:
intSum(inta,intb,intc)
returna+b+c。
intProduct(inta,intb,intc)
returna*b*c。
运行结果随输入不同而不同,请自行记录
第2章基本数据类型与表达式
2.1选择题
1.D2.A3.B4.B5.D6.C7.C8.A9.C10.D
11.B12.C13.A
2.2把下列数学算式或不等式表示成C表达式
1.2.0*x*(1+x*x/3.0)
2.(1+exp(x))/(1-exp(x))
3.(-b+sqrt(b*b-4.0*a*c))/2/a
4.1/(3.0*x*log(2.0*x+k))
5.pow(sin(x+3.14159/4),3)/(3+pow(cos(x-3.14159/4),3))
6.pow(1+exp(x+1),n)/7
7.0<
=x&
&
x<
=20
8.(a*x-b*y)!
=c
9.(4*x+7*y-2)==3*a*b
10.(3.0*x+2)!
=0&
fabs((2.0*x*x+1)/(3.0*x+2))<
=5/*(3.0*x+2)先判断避免除0*/
11.age>
=55||pay>
=820
12.!
strcmp(place,"
江苏"
)&
!
strcmp(sex,"
女"
)/*strcmp函数详见教材第127页*/
13.('
a'
<
=ch&
ch<
='
z'
)||('
A'
Z'
)
14.s[2]=='
0'
&
(s[1]=='
x'
||s[1]=='
X'
)/*s[1]、s[2]为数组元素,详见第4章*/
2.3求出下列逻辑表达式的相反式
1.!
x
2.x!
=0
3.x<
10
4.p==NULL||x==46
5.x<
=0||x>
=10
6.ch!
d'
ch!
7.!
p||p->
data==x/*p->
data是对结构成员的间接访问,详见教材第193页7.3*/
8.i>
=n&
a[i]%3!
=0/*a[i]为数组元素,详见第4章*/
2.4根据下列题目要求编写出相应程序
1.(题目中仅要求两边之和大于等于第三边是不对的。
两边之和等于第三边只能连成直线(根据公式计算面积也为0),不能组成三角形。
边长也不应为负数。
故应要求两边之和大于第三边,且任一边长大于0。
不过目前没有学习第3章的if语句,程序自身无法控制在遇到不能构成三角形的情况时如何处理,需要用户输入时自行掌握。
math.h>
doublea,b,c,s。
请输入三角形三条边长:
%lf%lf%lf"
s=(a+b+c)/2。
该三角形面积为:
%lf\n"
sqrt(s*(s-a)*(s-b)*(s-c)))。
2.(每年都是上一年的110%,即1.1倍,5年后则将是1.1的5次方。
其实只有5次方,为什么一定要用pow(1.1,5)呢^_^?
1.1*1.1*1.1*1.1*1.1效率多高!
不过要注意人数是没有零头的,所以要ceil()一下。
之所以用ceil()而不是floor()是为了保证完成任务,一个都不能少,呵呵。
本题这样算出来的是4832人。
不过更严格的做法就是要每年都ceil()一下,否则中间某个年份招生人数就有零头了,本题这样算出来的是4836人。
只是那样的话就成了:
ceil(ceil(ceil(ceil(ceil(3000*1.1)*1.1)*1.1)*1.1)*1.1)
晕吧,哈哈。
要想不晕,得学好第3章的循环语句。
5年后计划招生%lf人。
\n"
ceil(3000*pow(1.1,5)))。
3.(算术平均值:
求和之后除以n,几何平均值:
乘积的n次方根(即1.0/n次方)。
为了防止数值过大溢出(超过整数类型的范围),所以对第一个数就使用了强制类型转换为double。
此外本题计算乘积的4次方根,要求输入的四个整数如果全都不为0,则应有0、2或4个为正,否则乘积为负,无实数4次方根。
inta,b,c,d。
请输入4个整数:
%d%d%d%d"
c,&
d)。
算术平均值:
%lf,几何平均值:
%lf。
((double)a+b+c+d)/4,
pow((double)a*b*c*d,1.0/4))。
4.(唯一要求:
a和b不能是相反数,即a不等于-b。
拜托,拜托!
doublea,b。
请输入a和b的值:
%lf%lf"
b)。
x=%lf,y=%lf\n"
2*a*sin(a)/3/(a+b),
2*b*cos(b)/3/(a+b))。
1.
stdlib.h>
time.h>
constintN=10。
inti,x,y,z,c=0。
srand(time(0))。
for(i=1。
i<
=N。
i++){
x=rand()%90+10。
//[0+10,89+10]
y=rand()%90+10。
printf("
%d+%d="
x,y)。
scanf("
%d"
z)。
if(x+y==z)c++。
//本题回答正确
最后得分:
c*10)。
2.(与教材不同,使用了'
\t'
这是制表符,相当于按Tab键排版。
由于使用了'
,所以%10.2lf也省略为%.2lf,即不限定宽度,只限定小数位数为2位。
注意教材上第一个printf语句中,"
cos"
误为"
con"
了。
请尝试将while改为for、do~while。
constdoubleRAD=3.14159/180。
inti=0。
\ti\tsin\tcos\n"
while(i<
=90){
\t%d\t%.2lf\t%.2lf\n"
i,sin(i*RAD),cos(i*RAD))。
i+=5。
3.(正整数范围大约21亿多,故输入的数以9位或以下(小于10亿)为宜,切记切记!
intnum,rem。
输入一个整数:
num)。
do{
rem=num%10。
//得到个位的值
/*去掉个位,这样下次的个位就是现在的十位。
每次如此,即可逐次得到从个位到最高位的各位*/
num/=10。
//输出现在的个位。
由于从个位开始逐位输出,所以次序反过来了
rem)。
/*循环必须用do~while,这样当num为0时也会循环一次,输出一个0。
开始不为0时,当去掉最高位后num自然也就是0了,结束循环*/
}while(num>
0)。
4.(呵呵,for语句与教材的不同。
其中表达式1可以省略,这不奇怪;
每次循环ch++和d1++都执行一次,所以表达式2只需要判断ch<
F'
,这也不奇怪。
两条printf合成一句,大多数同学也会。
但是ch++和d1++怎么和printf合并成表达式3?
原因在于由于是后缀++,所以给printf()的值实际上都是d1和ch,值给了printf()之后才增加1,所以++实际上仍然是在printf()输出之后做的。
charch='
d1='
for(。
ch<
%c:
%d,%c:
%d\n"
ch++,ch,d1++,d1))。
5.(比教材多了一点换行,程序排版好看点。
注意有整数除法,所以y不能为0,而且输入除法答案的时候要舍去小数部分啊!
intx,y,z,c=0。
输入两个整数:
%d%d"
x,&
y)。
if(x+y==z)c++。
%d-%d="
if(x-y==z)c++。
%d*%d="
if(x*y==z)c++。
%d/%d="
if(x/y==z)c++。
%d%%%d="
if(x%y==z)c++。
\n共5道题,答对%d道题\n"
c)。
第3章流程控制语句
3.1选择题
1.A2.B3.C4.D5*.C6.B7.C8.B9.A10.D
(问题一:
第5小题。
一般而言,循环体每次执行完之后都会执行<
表达式3>
,然后再计算<
表达式2>
,判断是否中止循环,即使在循环体中碰到continue也不会跳过<
的执行。
但是,如果在循环体中执行break则会立即终止循环,也就是说<
会被跳过,在这种情况下,循环体就被多执行了一次。
3.2写出下列程序运行结果并上机验证
1.(第一个if改用条件表达式,注意最后一个printf之前的一行,每执行一个赋值语句,相关变量的值就被改变了,变量的新值参与下一个赋值语句中的运算,所以执行了a+=b。
b+=a。
之后,b和a的值不等。
inta=2,b=5,c。
c=(a+b>
10)?
(a*b):
(3*a+2*b)。
if(c>
=20)printf("
c*c)。
elseif(a>
b)printf("
3*(a+b))。
elseprintf("
4*c-5)。
a+=b。
c+=a+b。
a=%d,b=%d,c=%d\n"
a,b,c)。
2.(注意三处:
x+=2、switch(x-1)、除了case10之后有break,别的没有break。
intx。
for(x=5。
12。
x+=2){//x:
57911
switch(x-1){
case4:
x)。
//x:
5
case7:
2*x+1)。
case10:
3*x-1)。
break。
511
default:
default\n"
79
}
3.(要求输入的数在第96页)
ints0,s1,s2,x。
s0=s1=s2=0。
从键盘输入一组整数(以-1结束):
x)。
while(x!
=-1){//-1结束
switch(x%3){
case0:
s0+=x。
//能被3整除的数之和
case1:
s1+=x。
//除以3余1的数之和
case2:
s2+=x。
//除以3余2的数之和
s0=%d,s1=%d,s2=%d\n"
s0,s1,s2)。
4.(学会数数,呵呵。
intc1=0,c2=0,c3=0。
inti,j,k。
for(i=0。
5。
for(j=i。
j<
j++)c1++。
//循环5+4+3+2+1=15次
for(k=5。
k>
=i。
k--)c2++。
//循环6+5+4+3+2=20次
c3++。
//5次
%d%d%d\n"
c1,c2,c3)。
5.
constintB=2。
inti=0,p=1,s=1。
while(s<
100){//s>
=100循环才结束
i++。
p*=B。
s+=p。
//循环次数ips
//1123
//2247
//33815
//441631
//553263
//6664127
i=%d\n"
i)。
s=%d\n"
s)。
6.(对正整数10~16分解质因数。
inti。
for(i=10。
=16。
intj=2,k=i。
//j从最小的质数2开始
%d:
"
do{
/*在下面的循环中,如果k能被j整除,则j必为k的质因数。
因为j是从最小的质数2开始逐个增加的,只要能够整除k的j都会完全
被while循环分解(k/=j),所以当j增加到合数j'
时,j'
的各个质因数(均
小于j'
)都已经被分解完毕,故而此时的k已经不能被j'
整除了。
j必为k
的质因数。
合数就是能够被1和自身之外的数整除的数,即:
j'
=p1*p2*p3*…*pn,其中pi为质数,且pi<
,i=1,2,3,…,n,n>
1。
*/
while(k%j==0){printf("
%d"
j)。
k/=j。
j++。
}while(k>
=j)。
7.(不要光靠数数啊,呵呵。
constintT=6。
inti,j,k=0。
=T。
i+=2)//i:
135
for(j=2。
j++)//j:
23456
if(i+j==T)printf("
//
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电大 计算机 科学 技术 语言 各章 练习题 答案
![提示](https://static.bdocx.com/images/bang_tan.gif)