高级语言程序设计第6章考参答案.doc

上传人:wux****ua 文档编号:9576795 上传时间:2020-04-06 格式:DOC 页数:9 大小:147KB
返回 下载 相关 举报
高级语言程序设计第6章考参答案.doc_第1页
第1页 / 共9页
高级语言程序设计第6章考参答案.doc_第2页
第2页 / 共9页
高级语言程序设计第6章考参答案.doc_第3页
第3页 / 共9页
点击查看更多>>
资源描述
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.hf1(int a, int b)/*求最大公约数*/ int x,i; for(i=1;i=(ab)?a:b);i=a*b;i+) if(i%a=0&i%b=0) x=i; break; printf(n最小公倍数为: %dn,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);运行结果:请输入两个数:a=4b=16最大公约数为:4最小公倍数为:162.编写一个函数,其功能是对于给定的一个时间数(秒为单位),以“时:分:秒”的格式输出。参考程序代码:#include print_time(long second)int hour,minute;hour=(second/3600)%24;second%=3600;minute=second/60;second%=60;printf(%d:%d%ldn, hour, minute, second);void main()long s;printf(请输入秒数:);scanf(%ld, &s);print_time(s);运行结果:请输入秒数:72782:1:183.编写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的信息。分析:素数指的是是指该数除了1和本身,不再有其他因子。考虑到完全平方数的因素,只需要考察从2到该数的平方根这个区间,如果该区间中没有因子,则该数是素数,否则不是素数。参考程序代码:#include stdio.h#include math.hf(int x)/*判断x是否素数*/int i,sign=0;for(i=2;i1)注意选择好合适的参数类型和返回值类型。在main()函数中,输入下列三组数据:(a)n=0,x=7;(b)n=1,x=2;(c)n=3,x=4求出相应的函数值。分析:该函数为分段函数,当n1时为勒让德多项式,可以利用函数的递归调用求其值。参考程序代码:#include stdio.hdouble 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与nn);printf(x=);scanf(%lf,&x);printf(nn=);scanf(%d,&n);printf(函数值为: %lfn,pn(x,n);运行结果:请输入参数x与n:x=7n=0函数值为:1.000000请输入参数x与n:x=2n=1函数值为:2.000000请输入参数x与n:x=4n=3函数值为:2.8333336.写一个函数,输入一个十六进制数,输出相应的十进制数。参考程序代码:#include stdio.h #include string.h int translat(char c) if(c=0) return c-0; if(c=a & c=A & c=F) return c-55; return -1;/其他字符返回-1 int Htoi(char *str) int i,stat,n=0; int length=strlen(str); if(length=0) return 0; for(i=0;i=0) n=n*16+stat; return n; void main() char Hex20; printf(输入十六进制数:); gets(Hex); printf(相应的十进制数为:%d,Htoi(Hex); 运行结果:输入十六进制数:10相应的十进制数为:167.输入一个整数,将它逆序输出。要求定义并调用函数reverse(number),它的功能是返回number的逆序数。例如,reverse(12345)的返回值是54321。参考程序代码:#include reverse(int number)printf(n该数的逆序数为:n);while (number 0) /num大于0就不停循环 printf(%d,number%10); /输出个位 number /= 10; /除以10 printf(n);void main() int num; printf(n请输入您的数据:n);scanf(%d,&num); reverse(num);运行结果: 请输入您的数据:12345该数的逆序数为:543218.编写一个函数,找出任一整数的全部因子。参考程序代码:#include stdio.hf(int x)/*找出x的所有因子*/int i;printf(n该数的所有因子为:n);for(i=1;i=x;i+)if(x%i=0)printf( %d, i);void main()int a;printf(请输入一个整数:n);scanf(%d,&a);f(a);运行结果:请输入一个整数:10该数的所有因子为:1 2 5 109.用递归法将一个整数n转换成字符串。例如,输入483,应输出字符串“483”。N的位数不确定,可以是任意位数的整数。参考程序代码:#include stdio.hvoid convert(n)int n;int i;if(i=n/10)!=0)convert(i);putchar(n%10+0);main()int number;printf(n输入整数:);scanf(%d,&number);printf(n输出是:);if(number=3天数days加1输出天数参考程序代码:#include stdio.hstatic int day_tab13=0,31,28,31,30,31,30,31,31,30,31,30,31;int sum_day(month,day)int month,day;int i;for(i=1;i=3)days=days+1;printf(是该年的%d天.n,days);运行结果:请输入日期(年,月,日)2008,11,262008年11月26日是该年的331天。11.编写一个C语言源程序,里面只有一句代码“int a=0”或“int a; a=0;”(注意:源文件中没有main函数)。分别进行编译看能不能通过编译,并思考这是为什么。提示:C语言以函数为程序的基本单位。分析:大家已经知道C程序由函数组成。换而言之,C语言是一种面向过程的编程语言,过程亦即函数。这意味着C程序中的任何有效语句必须放在函数中。int a; a=0;中的第一个语句为声明语句,可以通过编译;但是第二个语句为赋值语句,因此其不能通过编译;int a=0;为声明,并非有效语句,因此可以通过编译。12汉诺塔问题是一个古老的数学问题。经典汉诺塔问题是三柱的,它起源于印度。意思是:第一个柱(A柱)上有n个碟子,从底向上碟子大小依次减小,目标是通过第二个柱(B柱)把所有碟子移到第三个柱(C柱)上,但不能把大的碟子放到小的碟子上面。提示:解决三柱汉诺塔问题的经典算法是递归算法,先考虑把A柱上面的n-1个碟子通过C柱移到B柱上,然后把A柱剩下的一个碟子移到C柱上,最后用三柱汉诺塔经典算法把B柱上所有的碟子(n-1)个通过A柱移到C柱上。参考程序代码:int count=0;void move(char a,char c) printf(No%-3d:%c-%c ,count,a,c); if(count%5=0) printf(n);void Hanoi( int n, char a, char b, char c) if (n=1) count+; move(a,c); else Hanoi(n-1,a,c,b); count+; move(a,c); Hanoi(n-1,b,a,c); void main() int n; char a=A,b=B,c=C; clrscr(); printf(Plsease input n:); scanf(%d,&n); Hanoi(n,a,b,c); getch();9
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 考试试卷


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!