实验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(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-%.2f\n\n", real, imag, real, imag);
            }
        }
        printf("Enter a,b,c: ");
    }
    return 0;
} 

 

 

实验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;
} 

 

 

实验3:

#include<stdio.h>
#include<math.h>
int main(){
    int n,i,k,j;
    
    for(n=101;n<=200;n++){
        for(i=2;i<=sqrt(n);++i){
          if(n%i==0){break;}
        }  
        
        if(i>sqrt(n)){
             printf("%4d",n);
             k=k+1;
             if(k%5==0){
                 printf("\n");
                 } 
            }

    }
      
    
    printf("\n101~200之间的素数有%d个",k);
        
    return 0;
    
} 

 

 

实验4:

#include<stdio.h>
int main(){
    int s,p,k,t;
    k=1;
    t=0;
    
    printf("Enter a number: ");
    
    while(scanf("%d",&s)!=EOF){
        while(s>=10){
            p=s%10;
            s=s/10;
            
            if(p%2!=0){
                t=t+p*k;
                k=k*10;
            }
        }
        
        if (s%2!=0&&s!=1) {
            t=t+p*k;
        }
        
        if(s==1){
            t=t+k;
        }
        
        printf("new number is:%d\n",t);
        printf("\nEnter a number: ") ;
        t=0;
        k=1;
    
    }
    
    return 0;
}

    算法思路:首先输入s后取s除以10的余数得到各位的数p,将个位数除以2判断是否为奇数,如果是,就作为新数的个位数,另外定义一个变量k作为新数的位数,新数t=t+p*k,再将k*10,然后重复将s对10取余数除10得到s的每一位数,判断并且给t

 

 

实验5:

#include<stdio.h>
#include<math.h>
int main(){
    int n,i,k;
    float p,s,sum;
    p=1.0;
    k=1;
    
    printf("Enter n(1~10): ");
    
    while(scanf("%d",&n)!=EOF){
     for(i=1;i<=n;i++){
         p=p*i; 
         s=1/p;
         k++;
         
         if(k%2!=0){
             sum=sum-s;
        }
        else{
            sum=sum+s;
        }
        
        }
     
     p=1.0;
     k=1; 
     printf("\nn=%d,sum=%f\n\n",n,sum);
     printf("\nEnter n(1~10): ");
     sum=0.0;    
     }
    
    return 0;
} 

 

 

实验6:

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

int main(){
    int n,date,a;
    
    printf("猜猜2020年12月哪一天会是你的lucky day~\n\n");
    printf("开始喽,你有三次机会,猜吧: ");
    scanf("%d",&a);

    srand(time(0));
    date=rand()%31+1;

    for(n=1;n<=2;n++){
        if(a<date){
            printf("\n你猜的日期早了,lucky day还没到呢\n");
        }
        if(a>date){
            printf("你猜的晚了,lucky day悄悄溜到前面啦\n");
        }
        if(a==date){
            break;
        }
        
        printf("\n再猜: ");
        scanf("%d",&a);
    }
    
    if(a!=date){
       printf("\n次数用完啦。偷偷告诉你,12月你的lucky day是:%d",date);
    }
    else{
        printf("\n恭喜你猜对了,12月你的lucky day是:%d",date);
    }
    
    return 0;
}

 

 

实验总结:

我觉得这次实验的难度在自己设计算法上,大体上能写出来但是有些细节还是没有考虑清楚,就像实验6一开始最后输出想用次数等于3时候输出次数用完了,但是很巧的是有次我刚好在第三次猜对了日期,就发现了这个bug,所以说好好考虑自己的程序到底严谨与否非常重要。还有就是要注意循环后如果继续下一次循环有些数字需要清零,一开始实验中碰到第一次计算是对的,后面几次计算出错也不知道是怎么回事,对着算法看了半天也不知道错在哪儿了,头都要秃了,朋友告诉我干脆每计算一次就输出一个值最终好歹是发现了错误。c语言学习,任重而道远啊......

posted on 2020-11-18 20:24  魏梦如  阅读(171)  评论(0)    收藏  举报