#include<stdio.h> #include<math.h> void solve(double a, double b, double c); int main(){ double a, b, c; printf("Enter a,b,c:"); while(scanf("%lf%lf%lf",&a, &b, &c)!=EOF){ solve(a, b, c); printf("Enter a, b, c:"); } return 0 ; } void solve(double a, double b, double c){ double x1,x2; double delta, real, imag; if(a == 0){ printf("not quadratic equation. "); } else { delta = b * b - 4 * a* c; if(delta>= 0){ x1 = (-b +sqrt(delta))/(a*2); x2 = (-b - sqrt(delta))/(a * 2); printf("x1 = %lf, x2 = %lf ",x1,x2); } else{ real = -b/(2*a); imag = sqrt(-delta) / (a * 2); printf("x1 = %f + %fi , x2 = %f - %fi ", real, imag, real); } } }
#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 ", i ,fac(i)); return 0; } long long fac(int n){ static long long p = 1; printf("%d:",n); p = p*n; return p; }
在20 到22 之间加入输出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 ",p1,p2);//输出结果应为,8,17 return 0; } int func(int a, int b){ static int m = 0,i = 2; i += m +1; m = i + a + b; return(m); }
#include<stdio.h> #include<math.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!=0) 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; }
#include<stdio.h> long long fun(int n); int main(){ int n; long long int f; while(scanf("%d",&n)!=EOF){ f = fun(n)-1; printf("n = %d, f = %lld ", n, f); } return 0; } long long fun(int n){ long long int f,t; if(n==1) f = 2; else{ f = 2 * fun(n-1); } return f; }
#include<stdio.h> void print(int a,char b); int main(){ int a; char b; while(scanf("%d %c",&a,&b)!=EOF){ print(a,b); } return 0; } void print(int a,char b){ int d = a; for(;a>0;a--){ int c = a-1; for(;c>0;c--) printf(" "); int e = 2*(d-a+1)-1; for(;e>0;e--) printf("%c",b); printf(" "); } }
实验一:因为二次函数的值经常有两个结果,所以无法用一个函数返回两个值,因此不能用返回值的方法。
实验二:static变量在每次函数调动完会保存,并且保存的为上一次的值;
实验四:1在原本设计算法的过程中,在定义fun函数时我选用了两个变量,t用递归计算2的n次方,f=t-1,最后返回f,但是因为我在这里运用了递归的思想,每一个t = 2 * fun(n-1)-1,中返回的都是f = 1所以导致结果不对,运用递归思想的时候一定要主要函数的返回值。
2运用递归的思想,该方程应该是2*fun(n-1)+1,表达的是第n次移盘子的次数为将n-1个盘子从A移到B,再将n从A移到C,再将n-1从B移到C,但是这个想法不能实现老师给的2的n次方减一的式子,所以我用fun来计算2的n次方并返回,在main函数中对返回值-1达到该式子的效果。