1. 程式人生 > 實用技巧 >實驗3 C語言分支語句和迴圈語句程式設計應用

實驗3 C語言分支語句和迴圈語句程式設計應用

任務1

//一元二次方程求解
//重複執行,直到按ctrl+z結束
//
#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; //生成一個0~9之間的隨機整數 printf("%3d",x); }while(n<N); printf("\n"); return 0; }

任務3

//輸出101~200之間所有的素數,並輸出這一區間內素數個數
#include <stdio.h>
#include <math.h>


int main(){
    
    int x,i,res,flag;
    
    x=101,res=0;
    
    while(x<=199){
        flag = 1;
        i = 2;
        while(i<=sqrt(x)){
            if(x%i == 0){
                flag = 0;
                i = sqrt(x);
            }
            i++;
        }
        
        if(flag == 1){
            res++;
            printf("%5d",x);
            if(res%5 == 0){
                printf("\n");
            }
        }
        x++,x++;
    }
    
    printf("\n");
    printf("101~200之間共有%d個素數",res);
    
    return 0;
} 

任務4

演算法思路

利用取餘的方法%10取出數X的最後一位,然後判斷取出的數是否為奇數,放在變數i

每次取餘後都要通過整除的方法/10,去掉取出的數字後形成新的數X

將取出的變數i乘以相應的位數,再加上之前的結果res,形成新的結果

相應的位置可以通過變數d來控制,d初始值為1,每次當有符合條件的i時,d就乘以10,也就相當於升了一位

#include<stdio.h>

int main(){
    int x;
    int i,res,d;
    
    printf("Enter a number:  ");
    

    while(scanf("%d",&x)!=EOF){
        
        res=0;
        d=1;
        i = x % 10;
        while(x>0){
            if(i % 2!=0){
                res = i*d+res;
                d=d*10;
            }
            x=x/10;
            i = x % 10;
        }
        
    printf("%d\n",res);
    printf("Enter a number:  ") ;
    }
    
    return 0;
}

任務5

#include<stdio.h>

int main(){
    int fz,fm,n,i;
    float s;
    
    printf("Enter n(1~10): ");

    while(scanf("%d",&n)!=EOF){
        fm=1;
        fz=1;
        s=0;
        i=1;
        while(i<=n){
            fm=fm*i;
            s=s+fz/(double)fm;
            fz=-fz;
            i++;
        }
    
    printf("n = %d, s = %f\n",n,s);
    printf("Enter n(1~10): ");
                
    }
    

    return 0;
}

任務6

#include<stdio.h>
#include<stdlib.h> 

int main(){
    int i,x;
    int n;
    
    printf("猜猜2020年12月哪一天會是你的lucky day\n");
    printf("開始嘍,你有三次機會,猜吧(1~31): ");
    x=rand()%30+1;

    i=1;
    while(i<=3){
        scanf("%d",&n);
        if(x==n){
            printf("\n");
            printf("恭喜你,猜中了!");
            i=5; 
        }
        else{
            if(x<n){
                printf("\n");
                printf("你猜的日期晚了,lucky day悄悄溜到前面啦\n");
            }
            else{
                printf("\n");
                printf("你猜的日期早了,lucky day還沒到呢\n");
            }
            printf("再猜(1~31):");
            i++;
        }
                
    }
    
    if(i==4) {
        printf("次數用完啦。偷偷告訴你:12月,你的lucky day是%d號",x);
    }
    
    return 0;
}