第三次作业

一、实验结论

1、实验任务1:生成N个0~99之间的随机整数并打印输出

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 5

int main() 
{
    int x, n; 
    
    srand(time(0));
    
    for(n=1; n<=N; n++) 
    {
        x = rand() % 100;
        printf("%3d", x);
    }
    
    printf("\n");
    
    return 0;
} 

结果如图:

 

2、实验任务2:编写一个简单的猜日期程序

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

int main() 
{
    int x, y,n=1; 
    printf("猜猜2021年5月哪一天会是你的luck day\n\n") ; 
    
    srand(time(0)); 
    x = rand() % 31+1;
    
    printf("\n开始喽,你有三次机会,猜吧:");
    scanf("%d",&y);
    
    for(n=3;n>0;n--)
    {
        if(y==x)
        {
            printf("\n猜对啦!5月,你的luck day是%d号!",x);
            n=0; 
        } 
        else if(y>x)
            printf("\n你猜的日子晚了,luck day悄悄溜到前面啦\n"); 
        else
            printf("\n你猜的日子早了,luck day还没到呢\n"); 
        
        if(n!=1&&n!=0)
        {
            printf("\n再猜:");
            scanf("%d",&y); 
        }
        else if(n==1)
            printf("\n\n次数用完啦。偷偷告诉你:5月,你的luck day是%d号",x);
    }
    return 0;
} 

结果如图:

 

3、实验任务3:长整型数依次取奇数

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

int main()
{
    long int x,y;
    int m,i;
    
    printf("Enter a number: ");
    
    while(scanf("%d", &x) != EOF) 
    {
        x,y=0;
        m,i=1;
    
        do
        {
            m=x%10;
            x=x/10;
            if(m%2!=0)
            {
                y=y+m*i;
                i=i*10;
            }
        }
        while(x!=0);
        
        printf("new number is: %ld\n",y);
        
        printf("\nEnter a number: ");
    }
    
    return 0;    
}

结果如图:

 

4、实验任务4:求解一元二次方程

#include <math.h>
#include <stdio.h>

void solve(double a, double b, double c);
int main() {
    double a, b, c;
    
    printf("Enter a, b, c: ");
    while(scanf("%lf%lf%lf", &a, &b, &c) != EOF) 
    {
        solve(a, b, c);
        printf("Enter a, b, c: ");
    }
    
    return 0;
}


void solve(double a, double b, double c) 
{
    double x1, x2;
    double delta, real, imag;
    
    if(a == 0) 
        printf("not quadratic equation.\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", x1, x2);
        }
        else 
        {
            real = -b/(2*a);
            imag = sqrt(-delta) / (2*a);
            printf("x1 = %.2f + %.2fi, x2 = %.2f - %.2fi\n", real, imag, real, imag);
        }
    }    
}

结果如图:

回答问题如下:

否。return无法同时返回两个值。

 

5、实验任务5:计算数列求和

#include <stdio.h>
#include <math.h>

double fun(int n);
int main() 
{
    int n;
    double s;
    
    printf("Enter n(1~10): ");
    while(scanf("%d", &n) != EOF) 
    {
        s = fun(n);
        printf("n = %d, s= %f\n\n", n, s);
        printf("Enter n(1~10): ");
    }
    
    return 0;
}


double fun(int n) 
{
    int i;
    double x=0,y=1;
    
    
    for(i=1;i<=n;i++)
    {
        x=x+pow(-1,i-1)/y;
        y=y*(i+1);
    }
    return x;
}

结果如图:

 

6、实验任务6:输出101~200之间的所有素数

#include <stdio.h>
#include <math.h>

int isPrime(int n);
int main()
{
    int n,m=0;
    
    for(n=101;n<=200;n++)
    {
        if(isPrime(n))
        {
            printf("%4d",n);
            m++;
            if(m%5==0)
                printf("\n");
        }
    }
    
    printf("\n\n 100~200之间的素数个数为:%d",m);
    
    return 0;
}

int isPrime(int n)
{
    int i;
    for(i=2;i<=sqrt(n);i++)
        if(n%i==0)
            return 0;
        
        return 1;
}

结果如下:

 

 

二、实验总结

1、掌握了生成任意随机整数的方法;

2、明确了return的返回问题。

posted @ 2021-04-15 22:27  还不读书?  阅读(70)  评论(2编辑  收藏  举报