c语言第七章课后题.doc
《c语言第七章课后题.doc》由会员分享,可在线阅读,更多相关《c语言第七章课后题.doc(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一、第七章习题7(p184-p187),7.1-7.7全做,7.8-7.12中选做两道,要求给出程序执行结果。7-1、#include int Square(int i)return i*i;int main()int i=0;i=Square(i);for(; i3;i+)static int i=1;i+=Square(i);printf(%d,i);printf(%dn,i);return 0;结果:结果分析:开头定义square()函数 功能:计算一个数的平方 入口参数:整数x 返回值:i*i主函数:i=0;进入循环: 静态变量i=1; i=i+square(1)=2; 输出 2; 循
2、环变量i=0+1=1; i=13 成立 静态变量i=i+square(2)=2+4=6; 输出 6; 循环变量i=i+1=2; I=23 成立 静态变量(i保持原值)i=6; i=i+square(6)=6+36=42; 输出42; 循环变量i=i+1=3; I=33不成立退出循环 输出循环变量i=37-2、#include int hour,minute,second; /*定义全局变量*/void update()second +;if(second = 60)second=0;minute+;if(minute=60)minute=0;hour+;if(hour=24)hour=0;vo
3、id display()printf(%d : %d : %dn,hour,minute,second);void delay()int t;for (t=0;t100000000;t+); /*用循环体为空语句的循环实现延时*/int main()int i;second=0;for(i=0;i1000000;i+)update(); /*利用循环控制时钟运行时间*/display(); /*显示时,分,秒*/delay(); /*模一尺时间为1秒*/return 0;结果:自动跳出时间7-3、#include /*max()函数 功能:找两个数的最大值 入口参数:两个整数a,b 返回值:两
4、数的最大值*/int max(int a, int b)int max=0;max = (ab)?a:b;return max;void main()int x=0; /*输入的两个数x,y*/int y=0;int m=0; /*m用于接收max()函数的返回值*/printf(input two integer numbers:);scanf(%d,%d,&x,&y);m=max(x,y);printf(the max number is %dn,m);结果:7-4#include /*LCM()函数 功能:计算两个整数的最小公倍数 入口参数:两整数a,b 返回值:最小公倍数*/int L
5、CM(int a,int b)int i=0; /*循环变量*/int min=0; /*循环寻找范围的最小值*/int max=0; /*循环寻找范围的最大值*/min = (ab)?a:b; /*最小值为a,b中的最大值*/max = a*b; /*最大值为a*b*/for (i=min; i=max; i+) if(i%a=0 & i%b=0)return i;void main()int x; /*键盘输入两整数x,y*/int y; int m; /*m用于接收LCM()函数的返回值*/do /*输入整数的合法数据*/printf(输入两个正整数:);scanf(%d,%d,&x,&
6、y);while(x0 | y0);m = LCM(x,y);printf(最小公倍数为:%dn,m);结果:7-5、#include long fact(int n);void main()int i=0; /*循环变量*/int n=0; /*输入的值*/int m=0; /*接收fact()函数的返回值*/doprintf(input n:);scanf(%d,&n);while(n0);for(i=1; i=n; i+)m=fact(i);printf(%d!=%ldn,i,m);/*fact函数 功能:计算n! 入口参数:n 返回值:n!*/long fact(int n)stati
7、c long p=1;p=p*n;return p;结果:7-6、#include long fact(int n);void main()int i=0; /*循环变量*/int n=0; /*输入的值*/int m=0; /*接收fact()函数的返回值*/long s=0; /*所求最终结果*/doprintf(input n:);scanf(%d,&n);while(n0);for(i=1; i=n; i+)m=fact(i);s=s+m;printf(1!+2!+.+n! = %ldn,s);/*fact函数 功能:计算n! 入口参数:n 返回值:n!*/long fact(int
8、n)static long p=1;p=p*n;return p;结果:7-7、(1)穷举法:#include int Gcd(int a,int b);void main()int x=0; /*键盘键入两个数*/int y=0;int m=0; /*接收Gcd的返回值*/doprintf(输入两个正数:);scanf(%d,%d,&x,&y);while(x0 | y0);m = Gcd(x,y);printf(最大公约数:%dn,m);/*Gcd()函数 功能:计算两数的最大公约数 入口参数:两个正数a,b 返回值:最大公约数*/int Gcd(int a,int b)int i=0;i
9、nt t=0;t=(a=1; i-)if(a%i=0 & b%i=0)return i;结果:(2)欧几里得算法#include int Gcd(int a,int b);void main()int x=0; /*键盘键入两个数*/int y=0;int m=0; /*接收Gcd的返回值*/doprintf(输入两个正数:);scanf(%d,%d,&x,&y);while(x0 | y0);m = Gcd(x,y);printf(最大公约数:%dn,m);/*Gcd()函数 功能:计算两数的最大公约数 入口参数:两个正数a,b 返回值:最大公约数*/int Gcd(int a,int b)
10、int r=0;r=a%b;if(r!=0)doa=b;b=r;r=a%b;while(r!=0);return b;结果:(3)递归方法:#include int Gcd(int a,int b);void main()int x=0; /*键盘键入两个数*/int y=0;int m=0; /*接收Gcd的返回值*/doprintf(输入两个正数:);scanf(%d,%d,&x,&y);while(x0 | yb) return Gcd(a-b,b);elsereturn Gcd(b,b-a);结果:7-9、#include /*old()函数 功能:计算第i个人的年龄 入口参数:人数i
11、 返回值:年龄*/int old(int i)if(i=1)return 10;elsereturn old(i-1)+2;void main()int x=5; /*人数为5*/int y=0; /*接收old()函数的返回值*/y=old(x);printf(第五个人的年龄为:%dn,y);结果:7-10、#include void main()int flag=0; /*设置标志变量*/int a=0; /*百位*/int b=0; /*十位*/int c=0; /*个位*/int m=0; /*代表acb*/int n=0; /*代表bac*/int p=0; /*代表bca*/int
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 第七 课后
限制150内