ex1.cpp
不能,由函数体可知,函数有多个根,而函数只能返回一个值给main函数。
ex2_1.cpp
//利用局部变量static变量计算阶乘 #include<stdio.h> long long fac(int n); //函数声明 int main(){ int i, n; printf("Enter n:"); scanf("%d", &n); for(i=1;i<=n;i++) printf("%d! = %lld\n", i, fac(i)); return 0; } //函数定义 long long fac(int n){ static long long p=1; p=p*n; return p; }

ex2_2.cpp
//练习:局部static变量特性 #include<stdio.h> int func(int, int); int main(){ int k=4, m=1, p1, p2; p1= func(k, m); p2= func(k, m); printf("%d,%d", p1, p2); return 0; } int func(int a, int b){ static int m=0, i=2; i +=m+1; m =i+a+b; return (m); }
总结:局部变量static特性:定义的变量只进行一次赋值,例如:上述func函数第一次被调用时,static对变量m和i进行赋值,第一次调用结束,第二次被调用时,m和i不会再次被赋值,而是保留上次函数调用结束时的值。
ex3.cpp
//寻找两个整数之间的所有素数(包括这两个整数),把结果保存在数组bb中,函数返回素数的个数。 //例如,输入6和21,则输出为:7 11 13 17 19。 #include<stdio.h> #define N 1000 int fun(int n, int m, int bb[N]){ int i, j, k=0, flag; for(j=n;j<=m;j++){ flag=1; for(i=2;i<j;i++) if(j%i==0){ flag=0; break; } if(flag==1) bb[k++]=j; } return k; } int main(){ int n=0, m=0, i, k, bb[N]; scanf("%d", &n); scanf("%d", &m); for(i=0;i<m-n;i++) bb[i]=0; k=fun(n, m, bb); for(i=0;i<k;i++) printf("%4d", bb[i]); return 0; }



ex4.cpp
#include<stdio.h> long long fun(int n); //函数声明 int main(){ int n; long long f; while(scanf("%d", &n) !=EOF){ f=fun(n); //函数调用 printf("n=%d, f=%lld\n", n, f); } return 0; } long long fun(int n){ long long result=1; if(n==0) result=0; else result= 2*fun(n-1)+1; return result; }

ex5.cpp
#include<stdio.h> void draw(int n, char symbol); #include<stdio.h> int main(){ int n, symbol; while(scanf("%d %c", &n, &symbol) !=EOF){ draw(n, symbol); //函数调用 printf("\n"); } return 0; } void draw(int n, char symbol){ int a, b, c=1; for(;n>0;c++,n--){ for(a=n-1;a>0;a--){ printf(" "); } for(b=(2*c-1);b>0;b--){ printf("%c", symbol); } printf("\n"); } }

总结:光有理论知识是远远不够的,没有实操神马都是浮云(这是考试裂开的总结)!!!
浙公网安备 33010602011771号