1. 程式人生 > 實用技巧 >rabbitmq(三)- 交換機

rabbitmq(三)- 交換機

實驗任務一

//一元二次方程求解
#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;
}

試了很多次,最後一次判斷還是無法輸出,保留疑問。

實驗總結:

通過本次實驗,對迴圈和條件語句的應用更加熟悉了一些,但是還是有自己都繞不出來的部分,有參考其他同學的程式碼,再自己進行編寫和改變,還有一些實驗目的沒有達到,希望可以再改進。