实验任务3
#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; }
#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; printf("p = %lld\n",p); p=p*n; return p; }
#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\n",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的变量的特性是使局部变量变成了静态的局部变量。
#include<stdio.h> void printSymbol(int n,char symbol); int main() { int n; char symbol; while(scanf("%d %c",&n,&symbol)!=EOF) { printSymbol(n,symbol); printf("\n"); } return 0; }
#include<stdio.h> void printSymbol(int n,char symbol); int main() { int n; char symbol; while(scanf("%d %c",&n,&symbol)!=EOF) { printSymbol(n,symbol); printf("\n"); } return 0; } void printSymbol(int n,char symbol) { if(n==1) printf("%c",symbol); else { printf("%c",symbol); printSymbol(n-1,symbol); } }
递归更好。递归能让问题变得更加简单。
#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); } } long long fun(int n) { if(n==1) return 1; else return(2*fun(n-1)+1); }
#include<stdio.h> #include<math.h> int isPrime(int n); int main() { int i,n,m; m=0; for(n=101;n<=200;n++) { i=isPrime(n); if(i==0) { printf("%4d",n); m++; if(m%10==0) printf("\n"); } } printf("\n"); printf("101-200之间的素数共有 %d",m); return 0; } int isPrime(int n) { int i; for(i=2;i<=sqrt(n);i++) { if(n%i==0) { return 0; break; } } return 1; }
#include<stdio.h> long fun(long s); int main() { long s,t; printf("Enter a number :"); while(scanf("%ld",&s)!=EOF) { t = fun(s); printf("new number is: %ld\n\n",t); printf("Enter a number :"); } return 0; } long fun(long s) { int m,num,i; i=1; num = 0; while(s>0) { m=s%10; if(m%2==1) { num = num + m*i; i=i*10; } s=s/10; } return num; }
#include <stdio.h> #include<math.h> double fun(int n);//计算结果的函数 long long fac(int x);//计算阶乘的函数 int main() { int n; double s; printf("Enter n(1~10): "); while (scanf("%d", &n) != EOF) { s = fun(n); printf("n = %d, s= %f\n\n", n, s); printf("Enter n(1~10): "); } return 0; } double fun(int n)//结果函数 { int m,i,k; m=0; k=1; double result; result = 0; if(n==1) return result = 1; else { for(i=1;i<=n;i++) { result=result+pow(-1,m)*(1.0/fac(k)); m++; k++; } return result; } } long long fac(int x)//阶乘函数 { if(x==1) return 1; else return x*fac(x-1); }
懂得递归思路,初步会用递归思想解决问题。能够进一步懂得函数的声明与调用。