资源描述:
《第七章c程序设计书面作业 马楠》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Error!Referencesourcenotfound.[马楠]201305220214C程序设计第七章习题已经做过1、分析并写出下面程序的运行结果。#include“stdio.h”intSquare(inti){returni*i;}intmain(){inti=0;i=Square(i);for(;i<3;i++){staticinti=1;i+=Square(i);printf(“%d,”,i);}printf(“%d”,i);return0;}2,6,42,3改编过的第一题:1.分析并写出下面程序的运行结果。#include"stdio.h"intmain()
2、{intSquare(inti);inti=0;i=Square(i);for(;i<3;i++){staticinti=1;i=i+Square(i);printf("%d,",i);}printf("%d",i);return0;}intSquare(inti){returni*i;}?????2、用全局变量模拟编程显示一个数字式时钟,然后上机验证。#includeinthour,minute,second;/*定义全局变量*/voidupdate(){seconde++;if(second==60){secone=0;①minute++;}if(mi
3、nute==60②){minute=0;hour++;}if(hour==24)hour=0;③;}voiddisplay(){printf(“%2d,%2d%2dr”④“,hour,minute,second);}voiddelay(){intt;for(t=0;t<10000000;t++);/*用循环体为空语句的循环实现延时*/}intmain(){inti;hour=minute=second=0⑤;for(i=0;i<10000000;i++){/*利用循环结构控制时钟运行的时间*/update();/*更新时、分、秒显示值*/display();/*显示时、分、秒
4、*/delay();/*模拟延迟时间为1秒*/}return0;}已经做过3、用函数编程计算两整数的最大值,在主函数中调用该函数计算并输出从键盘输入的两整数的最大值。1.#includemain(){intmax(intx,inty);inta,b,c;printf("请输入两个整数");scanf("%d,%d",&a,&b);c=max(a,b);printf("%d",c);}intmax(intx,inty){intk;k=x>y?x:y;return(k);}2.#includemain(){intmax(intx,inty);
5、inta,b;printf("请输入两个整数:");scanf("%d,%d",&a,&b);printf("%d",max(a,b));}intmax(intx,inty){return(x?y:x,y);}(输入两个数显示的是后面的数字)4、请分别用以下三种方法编写计算最大公约数的函数Gcd(),在主函数中调用该函数计算并输出从键盘任意输入的两整数的取大公约数。(1)穷举法。由于a和b的最大公约数不可能比a和b中的较小都还大,否则一定不能整除它,因此,先找出a和b中的较小者,然后从该数开始逐次减1尝试每种可能,即检验该数到1的所有整数,第一个满足公约数条件的值就是a和b
6、的最大公约数(2)欧几里得算法,也称辗转相除法。对正整数a和b,连续进行求余运算,直到余数为0为止,此时非0的除数就是最大公约数。程序为:#includeintmain(){intgy(intx,inty);inta,b;printf("Impurttwonumbers:");scanf("%d,%d",&a,&b);printf("最大公约数是:%d",gy(a,b));return0;}intgy(intx,inty){intr;while(x%y!=0){r=x%y;x=y;y=r;}returny;}(3)递归方法。对正整数a和b,当a>b时,若a
7、中含有与b相同的公约数,则a中去掉b后剩余的部分a-b中也应含有与b相同的公约数,对a-b和b计算公约数就相当于对a和b计算公约数。反复使用最大公约数的如下3条性质,直到a和b相等为止,这时a或b就是它们的取大公约数。性质1如果a>b,则a和b与a-b和b的最大公约数相同,即Gcd(a,b)=Gcd(a-b,b).性质2如果b>a,则a和b与a和b-a的最大公约数相同,即Gcd(a,b)=Gcd(a,b-a).性质3如果a=b,则a和b的最大公约数与a值和b值相同,即Gcd(a,b)=a=b