当前位置:文档之家› C语言循环结构总结

C语言循环结构总结

==============================================================
while循环
【程序1】用while语句计算1+2+3+……+99+100。
1.程序分析:
2.程序源代码:
#include
void main( )
{
int sum,i;
sum=0;i=1;
while(i<=100)
{
sum+=i;
i++;
}
printf("1+2+3+……+100=%d\n",sum);
}
==============================================================
【程序2】编写程序求10个数中的最大值。
1.程序分析:关键是计算出每一项的值。
2.程序源代码:

#include "stdio.h"
void main( )
{
int i, k, max; /*i为输入数据计数*/
printf("please input 10 number\n");
scanf("%d",&max);
i=2;
while(i<=10)/*最多输入10个数*/
{
scanf("%d",&k);
if(maxi++;
}
printf("max=%d\n",max);
}
==============================================================
【程序3】
编写程序:把从键盘输入的正数累加,当输入的数据为负数时,则程序结束。
1.程序分析:
2.程序源代码:
#include "stdio.h"
void main( )
{
int num,sum;/*sum为计数和*/
sum=0; /*初始化sum为0*/
printf("please input integer:\n");
scanf("%d",&num);
while(num>=0)/*当输入数字>=0时,可以执行以下操作*/
{
sum+=num;
printf("please input next integer:\n");
scanf("%d",&num);/*输入下一个数字*/
}
printf("the sum result is %d\n",sum);
}
==============================================================
【程序4】
编写程序:输入一个班学生的成绩,求全班的平均成绩。
1.程序分析:循环条件为分数大于等于0时就继续输入成绩,输入的分数小于0时就停止输入。
2.程序源代码:
#include "stdio.h"
void main( )
{
float score,average=0;/*变量average记录平均成绩*/
int n=0;/*变量n用来对学生计数*/
printf("please input score:\n",&score);
scanf("%f",&score);
while(score>=0)
{
average+=score; /*用average保存所有输入学生的成绩*/
n++;
printf("please input score:\n",&score);
scanf("%f",&score);
}
if(n!=0)
{average/=n;/*求平均成绩*/
printf("the average score is %6.2f\n",average);
}
else
printf(" error\n");

}
==============================================================
【程序5】+
题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时
共有5个数相加),几个数相加有键盘控制。
1.程序分析:关键是计算出每一项的值。
2.程序源代码:
#include "stdio.h"
#include "conio.h"
void main()
{
int a,n,count=1;/*变量a为一数字,n为位数,count用来对位数计数*/
long int sn=0,tn=0; /*变量tn为每一项的值,sn为各项相加之和*/
printf("please input a and n\n");
scanf("%d,%d",&a,&n);/*输入变量a和n的值,以,分隔*/
printf("a=%d,n=%d\n",a,n);
while(count<=n)
{
tn=tn+a;
sn=sn+tn;
a=a*10;
++count;
}
printf("a+aa+...=%ld\n",sn);

getch();
}
==============================================================
【程序6】
编写程序:从键盘输入一个正整数n,计算该数的各位数字之和并输出。例如,输入数是5246,则计算
5+2+4+6=17,并输出。
1.程序分析:关键取出整数n的各位上的数字。
2.程序源代码:
#include
void main()
{
int num,sum;/*变量为一正整数,sum用来保存各位上数字之和*/
sum=0;
printf("please input a positive integer:\n");
scanf("%d",&num);
while(num>0)
{
sum+=num%10; /*将最末位数字加到sum*/
num=num/10;/*num缩小10倍*/
}
printf("%d\n",sum);

}
==============================================================
【程序7】
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
1.程序分析:利用辗除法。

2.程序源代码:
#include "stdio.h"
#include "conio.h"
main()
{
int a,b,num1,num2,temp;
printf("please input two numbers:\n");
scanf("%d,%d",&num1,&num2);
if(num1{
temp=num1;
num1=num2;
num2=temp;
}
a=num1;b=num2;
while(b!=0)/*利用辗除法,直到b为0为止*/
{
temp=a%b;
a=b;
b=temp;
}
printf("gongyueshu:%d\n",a);
printf("gongbeishu:%d\n",num1*num2/a);
getch();
}
==============================================================
【程序8】+
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下
的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
1.程序分析:采取逆向思维的方法,从后往前推断。
2.程序源代码:
#include "stdio.h"
#include "conio.h"
void main()
{
int day,x1,x2; /*变量day记录第几天,x2记录第day天剩下的桃子数,x1记录前一天的桃子数*/
/* 从用逆向思维,先从第9天开始计算*/
day=9;
x2=1;
/*当day由9变为1时,x1所记录的就是猴子第1天摘的桃子总数*/
while(day>0)
{
x1=(x2+1)*2;/*前一天的桃子数是第2天桃子数加1后的2倍*/
x2=x1;
day--;
}
printf("the total is %d\n",x1);
getch();
}

==============================================================
==============================================================
do while循环
==============================================================
【程序1】用while语句计算1+2+3+……+99+100。
1.程序分析:

2.程序源代码:
#include
void main( )
{
int sum,i;
sum=0;i=1;
do
{
sum+=i;
i++;
}while (i<=100);
printf("1+2+3+……+100=%d\n", sum);
}
==============================================================
【程序2】编写程序求10个数中的最大值。
1.程序分析:

2.程序源代码:

#include "stdio.h"
void main( )
{
int i, k, max;
printf("please input 10 number\n");
scanf ("%d",&max);
i=2;
do
{
scanf("%d",&k);
if(maxi++;
}while(i<=10);
printf("max=%d\n",max);
}
==============================================================
【程序3】
编写程序:输入一个班学生的成绩,求全班的平均成绩。
1.程序分析:循环条件为分数大于等于0时就继续输入成绩,输入的分数小于0时就停止输入。
2.程序源代码:
#include "stdio.h"
void main( )
{
float score,average=0;/*变量average记录平均成绩*/
int n=0;/*变量n用来对学生计数*/

do
{
printf("please input score:\n",&score);
scanf("%f",&score);/*输入学生成绩*/
if(score>=0)
{
average+=score; /*用average保存所有输入学生的成绩*/
n++;
}
}while(score>=0);
if(n!=0)
{average/=n;/*求平均成绩*/
printf("the average score is %6.2f\n",average);
}
else
printf(" error\n");

}

==============================================================
【程序4】
编写程序,用公式PI/4=1-1/3+1/5-1/7+...,求PI的近似值,直到最后一项的绝对值小于1e-6为止。
1.程序分析:关键分析各计数项结构。
2.程序源代码:
#include "stdio.h"
#include "math.h"
void main()
{
int n;/*循环计数变量*/
double t,p; /*t为各计数项,p为各计数项累加和*/
n=1;
p=0;
do
{
t=pow(-1,n+1)/(2*n-1); /*生成每一计算项*/
p=p+t; /*各项累加求和*/
n=n+1; /*循环计数*/
}while (fabs(t)>1e-6);/*终止条件*/
p=p*4;
printf("\np=%10.8f",p);
}
==============================================================
【程序5】
编写程序,按下列公式计算e的值(精度为1e-6)
e=1+1/1!+1/2!+1/3!+...+1/n!
1.程序分析:
2.程序源代码:
#include "stdio.h"
#include "math.h"
void main()
{
int n;/*循环计数变量*/
double p; /*t为各计数项,p为各计数项累加和*/
long t=1;
n=1;
p=0;
do
{
t=t*n;
p=p+1.0/t; /*各项累加求和*/
n=n+1; /*循环计数*/
}while (fabs(1.0/t)>1e-6);/*终止条件*/
p=p*4;
printf("\np=%10.8f",p);
}
==============================================================
for 循环
==============================================================
【程序1】用for语句计算1+2+3+……+99+100。
1.程序分析:
2.程序源代码:
#include
void main( )
{
int s,i;
s=0;i=1;
for(i=1; i<=100; i++)
s+=i;
printf("1+2+3+……+100=%d\n",s);
}

==============================================================
【程序2】输出2位数中所有能同时被3和5整除的数。
1.程序分析:
2.程序源代码:
#include
void main( )
{
int n;
for(n=10;n<100;n++)
{
if(n%3==0 && n%5==0) /*同时被3和5整除的数*/
printf ("%5d", n);
}
}
==============================================================
【程序3

】编写程序求10个数中的最大值。
1.程序分析:
2.程序源代码:
#include "stdio.h"
void main( )
{
int i, k, max;
printf("please input 10 number\n");
scanf ("%d",&max );
for( i=2; i<11; i++ )
{
scanf ("%d",&k);
if ( max}
printf("max=%d\n",max );
}
==============================================================
【程序4】
计算1~10之间的奇数之和与偶数之和.
1.程序分析:
2.程序源代码:
#include
main()
{
int a, b, c, i;/*a保存偶数和,c保存奇数和*/
a=c=0;
for(i=0;i<=10;i+=2)
{
a+=i; /*i的取值:0,2,4,6,8,10*/
b=i+1; /*b的取值:1,3,5,7,9,11*/
c+=b;
}
printf("偶数之和=%d\n",a);
printf("奇数之和=%d\n",c-11);/*循环中c在最后一次多加了11,所以要减去*/
}

==============================================================
【程序5】
编写程序:在 1~500 中,找出能同时满足用 3 除余 2,
用 5 除余 3,用 7 除 余 4 的所有整数。
1.程序分析:
2.程序源代码:
#include
void main()
{
int x;
for(x=0;x<=500;x++)
{
if( x%3==2 && x%5==3 && x%7==4)/*用3除余2,用5除余3,用7除余4*/
printf("%d\t",x);
}
}
==============================================================
【程序6】
编写程序:输出100以内能被3整除且个位数为6的所有整数。
1.程序分析:
2.程序源代码:

#include
main()
{
int i, j;
for(i=0; i<10 ; i++)
{
j=i*10+6; /*构成个位数为6,且小于100的整数*/
if(j%3!=0)
continue; /*不能被3整除,则跳出本次循环*/
printf("%d\t",j);
}
}
==============================================================
【程序7】+
题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在
第10次落地时,共经过多少米?第10次反弹多高?
1.程序分析:
2.程序源代码:
#include "stdio.h"
#include "stdio.h"
main()
{
float sn=100.0,hn=sn/2; /*sn记录球多次落地后经过的总米数,初始化为第1次落地经过的米数; hn为落地后反弹的高度,初始化为第1次落地反弹值*/
int n;
for(n=2;n<=10;n++) /*计算第2-10次的落地及反弹高度情况*/
{
sn=sn+2*hn;/*第n次落地时共经过的米数*/
hn=hn/2; /*第n次反跳高度*/
}
printf("the total of road is %f\n",sn);
printf("the tenth is %f meter\n",hn);
getch();
}
==============================================================
【程序8】下面程序的功能是计算1-3+5-7+ …… -99+101的值。
1.程序分析:
2.程序源代码:
#include
void main()
{
int i,t=1,s=0,flag=1;/*变量s用于求和,flag用于作符号标记*/
for(i=1;i<=101;i+=2)
{
s=s+flag*i;
flag=flag*(-1); /*实现正负号交替变换*/
}
printf("%d\n",s);
}
===========

===================================================

程序9】 +
题目:求1+2!+3!+...+n!的和
1.程序分析:关键求出每项的阶乘值。
2.程序源代码:
#include "stdio.h"
#include "conio.h"
void main()
{
int i,n;/*变量n作为总算式的总项数*/
float s=0,t=1; /*s记录各项之和,t记录每项阶乘的值*/
printf("please input n:\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
t*=i; /*计算每一项的值*/
s+=t; /*将阶乘的值加到总和s上*/
}
printf("1+2!+3!...+20!=%e\n",s);
getch();
}
==============================================================

【程序10】+
题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
1.程序分析:分析出各项数据特征:新的数据项a/b,其中分子a为前一项分子与分母之和,分母b为前一项的分子。
2.程序源代码:
#include "stdio.h"
#include "conio.h"
void main()
{
int n,t,number=20; /*变量n作为*/
float a=2,b=1,s=0; /*变量a和b分别作为每个数据项的分子和分母,s为各项之和*/
for(n=1;n<=number;n++)
{
s=s+a/b; /*各项求和*/
t=a;a=a+b;b=t;/*生成新的数据项a/b,其中分子a为前一项分子与分母之和,分母b为前一项的分子*/
}
printf("sum is %9.6f\n",s);
getch();
}
==============================================================
【程序11】
题目:求1+1/2+1/3+...+1/n(n为任意一正整数)
1.程序分析:关键求出每项的值。
2.程序源代码:
#include "stdio.h"
#include "conio.h"
void main()
{
int i,n;/*变量n作为总算式的总项数*/
float s=0,t; /*s记录各项之和,t记录每项的值*/
printf("please input n:\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
t=1.0/i; /*计算每一项的值*/
s+=t; /*将各项值加到总和s上*/
}
printf("1+1/2+1/3+...+1/n=%e\n",s);
getch();
}
==============================================================
【程序12】
题目:1+2/3+3/4+...+(n-1)/n(n为任意一正整数)
1.程序分析:关键求出每项的值。
2.程序源代码:
#include "stdio.h"
#include "conio.h"
void main()
{
int i,n;/*变量n作为总算式的总项数*/
float s=1,t; /*s记录各项之和,初始为1,t记录每项的值*/
printf("please input n:\n");
scanf("%d",&n);
for(i=2;i<=n;i++)/*从第2项开始计算*/
{
t=(float)(i-1)/i; /*计算每一项的值*/
s+=t; /*将各项值加到总和s上*/
}
printf("1+2/3+3/4+...+(n-1)/n=%e\n",s);
getch();
}
==============================================================
【程序13】
题目:1-1/2+1/3-1/4...+1/n(n为任意一正整数)
1.程序分析:关键求出每项的值,注意每项的符号。
2.程序源代码:
#include "stdio.h"
#include "conio.h"
#include "math.h"
void main()
{
int i,n,flag;/*变量n作为总算式的总项数,flag作为+-号标记*/
float s=0,t; /*s记

录各项之和,初始为0,t记录每项的值*/
printf("please input n:\n");
scanf("%d",&n);
for(i=1;i<=n;i++)/*从第1项开始计算*/
{
flag=pow(-1,i+1);
t=flag*(1.0/i); /*计算每一项的值*/
s+=t; /*将各项值加到总和s上*/
}
printf("1-1/2+1/3-1/4...+1/n=%e\n",s);
getch();
}
==============================================================
【程序14】
题目:1+2/3+5/4+9/5+14/6+20/7+...+(n为任意一正整数)
1.程序分析:关键求出每项的值。
2.程序源代码:
#include "stdio.h"
#include "conio.h"
void main()
{
int i,n,t1,t2;/*变量n作为总算式的总项数*/
float s=1,t; /*s记录各项之和,初始为1,t记录每项的值*/
printf("please input n:\n");
scanf("%d",&n);
t1=2; t2=3;
for(i=2;i<=n;i++)/*从第2项开始计算*/
{
t=(float)t1/t2; /*计算每一项的值*/
s+=t; /*将各项值加到总和s上*/
t1=t1+t2; /*修改分子t1的值*/
t2=t2+1;/*修改分母t2的值*/
}
printf("1+2/3+5/4+9/5+14/6+20/7+...=%e\n",s);
getch();
}
==============================================================
【程序15】
题目:1/2+1/6+1/12+...+1/n(n+1)(n为任意一正整数)
1.程序分析:关键求出每项的值。
2.程序源代码:
#include "stdio.h"
#include "conio.h"
void main()
{
int i,n;/*变量n作为总算式的总项数*/
float s=0,t; /*s记录各项之和,初始为0,t记录每项的值*/
printf("please input n:\n");
scanf("%d",&n);
for(i=1;i<=n;i++)/*从第1项开始计算*/
{
t=1.0/(i*(i+1)); /*计算每一项的值*/
s+=t; /*将各项值加到总和s上*/
}
printf("1/2+1/6+1/12+...+1/n(n+1)=%e\n",s);
getch();
}
==============================================================
【程序16】
题目:2/1+3/2+5/3+8/5+13/8+21/13+...(n为任意一正整数)
1.程序分析:关键求出每项的值。
2.程序源代码:
#include "stdio.h"
#include "conio.h"
void main()
{
int i,n,t1,t2,t3;/*变量n作为总算式的总项数*/
float s=0,t; /*s记录各项之和,初始为0,t记录每项的值*/
printf("please input n:\n");
scanf("%d",&n);
t1=2; t2=1;
for(i=1;i<=n;i++)/*从第2项开始计算*/
{
t=(float)t1/t2; /*计算每一项的值*/
s+=t; /*将各项值加到总和s上*/
t3=t1;
t1=t1+t2; /*修改分子t1的值*/
t2=t3;/*修改分母t2的值*/
}
printf("2+3/2+5/3+8/5+13/8+21/13+...=%e\n",s);
getch();
}
==============================================================
【程序17】计算Fibonacci分数序列
计算Fibonacci分数序列前n项之和(n为某个常数)。Fibonacci 分数序列为2/1,3/2,5/3,8/5,13/8,21/13,...
1.程序分析:
2.程序源代码:
#include "stdio.h"
#include "conio.h"
void main()
{
float f1,t1,t2,t,sum; /*变量f1为序列的一项,t1,t2分别为序列项的分母和分子,sum用来求和*/
int n,i;
printf("please input n:\n");
scanf("%d",&n);
sum=0;
t1=1.0;


t2=2.0;
for(i=1;i<=n;i++)
{
f1=t2/t1;
sum+=f1;
t=t2; /*更新序列的分子和分母的值*/
t1=t2;
t2=t1+1;
printf("%f ",f1);
if(i%4==0) printf("\n"); /*控制输出,每行四个*/

}
printf("\n sum is %f\n",sum);
getch();
}
==============================================================
【程序18】
题目:Press any key to change color, do you want to try it. Please hurry up!
1.程序分析:
2.程序源代码:
#include "conio.h"
#include "stdio.h"
void main(void)
{
int color;
for (color = 0; color < 8; color++)
{
textbackground(color);/*设置文本的背景颜色*/
cprintf("This is color %d\r\n", color);
cprintf("Press any key to continue\r\n");
getch();
}
}
==============================================================
【程序19】
题目:文本颜色设置
1.程序分析:
2.程序源代码:
#include "conio.h"
#include "stdio.h"
void main(void)
{
int color;
for (color = 0; color < 8; color++)
{
textbackground(color);/*设置文本的背景颜色*/
cprintf("This is color %d\r\n", color);
cprintf("Press any key to continue\r\n");
getch();/*输入字符看不见*/
}
}
==============================================================

相关主题
文本预览
相关文档 最新文档