实验3
EX1
#include <stdio.h> #include <math.h> int main(){ float a,b,c,x1,x2; float delat,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{ delat=b*b-4*a*c; if(delat>=0){ x1=(-b+sqrt(delat))/(2*a); x2=(-b-sqrt(delat))/(2*a); printf("x1=%.2f,x2=%.2f\n\n",x1,x2); } else { real=-b/(2*a); imag=sqrt(-delat)/(2*a); printf("x1=%.2f+%.2fi,x2=%.2f-%.2fi\n\n",real,imag,real,imag); } } printf("Enter a,b,c:"); } return 0; }
循环中继续嵌套循环容易发生错误
EX2
#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; }
EX3
#include <stdio.h> #include <stdlib.h> #include <math.h> int main(){ int i,m,n,k; for(n=101;(n<=200)&&(n>100);n++) {m=sqrt(n); for(i=2;i<=m;i++) if(n%i==0)break; if(i>m){ printf("%d\n",n); k++; } } printf("素数一共有%d个\n",k); system("pause") ; return 0; }
循环的嵌套容易发生错误,且对于变量赋值时,变量放置的位置会影响结果,在输入素数的同时还要计量次数,所以有一个循环的嵌套
ex4
#include <stdio.h> int main(){ int s,i,n,t; printf("Enter a number:"); while(scanf("%d",&s)!=EOF){ i=0; n=1; while(s!=0){ t=s%10; if(t%2!=0){ i=t*n+i; n=n*10; } s=s/10; } printf("new name is:%d\n",i); printf("Enter a number:") ; } return 0; }
EX5
先对s取余,令为t,再判断t%2!=0;如果不等于则输出,因为高位向低位,则每进行一次,对应i要“t”乘以10加上之前的i,而下一轮的s再除以10,s为整型,则s/10也为整型,要注意s/10放置的位置。
#include <stdio.h> int main(){ int k,n,m; double s,t; printf("Enter n(1~10):"); while(scanf("%d",&n)!=EOF){ t=1.0; k=1; m=1; s=0.0; while(k<=n){ s=s+m/t; k++; m=-m; t=t*k; } printf("n=%d,s=%lf\n",n,s); printf("Enter n(1~10):"); } return 0; }
要注意是取int 还是double,
分母一直做阶乘,则需要循环进行;分子每一次循环会改变正负
EX6
#include <stdio.h> #include <stdlib.h> #include <time.h> int main(){ int x,n,k; srand(time(0)); x=rand()%32; n=1; printf("猜猜2020年12月哪一天会是你的lucky day\n"); printf("开始了,你有三次机会,猜吧(1~31):"); scanf("%d",&k); while(n<3){ if(k==x){ printf("恭喜你,答对了"); break; } else if(k>x){ printf("你猜的日期晚了,lucky day悄悄溜到前面去了:"); scanf("%d",&k); n++; } else if(k<x){ printf("你猜的日期早了,lucky day还没到呢:"); scanf("%d",&k); n++; } } if(n=3){ printf("次数用完了,偷偷告诉你,12月,你的lucky day 是%d号",x);} return 0; }
总结:在第三章会感觉难度上了一个台阶,主要是循环语句的嵌套非常容易发生错误,一个变量赋值放错位置会影响整个实验的变化,整型和双精度型的选择同样有影响,最重要的是算法逻辑一定要弄清楚,代码才会输入正确。所以第三章最重要的是实践,为之后学习打好基础。