实验3

任务1

#include<stdio.h>
#include<math.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>
int main(){
    int a,b=0,i,n,c=200;
    for(a=101;a<=c;a++){
        for(i=2;i<a;){
            if(a%i==0){
                break;
            }
            else if(a==i+1&&a%i!=0){
                    b++;
                    printf("%d ",a);
                    i++;
                }
            else{i++;
                }
            
        }
    }
printf("101~200之间共有%d个素数",b);
return 0;
}

实验4

#include<stdio.h>
#include<math.h>
int main(){
    long s,t,i=1;

    printf("Enter a number: "); 
    while(scanf("%ld",&s)!=EOF){
    long n,a,b,c,d=0,e,f=0,g;
        g=s;
            printf("new number is: ");
        for(i=1;i<=g;){
            i*=10;                        
                b=s;
                s=s/10;
                c=b%10;                
                
                if(c%2!=0){                        
                    e=c*pow(10,d);    
                    d=d+1;
                    f=f+e;        
                }
            
        }

    printf("%d\n",f);

    printf("Enter a new number: ");}
    
return 0;} 

算法说明:

1.设置变量i,使得当程序检查到最后一位时循环结束

2.设置变量b,s,c,因为一个数字%10结果必定为个位上的数字,所以通过先循环/10再%10可依次得到各个位上的数字,使得c表达为各个位上数字,再用if判断是否为奇数

3.同由2.,程序是从一个数字的最右位开始运算执行,所以高位依旧高位,低位依旧低位

4.设置变量e,d,f,使e=c*10^d,f来存储最后结果值

任务5

#include<stdio.h>
int main(){
    int n,i;
    double s;
    printf("Enter n(1~10): ");
    while(scanf("%d",&n)!=EOF){
    double a,b,c=1.0,d,e=0;
        for(i=1;i<=n;i++){
            c=1.0; 
            if(i%2==0){
                a=-1.0;
            }
            else{
                a=1.0;
            }
            
            for(b=i*1.0;b>0;b--){
                c=c*b;                
            }
            d=a/c;                     
            e=e+d;
        }
    printf("n = %d, s= %f\n",n,e);
    printf("Enter n(1~10): ");}
return 0;
}

任务6

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

int main(){
    int n;
    srand(time(NULL));
    int a=rand()%32;
    printf("猜猜2020年12月哪一天会是你的luck day\n开始咯,你有三次机会,猜吧(1~31): ");
    for(int i=1;i<=3;i++){
    scanf("%d",&n);{
        if(n>a){ printf("你猜的日期晚了,luck day悄悄溜到前面啦\n");}
        if(n<a){ printf("你猜的日期早了,luck day还没到呢\n");}
        if(n==a){ printf("恭喜你猜对了你的幸运日期!!!");
        break;}
    }
}
if(n!=a){printf("次数用完啦。偷偷告诉你:12月,你的luck day是%d号",a);}
return 0;
}

实验总结:

熟悉了srand与rand函数的用法,可使取值范围在一个固定区域内

尚存问题:

任务四中当输入数过大时,结果会出错

posted @ 2020-11-16 17:06  hedraler  阅读(114)  评论(1)    收藏  举报