实验3
一、实验任务一
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(b*b-4*a*c))/(2*a); x2=(-b-sqrt(b*b-4*a*c))/(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.运行结果截图:
二、试验任务二
1.源代码:
#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; }
2.运行结果截图:
三、实验任务三
1.源代码:
#include<stdio.h> #include<math.h> int main() { int x,y,i,sum=0; for(x=101;x<=200;x++) { y=sqrt(x); for(i=2;i<=y;i++) if(x%i==0) break; if(i>y) { sum++; printf("%4d",x); } } printf("\n共有%d个素数\n",sum); return 0; }
2.运行结果截图:
四、实验任务四
1.源代码:
#include<stdio.h> #include<math.h> int main() { long int n,m,x=0,y=0; scanf("%ld",&n); printf("Enter a number:%ld\n",n); while(n!=0) { m=n%10; if(m%2==1) { x=x+m*pow(10,y); y++; } n=n/10; } printf("The new number is:%ld",x); return 0; }
2.运行结果:
五、实验任务五
1.源代码:
#include<stdio.h> #include<math.h> #include<stdlib.h> int main() { int n,i; float s,z,p; printf("Enter a number(1~10):\n"); while (scanf("%d",&n)!=EOF) { s=0.0,p=1.0,z=0.0; for(i=1;i<=n;i++) { p=p*i; z=pow(-1,i-1.0)*(1/p); s=s+z; } printf("当n=%d时,s=%f\n",n,s); printf("Enter a number(1~10):\n"); } return 0; }
2.运行结果截图:
六、实验任务六
1.源代码:
#include<stdio.h> #include<time.h> #include<stdlib.h> int main() { int x,n,i; srand(time(NULL)); x = rand()%31 + 1; printf("猜猜2020年12月的哪一天会是你的luck day?\n"); printf("开始咯,你有三次机会,猜吧(1~31):"); scanf("%d",&n); for(i=1;i<3;i++) { if(n==x) { printf("恭喜你猜中啦!你真是幸运呢。\n"); break; } else if(n>x) { printf("你猜的日期晚了,luck day悄悄溜到前面去啦.再猜:\n"); scanf("%d",&n); } else { printf("你猜的日子早了,luck day还没到呢~再猜:\n"); scanf("%d",&n); } } printf("次数用完啦!偷偷告诉你,12月你的luck day是%d",x); return 0; }
2.运行结果截图:
七、实验总结
通过本次实验,我主要有以下几点收获:
1.熟悉了怎么让一个程序一直运行下去,直到按control+z使程序终止。
2.对算法处理逻辑有了更深入的认识,例如实验五中为了使程序正确运行,有一些语句应该放在循环内,而有一些语句应该放在循环外,不能随意乱放,否则会导致程序运行的结果不正确。
3.更加熟悉地掌握了求素数的算法逻辑以及while,for,if...else...,if等语句的使用。
不足之处:
1.不太明白生成随机数的原理,比如试验任务6中生成1~31之间的随机数不明白怎么去写这个代码。
2.对算法的逻辑结构还不够清楚,容易出现混乱。