实验3 袁祖晴
1.实验任务1
//一元二次方程求解 //重复执行,直到按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; }

2.实验任务2
//生成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; printf("%3d",x); }while(n<N); printf("\n"); return 0; }
上面程序的运行截图如下:(分别记为结果1、2)


删去srand函数后,运行两次(时间间隔足够长)结果如下:(分别记为结果三四)


3、实验任务3
//输出101~200之间所有素数,并输出这一区间内素数个数。 #include<stdio.h> int main(){ int x,n=0,i; for(x=101;x<=200;x++) { for(i=2;i<x;i++) { if(x%i==0) { break; } else if(i==x-1) { printf("%6d",x); n++; if(n%5==0) { printf("\n"); } } } } printf("\n"); printf("101~200之间共有%d个素数.",n); return 0; }

4、实验任务4
//取s每一数位上的奇数来构成一个新数,高位仍在高位,低位仍在低位。 #include<stdio.h> #include<math.h> int main(){ int a,b; long s; double y; printf("Enter a number:"); while(scanf("%ld",&s)!=EOF) { printf("new number is:"); int n=1,i=0; do { a=s%10; b=s/10; if(a%2==1) { n=n+1; y=pow(10.0,(n-2)); i=a*(int)y+i; } s=b; }while(b>0); printf("%d",i); printf("\n"); printf("\n"); printf("Enter a number:"); } return 0; }

思路:先将输入的数对十取余得a,除以十得b,a对2取余,得1则最低位上为奇数,然后用pow函数实现将a*10的0次方赋值给i,然后令s取b的值,重复上述算法过程,便可输出由奇数组成的高位在高位,低位在低位的数值。
5、实验任务5
//输出计算结果s #include<stdio.h> unsigned int getfactorial(unsigned int i); int main() { unsigned int x,fac; int n; float a,s; printf("Enter n(1~10):"); while(scanf("%d",&n)!=EOF) { for(x=1;x<=n;x++) { fac=getfactorial(x); a=1.0/fac; if(x%2==0) { s=(-1)*a+s; } else { s=a+s; } } printf("n=%d,s=%.6lf",n,s); s=0; printf("\n"); printf("\n"); printf("Enter n(1~10):"); } return 0; } unsigned int getfactorial(unsigned int i) { unsigned int result; if(i==1) result=1; else result=i*getfactorial(i-1); return result; }

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

不明白哪里错了。。

浙公网安备 33010602011771号