实验3

一、实验任务1

#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

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

 三、实验任务3

#include<stdio.h>
#include<stdlib.h>
int main(){
    long int Sam,yu=0;
    int m,i=1;
    printf("Enter a number:\n");
    scanf("%ld",&Sam);
    do{
        m=Sam%10;
        Sam=Sam/10;
        if(m%2!=0){
            yu=yu+m*i;
            i=i*10;
        }
        
    }while(Sam!=0);
    
    printf("new number is:%ld\n",yu);
    system("pause");
    
    return 0;    
}

四、实验任务4

1、代码及截图

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

void solve(double a,double b,double c);

int main(){
    double a,b,c;//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);
             }
      }
}

      2、思考说明:否,return无法同时返回x1,x2的值。

五、实验任务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 s=0,k=1;
    
    
    for(i=1;i<=n;i++){
        s=s+pow(-1,i-1)/k;
        k=k*(i+1);//求阶乘 
    } 
    return s;
}

六、实验任务6

 

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

int isprime(int n);
int main()
{
    int i,point=0,sum=0;
    for(i=100;i<=200;i++)
    {
        if(isprime(i))
        {
           printf("%4d",i);
           point++;
           sum++;            //计素数的个数 
           if(point%5==0)
               printf("\n");//控制每行5个数据 
        }
    } 
    
    printf("100~200的素数个数为:%d",sum);
    
    return 0;
}
int isprime(int n)
{
    int k;
    for(k=2;k<=sqrt(n);k++)
      if(n%k==0)
           return 0;
      return 1;
}

 

 

实验总结:1、实验6中返回值判断的问题,return1的位置,不同产生的效果也不同。有错的时候最好自己走一遍程序运行过程。

                  2、return只能返回一个值。

posted @ 2021-04-14 17:02  YLionAo  阅读(78)  评论(4)    收藏  举报