实验3ss

  • 2020 年 11 月 16 日
  • 筆記

1.实验任务1

#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

#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.实验任务3

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

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

4.实验任务4

#include <stdio.h>
int main(){
    long int s,t,b=0,c;
    int a;
    printf("Enter a number:");
    
    while(scanf("%ld",&s)!=EOF){
        
        for(;s>0;s/=10){
            a=s%10;
            if(a%2!=0)
            b=b*10+a;
        }

        
        for(t=0;b>0;b/=10){
            c=b%10;
            t=t*10+c;
        }

        
    printf("new number is:%d\n",t);
    printf("\nEnter a number:");
    }
    return 0;
} 

       这个实验有些难度,需要完成输出奇数,我采用先将其奇数逆序,在将各位数换序,使其正序输出。而且还要实现能够循环输入,这个花了我很长时间,通过不断的调整语句以及顺序,终于我将这个程序实现了,是的,不断调整,终于还是有出路,虽然比别的同学慢一点,但最终还是实现了。之间出了两次问题,一次时无法循环输入,还有一次时没有更新t的值。希望在学习编程的路上,自己可以一步一个脚印,越走越远。嘻嘻嘻😊😄……

5.实验任务5

#include <stdio.h>
int main(){
    int n,i=1;
    double s=0,a=(-1);
    printf("Enter n(1~10):");
        
    while(scanf("%d",&n)!=EOF){
        
        for(;i<=n;i++){
            a=a*i;
            a=a*(-1);
            s=s+1/a;
        }
    printf("n = %d, s= %lf\n",n,s);
    printf("\nEnter n(1~10):");        
    }
    return 0;
 } 

       这个实验对语句的顺序要求比较高,之前做了很多次答案都错了,出的问题是,循环输入前,没有重置s的值。

6.实验任务6

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