一、第七章习题7(p184-p187),全做,中选做两道,要求给出程序执行结果。 7-1、 #include <> int Square(int i) { return i*i; } int main() { int i=0; i=Square(i); for(; i<3;i++) { static int i=1; i+=Square(i); printf(\ } printf(\ return 0; } 结果: 结果分析: 开头定义square()函数 功能:计算一个数的平方 入口参数:整数x 返回值:i*i 主函数:i=0;进入循环: 静态变量i=1; i=i+square(1)=2; 输出 2; 循环变量i=0+1=1; i=1<3 成立 静态变量i=i+square(2)=2+4=6; 输出 6; 循环变量i=i+1=2; I=2<3 成立 静态变量(i保持原值)i=6; i=i+square(6)=6+36=42; 输出42; 循环变量i=i+1=3; I=3<3不成立退出循环 输出循环变量i=3 7-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; } void display() { printf(\%d : %d : %d\\n\ } void delay() { int t; for (t=0;t<0;t++); /*用循环体为空语句的循环实现延时*/ } int main() { int i; second=0; for(i=0;i<1000000;i++) { update(); /*利用循环控制时钟运行时间*/ display(); /*显示时,分,秒*/ delay(); /*模一尺时间为1秒*/ } return 0; } 结果: 自动跳出时间 7-3、 #include <> /*max()函数 功能:找两个数的最大值 入口参数:两个整数a,b 返回值:两数的最大值 */ int max(int a, int b) { int max=0; max = (a>b)a:b; return max; } void main() { int x=0; /*输入的两个数x,y*/ int y=0; int m=0; /*m用于接收max()函数的返回值*/ printf(\ scanf(\ m=max(x,y); printf(\ } 结果: 7-4 #include <> /*LCM()函数 功能:计算两个整数的最小公倍数 入口参数:两整数a,b 返回值:最小公倍数 */ int LCM(int a,int b) { int i=0; /*循环变量*/ int min=0; /*循环寻找范围的最小值*/ int max=0; /*循环寻找范围的最大值*/ min = (a>b)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(\ }while(x<0 || y<0); m = LCM(x,y); printf(\最小公倍数为:%d\\n\ } 结果: 7-5、 #include <> long fact(int n); void main() { int i=0; /*循环变量*/ int n=0; /*输入的值*/ int m=0; /*接收fact()函数的返回值*/ do{ printf(\ scanf(\ }while(n<0); for(i=1; i<=n; i++) { m=fact(i); printf(\