实验三
#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; }
#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; }
#include<stdio.h> int main(){ int i,j,k,n=0; for(i=101;i<=200;i++){ k=1; for(j=2;j<i;j++){ if(i%j==0){ k=0; break; } } if(k==1){ printf("%5d",i); n++; if(n%5==0){ printf("\n"); } } } printf("\n101~200之间共有%d个素数",n); return 0; }
#include<stdio.h> int main(){ long s; int n,i,j,k; printf("Enter a number:"); while(scanf("%ld",&s)!=EOF){ i=s; n=1; while(i>9){ i/=10; n*=10; } printf("New number is:"); for(;n>0;n/=10){ j=s/n; s%=n; if(j%2!=0){ printf("%d",j); } } printf("\n\nEnter a number:"); } return 0; }
实验四主要思路:要提取出奇数,就要由高到低提取出每一位数进行判断。先算出输入的 number是n位数,对应x=10的n-1次方,比如5位数对应10000.用number除以x,可以得到number的最高位,用number对x取余,可以得到number剩下的数字,让x/10.依此循环,可以把number的每一位数由高到低分离开来,再对2取余,若不等于0,则为奇数,输出即可。
#include<stdio.h> int main(){ int n,i=2,j=1,x=1; double k,s=1.0; printf("Enter n(1~10):"); while(scanf("%d",&n)!=EOF){ for(;i<=n;i++){ j*=i; k=1.0/j; x++; if(x%2==0){ k=-k; } s+=k; } printf("n=%d,s=%lf\n\n",n,s); getchar(); printf("Enter n(1~10):"); } return 0; }
#include<stdio.h> #include<stdlib.h> #include<time.h> int main(){ int i,j,k=0,n=0; srand(time(0)); i=rand()%31+1; printf("猜猜2020年12月哪一天会是你的lucky day\n\n"); printf("开始咯,你有三次机会,猜吧(1~31):"); do{ if(k!=0) printf("\n\n再猜(1~31):"); scanf("%d",&j); if(j<i){ printf("\n\n你猜的日期早了,lucky day还没到呢"); } else if(j>i){ printf("\n\n你猜的日期晚了,lucky day悄悄溜到前面去了"); } else{ n=1; } k++; }while(j!=i&&k<3); if(n==1){ printf("\n\n猜对啦"); } if(n==0){ printf("\n\n次数用完啦。偷偷告诉你:12月,你的lucky day是%d号",i); } return 0; }
实验总结:
这次实验给我的最大收获是使用while(scanf(“%d%d”)!=EOF),以前总觉得代码运行一次要重启才能运行第二次很麻烦,现在解决这个问题啦。但是EOF和-1之间的关系还不是很懂。
这次实验的瓶颈是排版吧,能算出结果固然重要,但把它弄成之间想要的排版也很重要。在实验六中,先输出什么,后输出什么,怎么让“再猜”在三次内出现,而最后一次不出现之类的问题,修修改改了很多次。
在编程的时候,总是让我思考很久的是使用什么循环语句最快捷高效,希望有大佬能指点迷津啊。
像素数,数字分离之类的问题,是出现得很频繁的,觉得自己还不够熟练,希望自己多加练习吧。