9.java設計模式之組合模式
阿新 • • 發佈:2020-11-18
任務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
#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
#include<stdio.h> #include<math.h> int main(){ int x=1, a=0, j=0; for(int n=101;n<=200;n++){ for(int i=2;i<=sqrt(n);i++){ if(n % i == 0){ x=0; break; } else continue; } if(x==1)j+=1; if(x==1 && (j-1)%5!=0){ printf("%6d",n); a++; } else if(x==1 && (j-1)%5==0 && j!=1){ printf("\n"); printf("%6d",n); a++; } else if(x==1 && (j-1)%5==0 && j==1){ printf("%6d",n); a++; } x=1; } printf("\n"); printf("101~200之間共有%d個素數",a); return 0; }
任務4
#include <stdio.h> #include <math.h> long long chang(long long i){ long long len=1; if(i<=0) return 0; else{ for(;i/10>0;i/=10) len++; return len; } } int main(){ long long num,len,i,a; printf("Enter a number:"); while(scanf("%lld",&num)!=EOF){ long long j=0; for(len=chang(num);len>=0;len--){ i=pow(10,len); a=num/i; num=num%i; if(a%2!=0) j=j*10+a; } printf("New number is:%d\n",j); printf("\n"); printf("Enter a number:"); } return 0; }
先計算輸入數字的長度:求這個數字一共有多少位,再利用這位數結合10的指數運算,依次把輸入數字每一位上的數字打出來,判斷是否為奇數,是奇數就輸出。
任務5
#include<stdio.h> int a(int n){ int all; if(n<=0) return -1; else if(n==1){ all = 1; return all; } else{ all = n*a(n-1); return all; } } int main(){ int n,x=1; double sum=0,y; printf("Enter n(1`10):"); while(scanf("%d",&n)!=EOF){ for(int i=1;i<=n;i++){ x=a(i); y=1.0/x; x=1; if(i%2==0) sum = sum + -1 * y; if(i%2!=0) sum = sum + y; } printf("n = %d, s = %lf\n",n,sum); printf("\n"); sum=0; printf("Enter n(1`10):"); } return 0; }
任務6
#include<stdio.h> #include<stdlib.h> #include<time.h> int main(){ int day,guess,i=3; srand(time(0)); day=rand()%31+1; printf("猜猜2020年12月哪一天會是你的luck day\n"); printf("開始嘍,你有三次機會,猜吧:"); for(;i>=1;i--){ scanf("%d",&guess); if(guess==day){ printf("\n"); printf("Bingo!\n"); i=10; break; } else if(guess>day){ printf("\n"); printf("你猜的日期晚了,luck day悄悄溜到前面啦\n"); if(i!=1) printf("再猜:"); continue; } else{ printf("\n"); printf("你猜的日期早了,luck day還沒到呢\n"); if(i!=1) printf("再猜:"); continue; } } if(i==0){ printf("\n"); printf("次數用完啦,偷偷告訴你:12月,你的luck day是%d號。\n",day); } return 0; }
實驗總結:
演算法有簡單和複雜的區別,未接觸函式之前,自己只能用比較複雜的方法設計演算法,學了函式之後,終於可以把程式中的很多操作儲存到另一個函式當中,
需要的時候直接呼叫即可,如此程式碼就變得簡潔許多。同時,再面對比較複雜的一些演算法的時候,自己可能無能為力,再怎麼看還是發現不了錯誤。這個時候,最
好的辦法就是向老師和同學交流求助。所以說,接下來還是要多多學習才好。