while循环结构例题

  • 格式:doc
  • 大小:111.00 KB
  • 文档页数:35

下载文档原格式

  / 40
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

引子

#include "stdio.h"

main()

{ int i=1;

for(i=1;i<=10000;i++)

printf(“%d\t”,i);

}

题型1 输入输出多个数据

eg1、输出1~10000之间所有的整数#include "stdio.h"

main()

{ int i=1;

while(i<=1000)

{printf(“%d\t”,i);

i++;}

}

拓展:1、换成所有的奇数

2、换成所有的偶数

题型2 有限个数连加和连乘

eg2.1、求1+2+3+4+………+100的值

#include "stdio.h"

main()

{ int i=1,s=0;

while(i<=100)

{s=s+i;

i++;}

printf(“%d\n”,s);

}

拓展:1、求1+2+3+4+………+n的值

2、求12+22+32+………+n2的值

3、求1+1/2+1/3+………+1/n的值eg2.2、求n!的值

#include "stdio.h"

main()

{ int i=1,n,p=1;

scanf(“%d”,&n);

while(i<=n)

{p=p*i;

i++;}

printf(“%d\n”,p);

}

拓展:求1!+2!+3!+………+n!的值

#include "stdio.h"

main()

{ int i=1,n,p=1,s;

scanf(“%d”,&n);

while(i<=n)

{p=p*i;

s=s+p;

i++;}

printf(“%d\n”,s);

}

题型3 无限个数连加

eg3、求1-1/3+1/5-1/7+………的近似值,要求精度要达到10-4

#include "stdio.h"

#include "math.h"

main()

{ float n=1,s=0,f=1,t=1;

while(fabs(t)>=1e-4)

{t=f/(2*n-1);

s=s+t;

f=-f;

n++;}

printf(“%f\n”,s);

}

拓展:求1-1/2+1/4-1/6+………的近似值,要求精度要达到10-4

题型4 统计

eg4.1、输入20个数,统计其中正数、负数和零的个数。

#include "stdio.h"

main()

{ int i=1,n,p,z;

float x;

p=n=z=0;

while(i<=20)

{ scanf(“%f”,&x);

if(x>0)

p++;

else

if(x<0)

n++;

else

z++;

i++;

}

printf(“%d\t%d\t %d\n”,p,n,z);

}

拓展:统计各类字符的个数

eg4.2 个位为6且能被3整除的五位数有多少?

方法1

#include "stdio.h"

main()

{ long i=10000,c=0;

while(i<=99999)

{

if((i%3==0)&& (i%10==6))

c++;

i++;

}

printf(“%d \n”,c);

}

方法2

#include "stdio.h"

main()

{ long i=10006,c=0;

while(i<=99999)

{

if(i%3==0)

c++;

i=i+10;

}

printf(“%d \n”,c);

}

题型5 数列

eg5 输出fibo数列的第20位数字#include "stdio.h"

main()

{ int f1=1,f2=1, f3,i=3;

while(i<=20)

{ f3=f1+f2;

f1=f2;

f2=f3;

i++;}

printf(“%d \n”,f3);

}

拓展:输出fibo数列前20位数字

#include "stdio.h"

main()

{ int f1=1,f2=1, f3,i=3;

printf(“%d \t%d \t”,f1,f2);

while(i<=20)

{ f3=f1+f2;

f1=f2;

f2=f3;

printf(“%d \t”,f3);

i++;}

}

题型6 数据的逆序输出

eg6 任意给定一个正整数,个位数字逆序输出。

#include "stdio.h"

main()

{ long x,t;

scanf(“%ld”,&x);

while(x!=0)

{ t=x%10;

x=x/10;

printf(“%d”,t); }

}

题型7 公约数与公倍数

eg7 任意输入两个正整数,求其最大公约数和最小公倍数。

#include "stdio.h"

main()

{ int m,n,a,b,r,t;

scanf(“%d%d”,&m, &n);

if(m>n) {a=m;b=n;}

else {a=n;b=m;}

while(b!=0)

{ r=a%b;

a=b;

b=r;}

printf(“zuida gongyushu shi:%d\n”,a);

printf(“zuixiao gongbeishu shi:%d\n”,m*n/a);