⊙讲 变量的存储类型 带参数的宏定义 数组 请大家及时消化我课上讲的内容,并举一反三,模仿未讲过 的例题多写程序。 如果说学习C语言有捷径的话:那就是多读程序,多写程序
第9讲 变量的存储类型 带参数的宏定义 数组 •请大家及时消化我课上讲的内容,并举一反三,模仿未讲过 的例题多写程序。 •如果说学习C语言有捷径的话:那就是多读程序,多写程序
作业答案-1 5.6 double s(float x, int n [if(n==ll) return x else return S(x, n-1)+x*x: 1、将# include < conio . h>改为 windows h;将 closer(:改为 system(CLs”) cIrscro是TC中的清屏函数,VC中没有,但Vc中 般不需要。 2、1相当于(ong)1 2
2 作业答案-1 ▪ 5.6 double S(float x, int n) {if(n==1L) return x; else return S(x,n-1)+x*x; } •1、将#include<conio.h>改为windows.h;将clrscr();改为 system(“CLS”);clrscr()是TC中的清屏函数,VC中没有,但VC中 一般不需要。 •2、1L相当于(long)1
习题5.12 问题的关键是如何将n的问题化解为n-1 的问题(即反方向求解问题)。 根据分析,写出如下的数学函数: x n=1 S( s(x, n-1)+pow(x, n) n=1 double s(float x, int n) if(n==1) return x 》e|se return S(, n-1)+pow(x, n): }/若函数定义为foa,会有类型不一致的警告*
3 习题5.12 ▪ 问题的关键是如何将n的问题化解为n-1 的问题(即反方向求解问题)。 ▪ 根据分析,写出如下的数学函数: − + = = = ( , 1) ( , ) ! 1 1 ( , ) s x n pow x n n x n s x n double S(float x, int n) {if(n==1) return x; else return S(x,n-1)+pow(x,n); }/*若函数定义为float,会有类型不一致的警告*/
#include<stdio. h 切忌: 将递归函数的内容写至主函数中; 将通归中的语句放至循环中 在递归函数中写s(x,n)=S(x,n-1)+pow(x,n) wnn Please puT s s=S(, n) scam(“%f,‰,&8prm("ns(%f,%)=%fw”,x,n,s) s=S(x, n: prnf(nS(%f%d)=% double s( double x,intn)用递推求解 [double sum=0; int i double s( double x,, int for(=-1<=n++)递推要用循环语句实现吻/ if(n=:1) return x sum+=pow(,i) return sum else return S(x, n-1)+pow(x, n) 递归要通过函数的依次调用实现*
4 #include<stdio.h> #include<math.h> double S(float x, int n); void main() { double x,s; int n; printf(“please input x,n:\n”); scanf(“%lf,%d”,&x,&n); s=S(x,n); printf(“\nS(%lf,%d)=%lf\n”,x,n,s); } double S(double x, int n) {if(n==1) return x; else return S(x,n-1)+pow(x,n); /*递归要通过函数的依次调用实现*/ } 习题5.12程序 #include<stdio.h> #include<math.h> double S(float x, int n); void main() { double x,s; int n; printf(“please input x,n:\n”); scanf(“%lf,%d”,&x,&n); s=S(x,n); printf(“\nS(%lf,%d)=%lf\n”,x,n,s); } double S(double x, int n)/*用递推求解*/ {double sum=0; int i; for(i=1;i<=n;i++)/*递推要用循环语句实现*/ sum+=pow(x,i); return sum; } 切忌: 将递归函数的内容写至主函数中; 将递归中的语句放至循环中; 在递归函数中写s(x,n)=S(x,n-1)+pow(x,n);
另一个具有“记忆性”的变 量类型:静态变量( static) 般的内部变量 在函数退出后失效,再次进入函数,变量 值重新初始化 静态变量 在变量类型前面用 static修饰 static int i 变量存在静态存储区,当函数结束时,内 存空间不被释放,因此,变量的值可以保 存到下次进入函数,即变量具有记忆功能
5 另一个具有“记忆性”的变 量类型:静态变量(static) ▪ 一般的内部变量 ▪ 在函数退出后失效,再次进入函数,变量 值重新初始化 ▪ 静态变量 ▪ 在变量类型前面用static修饰 ▪ static int i; ▪ 变量存在静态存储区,当函数结束时,内 存空间不被释放,因此,变量的值可以保 存到下次进入函数,即变量具有记忆功能