rabbitmq(三)- 交換機
阿新 • • 發佈:2020-11-18
實驗任務一
//一元二次方程求解 #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; }
實驗任務二
//生成n個0~9之間的隨機整數 #include<stdio.h> #include<stdlib.h> #include<time.h> #define N 5 //要幾個就把5改成幾 int main() { int x,n; srand(time(0)); //以當前系統時間作為隨機種子 ? n=0; do{ n++; x=rand()%10; //生成一個0~9之間的隨機整數 printf("%3d",x); } while(n<N); printf("\n"); return 0; }
實驗任務三
//輸出100-200的素數及個數 #include<stdio.h> #include <math.h> int main(){ int m,n,i,a; m=0; for(n=101;n<200;n++){ a=sqrt(1.0*n); for(i=2;i<=a;i++) { if(n%i==0)break; } if(i>a){ printf("%5d",n); m++; if(m%5==0){ printf("\n"); } } } printf("\n100~200之間共有%d個素數",m); return 0; }
實驗任務四
演算法思路:
1.如何取出數位上的奇數:通過取餘得到最低位的數字,再通過整除得到去掉最低位的數,再判斷,餘數取餘是否為0,若為0,則該餘數是偶數,不符合,繼續迴圈,若不為0,則餘數為奇數,符合,取出。
2.如何確保構成的新數中,原先的高位仍在高位,原先的低位仍在低位:每次迴圈後將得到的餘數加上上次餘數(初始值為0)的10倍,得到完整的所有奇陣列成的數,但此時最高位與最低位的位置是反的,所以再做一次倒序處理即可得到高位仍在高位、低位仍在低位的奇數。
#include<stdio.h> int main(){ long m,s,t=0,a,b=0; printf("Enter a number:"); while(scanf("%ld",&s)!=EOF){ while(s!=0){ m=s%10; s=s/10; if((m%2)!=0){ t=t*10+m; } } while(t!=0){ a=t%10; t=t/10; b=b*10+a; } printf("new number is:%ld\n",b); b=0; printf("\nEnter a number:"); } return 0; }
實驗任務五
#include<stdio.h> #include<math.h> unsigned f(unsigned x); int main(){ unsigned n,a=2; double b=2.0; float s=1.0; printf("Enter n(1~10):"); while(scanf("%u",&n)!=EOF){ while(a<=n){ s=s+(pow(-1.0,b-1.0)/f(a)); a++,b++; } printf("n = %u, s= %f\n",n,s); a=2,b=2.0; printf("\nEnter n(1~10):"); } return 0; } unsigned f(unsigned x){ unsigned y; if(x==1) y=1; else y=x*f(x-1); return y; }
這個用了函式的使用,但是隻有個別輸出的結果正確,想知道哪裡出了錯T T.
#include<stdio.h> int main(){ int m=-1,n,a; double s=1.0,b=1.0; printf("Enter n(1~10):"); while(scanf("%d",&n)!=EOF){ a=2; while(a<=n){ b=a*b; s=s+m*1.0/b; a++; m=-m; } printf("n = %d,s = %lf\n",n,s); printf("\nEnter n(1~10):"); } return 0; }
n=10的輸出結果還是和文件裡給的例項不一樣,想知道是程式出錯了還是因為小數的疊加的出現誤差。
實驗任務六
#include<stdio.h> #include<stdlib.h> #include<time.h> int main(){ int x,ans,n=1; srand(time(0)); x=rand()%31; printf("猜猜2020年12月哪一天會是你的lucky day\n開始嘍,你有三次機會,猜吧(1~31):"); scanf("%d",&ans); for(;n<3;n++){ if(ans>x){ printf("\n你猜的日期晚了,lucky day悄悄溜到前面啦\n再猜(1~31):"); scanf("%d",&ans); } else if(ans<x){ printf("\n你猜的日期早了,lucky day還沒到呢\n再猜(1~31):"); scanf("%d",&ans); } else{ printf("\n猜對啦!"); break; } } if(n>=3) printf("\n次數用完啦,偷偷告訴你:12月,你的lucky day是%d號",x); return 0; }
試了很多次,最後一次判斷還是無法輸出,保留疑問。
實驗總結:
通過本次實驗,對迴圈和條件語句的應用更加熟悉了一些,但是還是有自己都繞不出來的部分,有參考其他同學的程式碼,再自己進行編寫和改變,還有一些實驗目的沒有達到,希望可以再改進。