实验3

EX1

#include <stdio.h>
#include <math.h>
int main(){
    float a,b,c,x1,x2;
    float delat,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{
            delat=b*b-4*a*c;
            
            if(delat>=0){
                x1=(-b+sqrt(delat))/(2*a);
                x2=(-b-sqrt(delat))/(2*a);
                printf("x1=%.2f,x2=%.2f\n\n",x1,x2);
            }
        else {
            real=-b/(2*a);
            imag=sqrt(-delat)/(2*a);
            printf("x1=%.2f+%.2fi,x2=%.2f-%.2fi\n\n",real,imag,real,imag);
        }
        }
    printf("Enter a,b,c:"); 
    }
    return 0;
}

循环中继续嵌套循环容易发生错误

EX2

#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;
    
}

EX3

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(){
    int i,m,n,k;
    for(n=101;(n<=200)&&(n>100);n++)
    {m=sqrt(n);
       for(i=2;i<=m;i++)
         if(n%i==0)break;
         if(i>m){
         printf("%d\n",n);
        k++;
         }
         }
         printf("素数一共有%d个\n",k);
        system("pause") ;
         return 0;
}

循环的嵌套容易发生错误,且对于变量赋值时,变量放置的位置会影响结果,在输入素数的同时还要计量次数,所以有一个循环的嵌套

ex4

#include <stdio.h>
int main(){
    int s,i,n,t;
    printf("Enter a number:");
    while(scanf("%d",&s)!=EOF){
        i=0;
        n=1;
        while(s!=0){
            t=s%10;
            if(t%2!=0){
            i=t*n+i;
            n=n*10;
        }
            s=s/10;
        }
            printf("new name is:%d\n",i);
            printf("Enter a number:")    ;
    }

    return 0;
}

EX5

先对s取余,令为t,再判断t%2!=0;如果不等于则输出,因为高位向低位,则每进行一次,对应i要“t”乘以10加上之前的i,而下一轮的s再除以10,s为整型,则s/10也为整型,要注意s/10放置的位置。

#include <stdio.h>
int main(){
    int k,n,m;
    double s,t;
    printf("Enter n(1~10):");
    while(scanf("%d",&n)!=EOF){
        t=1.0;
        k=1;
        m=1;
        s=0.0;
        while(k<=n){
           
            s=s+m/t;
            k++;
            m=-m;
            t=t*k;
            }
    printf("n=%d,s=%lf\n",n,s);
    printf("Enter n(1~10):");
    }

    return 0;
}

要注意是取int 还是double,

分母一直做阶乘,则需要循环进行;分子每一次循环会改变正负

EX6

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
    int x,n,k;
    srand(time(0));
    x=rand()%32;
    n=1;
    printf("猜猜2020年12月哪一天会是你的lucky day\n");
    printf("开始了,你有三次机会,猜吧(1~31):");
    scanf("%d",&k);
    while(n<3){
        if(k==x){
            printf("恭喜你,答对了");
            break; 
        }
        else if(k>x){
            printf("你猜的日期晚了,lucky day悄悄溜到前面去了:");
            scanf("%d",&k);
            n++; 
        }
        else if(k<x){
            printf("你猜的日期早了,lucky day还没到呢:");
            scanf("%d",&k);
            n++; 
        }
    
    }
        if(n=3){
        printf("次数用完了,偷偷告诉你,12月,你的lucky day 是%d号",x);}
    return 0;
}

总结:在第三章会感觉难度上了一个台阶,主要是循环语句的嵌套非常容易发生错误,一个变量赋值放错位置会影响整个实验的变化,整型和双精度型的选择同样有影响,最重要的是算法逻辑一定要弄清楚,代码才会输入正确。所以第三章最重要的是实践,为之后学习打好基础。

 

posted @ 2020-11-17 20:49  林深时见鹿xx  阅读(97)  评论(0编辑  收藏  举报