实验3 袁祖晴

1.实验任务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.实验任务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;
        printf("%3d",x);
    }while(n<N);
    
    printf("\n");
    
    return 0;
} 

上面程序的运行截图如下:(分别记为结果1、2)

 

 

 

 

 删去srand函数后,运行两次(时间间隔足够长)结果如下:(分别记为结果三四)

 

 

 

 3、实验任务3

//输出101~200之间所有素数,并输出这一区间内素数个数。
#include<stdio.h>

int main(){
    int x,n=0,i;
    
    for(x=101;x<=200;x++)
    {
        for(i=2;i<x;i++)
        {
            if(x%i==0)
            {
                break;
            }
            else if(i==x-1)
            {
                printf("%6d",x);
                n++;
                if(n%5==0)
                {
                    printf("\n");
                }
            
            }
        }
    
    }
    printf("\n");
    printf("101~200之间共有%d个素数.",n);
    
    return 0;
} 

 

 4、实验任务4

 

//取s每一数位上的奇数来构成一个新数,高位仍在高位,低位仍在低位。
#include<stdio.h>
#include<math.h>
 
int main(){
    int a,b;    
    long s;
    double y;
    
    printf("Enter a number:");
    
    while(scanf("%ld",&s)!=EOF)
    {
      printf("new number is:");
      int n=1,i=0;
      do
      {
        a=s%10;
        b=s/10;
        
        if(a%2==1)
        {
            n=n+1;
            y=pow(10.0,(n-2));
            i=a*(int)y+i;
        }
        s=b;
      }while(b>0);
      printf("%d",i);
      printf("\n");
      printf("\n");
      printf("Enter a number:");
    }
      
    return 0;
}  

思路:先将输入的数对十取余得a,除以十得b,a对2取余,得1则最低位上为奇数,然后用pow函数实现将a*10的0次方赋值给i,然后令s取b的值,重复上述算法过程,便可输出由奇数组成的高位在高位,低位在低位的数值。

 5、实验任务5

//输出计算结果s
#include<stdio.h>
unsigned int getfactorial(unsigned int i);
int main()
{
    unsigned int x,fac;
    int n;
    float a,s;
    
    printf("Enter n(1~10):");
    
    while(scanf("%d",&n)!=EOF)
    {
      for(x=1;x<=n;x++)
      {
          fac=getfactorial(x);
          a=1.0/fac;
          if(x%2==0)
          {
              s=(-1)*a+s;
          }
          else
          {
              s=a+s;
          }
      }
      printf("n=%d,s=%.6lf",n,s);
      s=0;
      printf("\n");
      printf("\n");
      printf("Enter n(1~10):");
    }
    
    return 0;
} 
unsigned int getfactorial(unsigned int i)
{
    unsigned int result;
    if(i==1)
      result=1;
    else
      result=i*getfactorial(i-1);
    return result;
}

 

 6.实验任务6

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

 

不明白哪里错了。。

posted @ 2020-11-20 13:02  袁祖晴  阅读(86)  评论(0)    收藏  举报