例题4-1:
#include<stdio.h> #include<math.h> int main(void) {int denominator,flag;double item,pi;flag=1;denominator=1;item=1.0;pi=0;while(fabs(item)>=0.0001){item=flag*1.0/denominator;pi=pi+item;flag=-flag;denominator=denominator+2;}pi=pi*4;printf("pi=%.4f\n",pi);return 0; }
例题4-2:
#include<stdio.h> int main(void) {int count,num;double grade,total;num=0;total=0;count=0;printf("Enter grades:");scanf("%lf",&grade);while(grade>=0){total=total+grade;num++;if(grade<60)count++;scanf("%lf",&grade);}if(num!=0){printf("Grade average is %.2f\n",total/num);printf("Number of failures is %d\n",count);}elseprintf("Grade average is 0\n");return 0; }
例题4-3:
#include<stdio.h> int main(void) {int count,number;count=0;printf("Enter a number:");scanf("%d",&number);if(number<0)number=-number;do{number=number/10;count++;}while(number!=0);printf("It contains %d digits.\n",count);return 0; }
运行结果1:
运行结果2:
例题4-4:
#include<stdio.h> int main(void) {int i,m;printf("Enter a number:");scanf("%d",&m);for(i=2;i<=m/2;i++)if(m%i == 0)break;if(i>m/2 && m!=1)printf("%d is a prime number!\n",m);elseprintf("No!\n");return 0; }
运行结果1:
运行结果2:
例题4-5:
#include<stdio.h> int main(void) {int mynumber=44;int count=0,yournumber;for(count=1;count<=5;count++){printf("Input your number:");scanf("%d",&yournumber);if(yournumber==mynumber){printf("OK!you are right!\n");break;}elseif(yournumber>mynumber)printf("Sorry!your number is bigger than my number!\n");elseprintf("Sorry!your number is smaller than my number!\n");}printf("Game is over!\n");return 0; }
例题4-6:
#include<stdio.h> double fact (int n); int main(void) {int i;double sum;sum=0;for(i=1;i<=100;i++)sum=sum+fact(i);printf("1!+2!+...+100!=%e\n",sum);return 0; } double fact(int n) {int i;double result;result=1;for(i=1;i<=n;i++)result=result*i;return result; }
例题4-7:
#include<stdio.h> int main(void) {int i,j;double item,sum;sum=0;for(i=1;i<=100;i++){item=1;for(j=1;j<=i;j++)item=item*j;sum=sum+item;}printf("1!+2!+...+100!=%e\n",sum);return 0; }
例题4-8-1:
#include<stdio.h> int main(void) {int i,mark,max,n;printf("Enter n:");scanf("%d",&n);printf("Enter %d marks:",n);scanf("%d",&mark);max=mark;for(i=1;i<n;i++){scanf("%d",&mark);if(max<mark)max=mark;}printf("Max=%d\n",max);return 0; }
例题4-8-2:
#include<stdio.h> int main(void) {int mark,max;printf("Enter marks:");scanf("%d",&mark);max=mark;while(mark>=0){if(max<mark)max=mark;scanf("%d",&mark);};printf("Max = %d\n",max);return 0; }
例题4-9:
#include<stdio.h> int main(void) {int x;printf("Enter x:");scanf("%d",&x);while(x!=0){printf("%d",x%10);x=x/10;}return 0; }
例题4-10:
#include<stdio.h> #include<math.h> int main(void) {int count,i,m,n;count=0;for(m=2;m<=100;m++){n=sqrt(m);for(i=2;i<=n;i++)if(m%i==0)break;if(i>n){printf("%6d",m);count++;if(count%10==0)printf("\n");}}printf("\n");return 0; }
例题4-11:
#include<stdio.h> int main(void) {int i,x1,x2,x;x1=1;x2=1;printf("%6d%6d",x1,x2);for(i=1;i<=8;i++){x=x1+x2;printf("%6d",x);x1=x2;x2=x;}printf("\n");return 0; }
例题4-12-1:
#include<stdio.h> int main(void) {int child,men,women;for(men=0;men<=45;men++)for(women=0;women<=45;women++)for(child=0;child<=45;child++)if(men+women+child==45&&men*3+women*2+child*0.5==45)printf("men=%d,women=%d,child=%d\n",men,women,child);return 0; }
例题4-12-2:
#include<stdio.h> int main(void) {int child,men,women;for(men=0;men<=15;men++)for(women=0;women<=22;women++){child=45-women-men;if(men*3+women*2+child*0.5==45)printf("men=%d,women=%d,child=%d\n",men,women,child);}return 0; }
第四章也完工了。
这一章主要是循环结构,可用for、while和do-while这三种循环语句来实现循环。
差别在于,若事先给定了循环次数,首选for语句,它最清晰。
如果循环次数不明确,通常选用while和do-while语句。
以上。