while循环结构例题教学提纲.docx
《while循环结构例题教学提纲.docx》由会员分享,可在线阅读,更多相关《while循环结构例题教学提纲.docx(21页珍藏版)》请在冰豆网上搜索。
![while循环结构例题教学提纲.docx](https://file1.bdocx.com/fileroot1/2023-5/24/02a16ce9-1500-431d-8aaf-b108cd890a44/02a16ce9-1500-431d-8aaf-b108cd890a441.gif)
while循环结构例题教学提纲
while循环结构例题
引子
#include"stdio.h"
main()
{inti=1;
for(i=1;i<=10000;i++)
printf(“%d\t”,i);
}
题型1输入输出多个数据
eg1、输出1~10000之间所有的整数
#include"stdio.h"
main()
{inti=1;
while(i<=1000)
{printf(“%d\t”,i);
i++;}
}
拓展:
1、换成所有的奇数
2、换成所有的偶数
题型2有限个数连加和连乘
eg2.1、求1+2+3+4+………+100的值
#include"stdio.h"
main()
{inti=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()
{inti=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()
{inti=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()
{floatn=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()
{inti=1,n,p,z;
floatx;
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()
{longi=10000,c=0;
while(i<=99999)
{
if((i%3==0)&&(i%10==6))
c++;
i++;
}
printf(“%d\n”,c);
}
方法2
#include"stdio.h"
main()
{longi=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()
{intf1=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()
{intf1=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()
{longx,t;
scanf(“%ld”,&x);
while(x!
=0)
{t=x%10;
x=x/10;
printf(“%d”,t);}
}
题型7公约数与公倍数
eg7任意输入两个正整数,求其最大公约数和最小公倍数。
#include"stdio.h"
main()
{intm,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(“zuidagongyushushi:
%d\n”,a);
printf(“zuixiaogongbeishushi:
%d\n”,m*n/a);
}
题型8素数问题
eg8从键盘上任意输入一个正整数,判断其是否为素数。
#include"stdio.h"
main()
{intx,i=2;
scanf(“%d”,&x);
while(x%i!
=0)i++;
if(x==i)printf(“shi!
”);
elseprintf(“fou!
”);
}
题型9高次方程的根
eg9.1用二分迭代法求解方程y=2x3-4x2+3x-6=0在(-10,10)之间的根,要求精度10-5
#include"stdio.h"
#include"math.h"
main()
{
floatx1=10,x2=-10,x,y,y1;
x=(x1+x2)/2;
y=2*x*x*x-4*x*x+3*x-6;
while(fabs(y)>1e-5)
{
y1=2*x1*x1*x1-4*x1*x1+3*x1-6;
if(y*y1>0)
x1=x;
else
x2=x;
x=(x1+x2)/2;
y=2*x*x*x-4*x*x+3*x-6;
}
printf("therootis%f\n",x);}
eg9.2用牛顿迭代法求解方程2x3+4x2-7x-6=0在x=1.5附近的根,要求精度10-5
#include"stdio.h"
#include"math.h"
main()
{
floatx,x0,y,y1;
x=1.5;
while(fabs(x-x0)>1e-5)
{x0=x;
y=2*x0*x0*x0+4*x0*x0-7*x0-6;
y1=6*x0*x0+8*x0-7;
x=x0-y/y1;}
printf("therootis%f\n",x);}
牛顿迭代公式:
xn+1=xn-f(xn)/f’(xn)
do-while循环结构举例
#include"stdio.h"
main()
{inti=1,s=0;
do
{s=s+i;
i++;}while(i<=100);
printf(“%d\n”,s);
}
for循环结构举例
f1
#include"stdio.h"
main()
{inti=1,s=0;
for(i=1;i<=100;i++)
s=s+i;
printf(“%d\n”,s);
}
f2
#include"stdio.h"
main()
{
inti,f1,f2,f3;
f1=1;f2=1;
printf("%d,%d",f1,f2);
for(i=3;i<=20;i++)
{
f3=f1+f2;
f1=f2;
f2=f3;
printf(",%d",f3);
}
}
f3
#include"stdio.h"
main()
{
inti;
floata,max;
scanf("%f",&a);
max=a;
for(i=1;i<=9;i++)
{scanf("%f",&a);
if(maxmax=a;
}
printf("%f\n",max);
}
f4
#include"stdio.h"
main()
{
inti,s=1;
for(i=9;i<=1;i--)
s=2*(s+1);
printf("%d\n",s);
}
#include"stdio.h"
main()
{
intx,n=0,s=0;
while(n<10)
{
scanf("%d",&x);
if(x<0)break;
s+=x;
n++;
}
printf("s=%d\n",s);
}
#include"stdio.h"
main()
{
intx,n=0,s=0;
while(n<10)
{
scanf("%d",&x);
if(x<0)continue;
s+=x;
n++;
}
printf("s=%d\n",s);
}
#include"stdio.h"
main()
{
intx,n=0,s=0;
while(n<10)
{
scanf("%d",&x);
n++;
if(x<0)continue;
s+=x;
}
printf("s=%d\n",s);
}
#include"stdio.h"
main()
{
inti=2,m;
scanf("%d",&m);
while(m%i!
=0)
i++;
if(i==m)
printf("%dshisushu!
\n",m);
else
printf("%dbushisushu!
\n",m);
}
#include"stdio.h"
main()
{
inti,m;
scanf("%d",&m);
for(i=2;m%i!
=0;i++);
if(i==m)
printf("%dshisushu!
\n",m);
else
printf("%dbushisushu!
\n",m);
}
#include"stdio.h"
main()
{inti,m;
scanf("%d",&m);
for(i=2;i<=m;i++)
if(m%i==0)break;
if(i==m)
printf("%dshisushu!
\n",m);
else
printf("%dbushisushu!
\n",m);
}
#include"stdio.h"
#include"math.h"
main()
{inti,m,s;
scanf("%d",&m);
s=sqrt(m);
for(i=2;i<=s;i++)
if(m%i==0)break;
if(i==s+1)
printf("%dshisushu!
\n",m);
else
printf("%dbushisushu!
\n",m);
}
#include"stdio.h"
#include"math.h"
main()
{
inti,j;
for(i=100;i<=200;i++)
{
for(j=2;j<=i;j++)
if(i%j==0)break;
if(j==i)
printf("%-10d",i);
}
}
#include"stdio.h"
#include"math.h"
main()
{
inti,j,s;
for(i=100;i<=200;i++)
{s=sqrt(i);
for(j=2;j<=s;j++)
if(i%j==0)break;
if(j==s+1)
printf("%-10d",i);}
}
#include
main()
{inti,j,s;
for(i=2;i<=10000;i++)
{s=0;
for(j=1;j
if(i%j==0)
s+=j;
if(i==s)
printf("%6d\n",s);
}
}
#include"stdio.h"
main()
{
inti,j,k;
for(i=0;i<=35;i++)
for(j=0;j<=35;j++)
if((i+j==35)&&(2*i+4*j==94))
printf("\ni=%-10dj=%-10d",i,j);
}
#include"stdio.h"
main()
{inti,j,k;
for(i=0;i<=19;i++)
for(j=0;j<=33;j++)
for(k=0;k<=100;k++)if((i+j+k==100)&&(5*i+3*j+k/3==300))
printf("\ni=%-10dj=%-10dk=%-10d",i,j,k);
}
#include"stdio.h"
main()
{inti,j,k;
for(i=0;i<=19;i++)
for(j=0;j<=33;j++)
{
k=100-i-j;
if(15*i+9*j+k==300)printf("\ni=%-10dj=%-10dk=%-10d",i,j,k);}
}
#include"stdio.h"
main()
{
inti,j,k;
for(i=0;i<=19;i++)
for(j=0;j<=33;j++)
{k=100-i-j;
if(5*i+3*j+k/3==100)printf("\ni=%-10dj=%-10dk=%-10d",i,j,k);}
}
#include"stdio.h"
main()
{intm,n,k;
for(m=1;m<=9;m++)
{for(n=1;n<=m;n++)
printf("%d*%d=%-5d",n,m,n*m);
printf("\n");}
}
#include"stdio.h"
main()
{
inti;
for(i=1;i<=5;i++)
printf("********\n");
}
#include"stdio.h"
main()
{
inti,j;
for(i=1;i<=5;i++)
{
for(j=1;j<=5-i;j++)
printf("");
printf("********\n");
}
}
#include"stdio.h"
main()
{
inti,j;
for(i=1;i<=5;i++)
{for(j=1;j<=20-i;j++)
printf("");
for(j=1;j<=i;j++)
printf("*");
printf("\n");
}
}
#include"stdio.h"
main()
{inti,j;
for(i=1;i<=5;i++)
{for(j=1;j<=20-i;j++)
printf("");
for(j=1;j<=2*i-1;j++)
printf("*");
printf("\n");
}
}
#include"stdio.h"
main()
{inti,j;
for(i=1;i<=5;i++)
{for(j=1;j<=i-1;j++)
printf("");
for(j=1;j<=11-2*i;j++)
printf("*");
printf("\n");
}
}
#include"stdio.h"
main()
{inti,j;
for(i=1;i<=4;i++)
{for(j=1;j<=4-i;j++)
printf("");
for(j=1;j<=2*i-1;j++)
printf("*");
printf("\n");
}
for(i=1;i<=3;i++)
{for(j=1;j<=i;j++)
printf("");
for(j=1;j<=7-2*i;j++)
printf("*");
printf("\n");
}
}
#include"stdio.h"
main()
{inti,j,k,m,n,s=0;
for(i=0;i<=2;i++)
for(j=0;j<=9;j++)
for(k=1;k<=9;k++)
{m=100*i+10*j+k;
n=100*k+10*j+i;
if((n>2*m)&&(n<3*m))
{s++;
printf("%d",m);
if(s%8==0)
printf("\n");}
}
}