实验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(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
#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; }
任务3
#include<stdio.h> int main(){ int a,b=0,i,n,c=200; for(a=101;a<=c;a++){ for(i=2;i<a;){ if(a%i==0){ break; } else if(a==i+1&&a%i!=0){ b++; printf("%d ",a); i++; } else{i++; } } } printf("101~200之间共有%d个素数",b); return 0; }
实验4
#include<stdio.h> #include<math.h> int main(){ long s,t,i=1; printf("Enter a number: "); while(scanf("%ld",&s)!=EOF){ long n,a,b,c,d=0,e,f=0,g; g=s; printf("new number is: "); for(i=1;i<=g;){ i*=10; b=s; s=s/10; c=b%10; if(c%2!=0){ e=c*pow(10,d); d=d+1; f=f+e; } } printf("%d\n",f); printf("Enter a new number: ");} return 0;}
算法说明:
1.设置变量i,使得当程序检查到最后一位时循环结束
2.设置变量b,s,c,因为一个数字%10结果必定为个位上的数字,所以通过先循环/10再%10可依次得到各个位上的数字,使得c表达为各个位上数字,再用if判断是否为奇数
3.同由2.,程序是从一个数字的最右位开始运算执行,所以高位依旧高位,低位依旧低位
4.设置变量e,d,f,使e=c*10^d,f来存储最后结果值
任务5
#include<stdio.h> int main(){ int n,i; double s; printf("Enter n(1~10): "); while(scanf("%d",&n)!=EOF){ double a,b,c=1.0,d,e=0; for(i=1;i<=n;i++){ c=1.0; if(i%2==0){ a=-1.0; } else{ a=1.0; } for(b=i*1.0;b>0;b--){ c=c*b; } d=a/c; e=e+d; } printf("n = %d, s= %f\n",n,e); printf("Enter n(1~10): ");} return 0; }
任务6
#include<stdio.h> #include<stdlib.h> #include<time.h> int main(){ int n; srand(time(NULL)); int a=rand()%32; printf("猜猜2020年12月哪一天会是你的luck day\n开始咯,你有三次机会,猜吧(1~31): "); for(int i=1;i<=3;i++){ scanf("%d",&n);{ if(n>a){ printf("你猜的日期晚了,luck day悄悄溜到前面啦\n");} if(n<a){ printf("你猜的日期早了,luck day还没到呢\n");} if(n==a){ printf("恭喜你猜对了你的幸运日期!!!"); break;} } } if(n!=a){printf("次数用完啦。偷偷告诉你:12月,你的luck day是%d号",a);} return 0; }
实验总结:
熟悉了srand与rand函数的用法,可使取值范围在一个固定区域内
尚存问题:
任务四中当输入数过大时,结果会出错