实验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(b*b-4*a*c))/(2*a);
          x2=(-b-sqrt(b*b-4*a*c))/(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.运行结果截图:

 

二、试验任务二

1.源代码:

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

2.运行结果截图:

 

 

三、实验任务三

1.源代码:

#include<stdio.h>
#include<math.h> 
int main()
{
    int x,y,i,sum=0;
    for(x=101;x<=200;x++)
    {
        y=sqrt(x);
        for(i=2;i<=y;i++)
        if(x%i==0)
        break;
        if(i>y)
        {
            sum++;
            printf("%4d",x);
        }
      
    }
    printf("\n共有%d个素数\n",sum);
    return 0;
 } 

2.运行结果截图:

 

 

四、实验任务四

1.源代码:

#include<stdio.h>
#include<math.h>
int main()
{
    long int n,m,x=0,y=0;
    scanf("%ld",&n);
    printf("Enter a number:%ld\n",n);
    while(n!=0)
    {
        m=n%10;
        if(m%2==1)
       {
           x=x+m*pow(10,y);
           y++;
       }
        n=n/10;
}
    printf("The new number is:%ld",x);
    return 0;
}

 

2.运行结果:

 

 

五、实验任务五

1.源代码:

 

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main()
{
    int n,i;
    float s,z,p;
    printf("Enter a number(1~10):\n");
    while (scanf("%d",&n)!=EOF)
    {
        s=0.0,p=1.0,z=0.0;
        for(i=1;i<=n;i++)
        {
            p=p*i;
            z=pow(-1,i-1.0)*(1/p);
            s=s+z;
        }
    printf("当n=%d时,s=%f\n",n,s);
    printf("Enter a number(1~10):\n");
}
    return 0;
}

 

 

2.运行结果截图:

 

六、实验任务六

1.源代码:

 

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

 

 

 

2.运行结果截图:

 

 

七、实验总结

通过本次实验,我主要有以下几点收获:

1.熟悉了怎么让一个程序一直运行下去,直到按control+z使程序终止。

2.对算法处理逻辑有了更深入的认识,例如实验五中为了使程序正确运行,有一些语句应该放在循环内,而有一些语句应该放在循环外,不能随意乱放,否则会导致程序运行的结果不正确。

3.更加熟悉地掌握了求素数的算法逻辑以及while,for,if...else...,if等语句的使用。

 

不足之处:

1.不太明白生成随机数的原理,比如试验任务6中生成1~31之间的随机数不明白怎么去写这个代码。

2.对算法的逻辑结构还不够清楚,容易出现混乱。

posted @ 2020-11-16 22:34  张慧春  阅读(138)  评论(2编辑  收藏  举报