实验三
// 一元二次方程求解 // 重复执行, 直到按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的判断出现了问题,这是个很小但是很重要的细节。
实验六我的程序非常差,非常繁琐,我马上腾出时间改进。