- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
([高级语言程序设计第6章参考答案
1.6.3习题解答
编程题
1.写两个函数,分别求两个整数的最大公约数和最小公倍数,用主调函数调用这两个函数,并输出结果。两个整数由键盘输入。
分析:
求两个数a和b的最大公约数:
设这个数为x,则x一定小于等于a和b中的较小者min(a,b)。在区间[1, min(a,b)]中能找到的最后一个同时被a和b整除的那个数,就是a和b的最大公约数x。
求两个数a和b的最小公倍数:
设这个数为x,则x一定大于等于a和b中的较大者max(a,b),而小于等于a*b。在区间[max(a,b), a*b ]中找到的第一个能同时整除a和b的那个数,就是a和b的最小公倍数x。
参考程序代码:
#include stdio.h
f1(int a, int b)/*求最大公约数*/
{
int x,i;
for(i=1;i=(a=b?a:b);i++)
{
if(a%i==0b%i==0)
{
x=i;
}
}
printf(\n最大公约数为: %d\n,x);
}
f2(int a, int b)/*求最小公倍数*/
{
int i,x;
for(i=((ab)?a:b);i=a*b;i++)
{
if(i%a==0i%b==0)
{
x=i;
break;
}
}
printf(\n最小公倍数为: %d\n,x);
}
void main()
{
int a,b;
printf(\n请输入两个数:\n);
printf(a=);scanf(%d, a);
printf(b=);scanf(%d, b);
f1(a, b);
f2(a, b);
}
运行结果:
2.编写一个函数,其功能是对于给定的一个时间数(秒为单位),以“时:分:秒”的格式输出。
参考程序代码:
#include stdio.h
print_time(long second)
{
int hour,minute;
hour=(second/3600)%24;
second%=3600;
minute=second/60;
second%=60;
printf(%d:%d%ld\n, hour, minute, second);
}
void main()
{
long s;
printf(请输入秒数:);
scanf(%ld, s);
print_time(s);
}
运行结果:
3.编写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的信息。
分析:
素数指的是是指该数除了1和本身,不再有其他因子。考虑到完全平方数的因素,只需要考察从2到该数的平方根这个区间,如果该区间中没有因子,则该数是素数,否则不是素数。
参考程序代码:
#include stdio.h
#include math.h
f(int x)/*判断x是否素数*/
{
int i,sign=0;;
for(i=2;i=(int)sqrt(x);i++)
{
if(x%i==0)
{
++sign;
break;
}
}
if(sign!=0)
printf(\n该数不是素数\n);
else
printf(\n该数是素数\n);
}
void main()
{
int a;
printf(请输入一个整数:\n);
scanf(%d,a);
f(a);
}
运行结果:
4. C语言中在函数之间进行数据传递的方法除了通过返回值和全局变量外,还可以采用哪种方式?请以求两个数中的较大者为例,分别编程实现。
分析:
函数之间传递数据的方法一般有三种方式:
通过返回值
通过全局变量
通过函数调用的实参
代码请自行实现。
5.用递归算法求下列函数的值。
注意选择好合适的参数类型和返回值类型。在main()函数中,输入下列三组数据:
(a)n=0,x=7; (b)n=1,x=2; (c)n=3,x=4求出相应的函数值。
分析:
该函数为分段函数,当n1时为勒让德多项式,可以利用函数的递归调用求其值。
参考程序代码:
#include stdio.h
double pn(double x, int n)
{
if(n==0) return 1;
if(n==1) return x;
return 1.0*((2*n-1)*x-pn(x,n-1)-(n-1)*pn(x,n-2))/n;
}
main()
{
double pn(double x,int n);
double x;
int n;
printf(\n请输入参数x与n\n);
prin
文档评论(0)