实验三

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

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

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main(){
    int x,y,z=0;
    for(y=101;y<=200;y++){
        for(x=2;x<=sqrt(y);x++){
            if(y%x==0)                
                break;
            }  
       if(x>sqrt(y)){ printf(
"%d ",y); z=z+1;
       if(z%5==0)
        printf("\n);
       } } printf(
"\n101~200之间共有%d个素数",z); return 0; }
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main(){
    int n,m,t=0;
    int d,l=0;
    printf("Enter a number: ");
    scanf("%d",&n);
    if(n<0){
        printf("输入错误\n");
        exit(0); 
    } 
    while(n!=0){
        m=n%10;
        n=n/10;
        if(m%2!=0){
            t=t*10+m;
            
        }        
    }
    while(t!=0){
        d=t%10;
        t=t/10;
        l=l*10+d;
    }
    printf("new number is:%d\n",l);
    
    return 0;
    
}

 思路:先分离出数字判断奇偶,再将位置倒过来,最后再次分离数字并将位置倒回去。

#include<stdio.h>
#include<math.h>
int main(){
    int n,t,k=0,z;
    double s=1.0,m;
    printf("Enter n(1~10):");
    scanf("%d",&n);
    for(t=2;t<=n;t++){
        m=1.0;
        for(z=1;z<=t;z++)
            m*=z;
        k=++k;
        s=s+pow(-1,k)*1/m;
    }
    printf("n = %d,s = %lf",n,s);
    return 0;
}

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

  

总结:了解了for的用法和生成伪随机数字的方法,分离数字的方法和将数字倒位的方法,算阶乘的方法。

问题:实验5仍可优化,exit(0)的用法不清楚,实验六必须输入四次才能得到答案。

for()中一定要有三个分号,代表有三个语句,第一个为赋值,第二个为关系,第三个为为赋值,都可省略,但分号不可省略,for(i=1,i<=3,i++)需运行三次且第一次为1。

算阶乘

 

posted @ 2020-11-20 12:22  salaheihei  阅读(91)  评论(1编辑  收藏  举报