实验三

// 一元二次方程求解
// 重复执行, 直到按Ctrl+Z结束
// 
#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;
}

// 生成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;
}

//find out prime between 100 and 200
#include <stdio.h> 
#include <math.h>
int main(){
    int x,m,a=0;
     for(x=100;x<=200;++x){
         
    m=2;
    for(m=2;m<x;m++) {
    if(x%m==0)
    {break;    }}
    if(m>=x)
    {
    printf("%d ",x);a++;
    if(a%5==0)
    printf("\n");}
    }
    printf("100~200内有%d个素数",a);
return 0;

}

//ex3-5
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main(){
    float s,sum;
    int n;

    printf("Enter n(1~10):");
        
    while(scanf("%d",&n)!=EOF){
        
        sum=0.0,s=1.0;
        int i;
        
    for(i=1;i<=n;++i){
        s=s*i;
        sum=sum+pow(-1,i-1.0)/s;
    }
    printf("n=%d,sum=%lf\n",n,sum);
    printf("Enter n(1~10):\n");}
    return 0;
}

#include<stdio.h> 
int main(){
    long s,m,n;
    float i;
    i=0.1; 
    n=0; 
    printf("Enter a number:");
    scanf("%ld",&s);
    
    while(s!=0){ 
        m=s%10;
        s=s/10;
        if(m%2!=0){
            i=10*i;
            n=n+m*i;
        }    
    }
    
    printf("%d",n);
    return 0;
}

 

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

文字部分:关于实验四,通过%2!=0可以简单判断一个数字是否为奇数,我们只需要在每一个循环中除以10取余数,即可取出所有的奇数。为了确保输出数字高位仍然在高位,我将赋值了一个i=1,每循环一次,i左移一位,并且乘给取得的数字,最后所得的数字实际是一个sum,这个算法我个人觉得并不好,但暂时还想不到更好的。

五.实验总结:

实验一主要是格式符号和循环的理解

实验二是一个新知识点,以时间为种子的随机函数。实验六以此为基础展开。

实验三、四、五是一个循环的应用。在算法方面三四五相差无几,但是五需要注意变量的位置,把它们放入循环当中而不是提前定义,每一次循环中变量需要重新开始。

还有五中我EOF的判断出现了问题,这是个很小但是很重要的细节。

实验六我的程序非常差,非常繁琐,我马上腾出时间改进。

posted @ 2020-11-15 17:16  海科龚天昊  阅读(146)  评论(0编辑  收藏  举报