实验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;
}

 

 

 

posted @ 2020-11-13 21:33  李常超是我心头好~  阅读(143)  评论(1编辑  收藏  举报