設計模式——七大原則
阿新 • • 發佈:2020-11-19
實驗任務1
#include<math.h> #include<stdio.h> int main(){ float a,b,c,x1,x2; float delta,real,imag; printf("Enter a,b,c: "); while(scanf("%f%f%f",&a,&b,&c)!=EOF){ if(a==0) printf("not quadratic equation.\n\n"); else{ delta = b*b-4*a*c; if(delta>=0){ x1 = (-b+sqrt(delta)/(2*a)); x2 = (-b-sqrt(delta)/(2*a)); printf("x1=%.2f,x2=%.2f\n\n",x1,x2); } else{ real=-b/(2*a); imag=sqrt(delta)/(2*a); printf("x1=%.2f+%.2fi,x2=%.2f-%.2fi\n\n",real,imag,real,imag); } } printf("Enter a,b,c: "); } return 0; }
實驗任務2
//生成N個0~9之間的隨機整數,並列印輸出 #include<stdio.h> #include<stdlib.h> #include<time.h> #define N 5 int main(){ int x,n; srand(time(0)); n=0; do{ n++; x = rand()%10; printf("%3d",x); }while(n<N); printf("\n"); return 0; }
實驗任務3
//輸出101~200之間的所有素數,並輸出素數的個數 #include<stdio.h> #include<stdlib.h> #include<math.h> int main(){ int i,m,n,k=0; for(n=101;n<=200;n++){ m=sqrt(n); for(i=2;i<=m;i++) if(n%i==0)break; if(i>m){ printf("%6d",n); k++; if(k%5==0) printf("\n"); } } printf("\n"); printf("101~200之間共有%d個素數",k); return 0; }
實驗任務4
#include<stdio.h> int main(){ long s; int m,t,x=0,y,z; t=0; z=0; printf("Enter a number:"); while(scanf("%ld",&s)!=EOF){ while(s>=1){ m=s%10; s=s/10; if(m%2!=0){ t=t*10+m; } } while(t!=0){ x=t%10; t=t/10; z=z*10+x; } printf("New number is:%d\n",z); printf("Enter a number:"); t=0; z=0; } return 0; }
演算法思路:該數對10取餘得個位數,判斷其是否為奇數;該數除10,得到除去個位數的一個數字,再重複;
得到的第一個奇數乘十再加上第二個奇數;
此時得到的新數字是逆序,再逆序使它原先的高位仍在高位,原先的低位仍在低位。
實驗任務5
#include<stdio.h> int isprime(int k); int main(){ int n,i,m=1,t=1; double sum=0.0; printf("Enter n(1~10):"); while(scanf("%d",&n)!=EOF) { for(i=1;i<=n;i++){ sum+=t*1.0/isprime(i); t=-t; } printf("\n"); printf("n = %d\n",n); printf("s = %1f\n",sum); sum=0.0; printf("Enter n(1~10):"); } return 0; } int isprime(int k) { int i,p=1; for(i=1;i<=k;i++){ p=p*i; } return p; }
實驗任務6
#include<stdio.h> #include<stdlib.h> #include<time.h> int main(){ int x,t,n,ret=0; srand(time(0)); t=rand()%30+1; x=0; printf("猜猜2020年12月哪一天會是你的luck day"); printf("\n"); printf("開始嘍,你有三次機會,猜吧(1~31):"); scanf("%d",&n); while(x<=3){ if(n>t){ printf("你猜的日期晚了,luck day悄悄溜到前面啦:)\n"); printf("再猜:"); scanf("%d",&n); x++; }else if(n<t){ printf("你猜的日期早了,luck day還沒到呢:)\n"); printf("再猜:"); scanf("%d",&n); x++; }else{ printf("Yes,it's your luck day:)\n"); ret=1; break; } } if(ret=0) printf("次數用完啦,偷偷告訴你:12月,你的luck day是%d號",t); return 0; }
實驗總結:
1.演算法很重要,是前提
2.應該多次執行,因為某些數字它對了,但其他的不一定對,還是會有錯誤