高教c语言程序设计版课后编程题答案Word格式文档下载.docx
《高教c语言程序设计版课后编程题答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《高教c语言程序设计版课后编程题答案Word格式文档下载.docx(44页珍藏版)》请在冰豆网上搜索。
average=average/10;
average=%lf"
average);
}
3.33
编写程序,读入三个整数给a,b,c,然后交换它们中的数,把a中原来的值给b,
把b中原来的值给c,把c中的值给a。
a,b,c,t=0;
a
b
c:
%d%d%d"
t=c;
c=b;
b=a;
a=t;
a=%d
b=%d
c=%d"
a,b,c);
第四章选择结构
4.21
当a>
0时,请将以下语句改写成switch语句。
if(
a<
30
)
m=1;
else
40
m=2;
50
m=3;
60
m=4;
m=5;
main()
{
a;
Enter
a:
%d"
a);
switch(a/10)
case
0:
1:
2:
m=1"
break
;
3:
m=2"
4:
m=3"
5:
m=4"
default:
m=5"
4.22
编写程序,输入一位学生的生日(年:
y0、月:
m0、日:
d0);
并输入当前的日
期(年:
y1、月:
m1、日:
d1);
输出该生的实足年龄。
※程序如下※
这道题仅做参考!
!
系统不一样无法运行!
y0,y1,m0,m1,d0,d1,age=0;
Your
Birthday(yyyy-mm-dd):
%d-%d-%d"
y0,&
m0,&
d0);
Current
Date(yyyy-mm-dd):
y1,&
m1,&
d1);
if(d1<
d0)m1=m1-1;
if(m1<
m0)y1=y1-1;
age=y1-y0;
\nAge=%d"
age);
4.23
编写程序,输入一个整数,打印出它是奇数还是偶数。
i;
integer:
i);
if(i%2==0)
/*条件判断*/
%d
is
even"
i);
odd"
——————————————————————————————————
4.24
编写程序,输入a、b、c三个数,打印出最大者。
a,b,c,max
=
0;
(int)a
max
if(max<
b)
b;
c)
c;
max=%d"
max);
4.25
有一函数:
编写一程序,要求输入x的值,输出y的值。
分别
(1)不嵌套的if语句
(2)嵌套的if语句
(3)if_else语句
(4)switch语句
源程序一:
(1)不嵌套的if语句
float
x;
x:
%f"
x);
if(x>
-5&
&
x<
0)
y=%f"
x);
if(x==0)
x-1);
0&
10)
x+1);
if(x<
=-5||x>
=10)
error"
源程序二:
}
源程序三:
(3)if_else语句
源程序四:
flag;
-5
flag=-1;
flag=0;
0
flag=1;
switch(flag)
-1:
break;
}/*
第五章循环结构
三、编程题
5.17
编写程序,求1-3+5-7+...-99+101的值。
i,sum=0,s=1;
for(i=1;
i<
=101;
i+=2)
sum=sum+i*s;
s=-s;
/*控制符号交替变换*/
sum=%d"
sum);
5.18
编写程序,求e的值,e=1+1/1!
+1/2!
+1/3!
+1/4!
+...+1/n!
(1)用for循环,计算前50项
(2)用while循环,要求直至最后一项的值小于1e-4。
(1)用for循环实现
i,n;
sum=1,t=1;
n:
n);
=n;
i++)
t=t*i;
实现阶乘*/
sum=sum+1/t;
e=%lf"
(2)用while循环实现
#include<
math.h>
doubel
while(fabs(1.0/t)>
1e-4)
fabs求浮点型数据的绝对值
i++;
5.19
编写程序,输出从公元1000年至2000年所有闰年的年号
每输出3个年号换一行。
判断公元年是否闰年的条件是:
(1)公元年数如能被4整除,而不能被100整除,则是闰年。
(2)公元年数能被400整除也是闰年。
i,j=0;
for(i=1000;
=2000;
if((i%4==0)&
(i%100!
=0)||(i%400==0))
判断是否是闰年的条件
d
"
j++;
if(j%3==0)
控制换行
*/
5.20
编写程序,打印以下图形:
*
***
*****
*******
i,j;
=7;
/*控制行数*/
for(j=1;
j<
j++)
/*控制星数*/
if((j<
=fabs(4-i))||(j>
7-fabs(4-i)))
*"
main()
{inti,j,k;
for(i=-3;
=abs(i);
i++)
{for(j=0;
j++)printf(“”);
for(k=0;
k<
=7-abs(i);
k++)printf(“*”);
printf(“\n”);
第六章字符型数据
6.21
请编写程序,输入一行字符(用回车结束),输出每个字符以及与之对应的ASCII代码值,每行输出三队.
i=0;
char
ch;
while((ch=getchar(
))!
='
\n'
%4c%4d"
ch,ch);
if(i%3==0)
请编写程序,输入一行数字字符(用EOF结束),每个数字字符的前后都有空格。
请编程,把这一行中的数字转换成一个整数。
例如,若输入:
2
4
8
3
<
CR>
(<
代表Enter键)
则输出整数:
2483
while((ch=getchar())!
=EOF)
if(ch=='
'
continue;
%c"
ch);
6.22
请编写程序统计输入的行数,输入用EOF结束输入。
6.23
请编写程序统计输入的一行中小写字母的个数。
if((ch>
a'
)&
(ch<
z'
))
6.24
请编写输出以下图案的程序,图案的行数由输入的值确定。
A
BBB
CCCCC
DDDDDDD
EEEEEEEEE
i,j,k,n;
n(integer):
i++)
for(j=n;
j>
j--)
for(k=1;
=2*i-1;
k++)
64+i);
第七章函数
7.14
以下fun函数用以判断n是否是素数,fun函数中有逻辑错,请调试改正。
fun(int
n)
k,yes;
for(k=2;
=n/2;
if(n%k==0)
return
yes=0;
yes=1;
※正确答案是:
k,yes=1;
yes;
n,yes;
n
(int):
yes=fun(n);
if(yes==1)printf("
prime"
n);
not
7.15
编写函数
mymod(int
a,
b)用以求a被b除之后的余数。
mymod(
remainder;
remainder=a%b;
a,b;
b);
余数=%d"
mymod(a,b));
7.16
编写程序求:
1-1/2+1/3-1/4+1/5-1/6+1/7-...1/n
n;
sum(int
a=sum(n);
%10.5f"
a);
s=0;
i,t=1;
s=s+1/i*t;
t=-t;
s;
7.17
编写函数,根据整型形参m的值,计算如下公式的值。
t=1-1/(2
x
2)-1/(3
3)-...-1/(m
m)
例如:
若m=5,则应输出0.536389。
t=1;
f2(int);
i,m;
m);
for(i=2;
=m;
t=t-f2(i);
t=%f"
t);
f2(int
s=1.0/(m*m);
7.18
编写函数用以求表达式x2-5x+4,x作为参数传给函数,调用此函数求:
y1=22-5*2+4
y2=(x+15)2-5*(x+15)+4
y3=sin2x-5*sinx+4
fun(float
x)
y;
y=pow(x,2)-5*x+4;
x,y1,y2,y3;
clrscr();
y1=fun
(2);
y2=fun((x+15));
y3=fun(sin(x));
y1=%f\ny2=%f\ny3=%f\n"
y1,y2,y3);
第八章地址和指针
8.17
请编写函数,其功能是对传送过来的两个浮点数求出和值与差值,并通过形参传
送回调用函数。
sum_sub(float
a,float
b,float
*sum,
*sub)
*sum=a+b;
*sub=a-b;
a,b,sum,sub;
/*定义变量sum求和,变量sub求差*/
(float):
%f%f"
sum_sub(a,b,&
sum,&
sub);
sum=%f,sub=%f"
sum,sub);
8.18
请编写函数,对传送过来的三个数选出最大和最小数,并通过形参传回调用函数。
max_min(double
a,double
b,double
c,double
*max,double
*min)
*max
假定a的值为最大,把a值赋给指针变量*max
if(*max<
*min
假定a的值为最小,把a值赋给指针变量*min
if(*min>
a,b,c,max,min;
c
(double):
max_min(a,b,c,&
max,&
min);
max=%lf,min=%lf"
max,min);
第九章函数
9.27
输入一行数字字符,请用数组元素作为计数器来统计每个数字字符的个数.用下标为
0元素统计字符"
1"
的个数,下标为1的元素统计字符"
2"
的个数,...
void
count(int
a[])
for(i=0;
10;
if(i==ch-'
0'
if(i==0)
a[9]++;
else
a[i-1]++;
i,a[10]={0};
count(a);
a[%d]=%d\n"
i,a);
9.28
编写函数,对具有10个整数的数组进行如下操作:
从第n个元素开始直到最后一个元
素,依次向前移动一个位置.输出移动后的结果.
fun
(int
a[],int
for(i=n;
9;
a=a[i+1];
a[10]={0,1,2,3,4,5,6,7,8,9},n,i;
fun(a,n);
9.29
编写函数把数组中所有奇数放在另一个数组中返回.
conio.h>
b[])
if(a%2==1)
b[j++]=a;
return(j);
i,j,a[10],b[10];
\n****Enter
10
integer
number:
****\n"