实验三

#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;  // 生成一个0~99之间的随机整数
        printf("%3d", x);
    }
    
    printf("\n");
    
    return 0;
} 

 

 

#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() % 32;  // 生成一个0~99之间的随机整数
        printf("%3d", x);
    }
    
    printf("\n");
    
    return 0;
} 

 

task2

 

//猜猜你的Lucky Day
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
    int x,i;
    int ans1;
    srand(time(0));
    x = rand()%(31)+1;
    printf("猜猜2021年5月哪一天会是你的lucky day\n开始啦,你将有三次机会,猜叭(1~31):");
    scanf("%d",&ans1);
    
    for(i=1;i<3;i++)
    {
        if(x>ans1)
        {
            printf("早了,你的幸运日还没到呢\n再猜:");
            scanf("%d",&ans1);
        }
        if(x<ans1)
        {
            printf("晚了,你的幸运日已经过了\n再猜:");
            scanf("%d",&ans1);
        }
        if(x==ans1)
        {
            printf("猜中了\n");
            break;
        }        
    }
    if(i==3)
        printf("次数用完了。5月,你的lucky day是%d号",x);
 return 0;
 }

 

 task3

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

int main(){
    long s;
    int n;
    printf("Enter a number: ");
    while(scanf("%ld",&s)!=EOF){
    double ans=0,i=0;
    while(s/10.0!=0){
        n=s%10;
        s/=10;
        if(n%2!=0){
            ans += n * pow(10.0,i);
            i++;
        }
    }
    printf("new number is:%.0lf\n",ans);
    printf("Enter a number: ");
  }
    return 0;
}

 

 task4

// 一元二次方程求解(函数实现方式)
// 重复执行, 直到按下Ctrl+Z结束 

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

// 函数定义
// 功能:求解一元二次方程,打印输出结果
// 形式参数:a,b,c为一元二次方程系数 
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语句。

 

task5

 

#include <stdio.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) {
     double k,sign=1,s1=0;//定义一个控制符号的变量
    for (int i = 1; i<=n ; i++){
         k=1;
         for (int j = 1; j<=i ; j++) {
             k*=j;//求阶乘
         }
         s1+=sign/k;
         sign*=(-1);//每一循环改变符号
     }
     return s1; 
}

 

 task6

#include <stdio.h>
int isPrime(int x);
int main(){
    int k=0,p=1,i;
    for(i=101;i<=200;i++){
        if(isPrime(i)){
            printf("%4d",i);
            k++;
            p++;
        }
        if(p%6==0){
            printf("\n");
            p=1;
        }
    }
    printf("\n100-200之间素数个数为: %d",k);
    return 0;
}
int isPrime(int x){
    int n,k;
    if(x<2)
     k=0;
    for(n=2;n<=x;n++){
        if(x%n==0){
            k=0;
            break;
        }        
    }
    if(n>=x)  
     k=1;
     return k;
}

 

 

此部分较难,知识点多,需多加整理

posted @ 2021-04-15 17:07  张诗若  阅读(70)  评论(2)    收藏  举报