概述
5.1 引例
【例子】假设今年我国人口总数为13亿,若按每年2%增长,计算从现在开始10年内每年人口数量
#include<stdio.h>
#include<math.h>
int main()
{
int n=13,year;
double number,rate=0.02;
for(year=1;year<=10;year++)
{
number=n*pow((1+rate),year);
printf("%2d年后,人数:%.2f亿n,year,number");
}
return 0;
}
【例5.2】计算1-4/1+7/1-10/1+13/1-16/1+...的和,直到某一项的绝对值小于10负6次方
#include<stdio.h>
#include<math.h>
int main()
{
double sum,item,flag,denominator;
sum=0;item=1;flag=1;denomintor=1;
while(fabs(item)>=le-6)
{
sum=sum+item;
flag=-flag;
denomintor=denomintor+3;
item=flag/denomintor;
}
printf("sum=%fn",sum);
return 0;
}
5.2 使用for语句实现循环结构
5.2.1 for语句的 基本语法
for语句的一般形式:
for(表达式1;表达式2;表达式3)
循环体语句;
1.首先计算表达式1;
2.判断表达式2,若其值为真(非0),则执行循环体语句,然后执行第3步;若值为假(0),结束循环,转到第5步执行。
3.计算表达式3。
4.返回第2步继续执行;
5.循环结束,继续执行for语句的下一条语句;
【例5.3】输入一个正整数n,求sum的值
#include<stdio.h>
int main()
{
int i,n,sum;
scanf("%d",&n);
sum=0;
for(i=1;i<=n;i++)
sum=sum+i;
printf("由1到%d的和是:%dn",n,sum);
return 0;
}
【例5.4】输入一个正整数n,求n!
#include<stdio.h>
int main(void)
{
int i,n;
double factorial;
printf("输入n的值:")
scanf("%d",&)
factorial=1;
for(i=1;i<=n;i++)
factorial=factorial*i;
printf("%d!=%.0fn",n,factorial);
return 0;
}
2.for语句的一般形式中省略表达式1
格式如下:
for(;表达式2,表达式3)
循环语句;
说明:省略表达式1时,可以将循环变量赋初值放在for之前。注意,此时不能省略第一个“;”。
例5.3的循环语句:
for(i=1;i<=n;i++)
sum=sum+i;
等价于:
i=1;
for(;i<=n;i++)
sum=sum+i;
3.for语句的一般形式中省略表达式2
格式如下:
for(表达式1;;表达式3)
循环体语句;
4.for语句的一般形式中省略表达式3
for(表达式1;表达式2;)
循环体语句;
例5.4的循环语句:
for(i=1;i<=n;i++)
factorial=factorial*i;
等价于:
for(i=1;i<=n;)
{
factorial=factorial*i;
i++;
}
5.for语句的一般形式表达式1和表达式3也可以是逗号表达式
例5.3的程序段:
sum=0;
for(i=1,i<=n;i++)
sum=sum+i;
等价于:
for(sum=0,i=1;i<=n;i++)
sum=sum+i;
表达式sum=0,i=1为逗号表达式。
6.for语句的一般形式表达式2的值只要非0,就执行循环体
例如:
for(;(ch=getchar())!='n';)
printf("%c",ch)
7.for语句的一般形式中循环语句可以省略
例5.3的循环语句:
for(i=1;i<=n;i++)
sum=sum+i;
等价于:
for(i=1;i<=n;sum=sum+i,i++);
5.2.2 for循环使用示例
【例5.5】输入一个整数n,计算1-1/4+1/7-1/10+1/13-1/16+...的前n项之和
#include<stdio.h>
int main()
{
int n,i,denominator,flag;
float sum,item;
printf("输入n的值");
scanf("%d",&n);
flag=1;
denominator=1;
sum=0;
for(i=1;i<=n;i++)
{
item=flag*1.0/denominator;
sum=sum+item;
flag=-flag;
denominator=denominator+3;
}
priintf("Sum=%.2fn",sum);
return 0;
}
【例5.6】输入10个数,输出其中的最大数
#include<stdio.h>
int main()
{
int i;
float x,max;
printf("请输入第1个数:")
scanf("%f",&x)
max=x;
for(i=1;i<=9;i++)
{
priintf("请输入第%d个数:",i+1);
scanf("%f",&x);
if(x>max)
max=x;
}
printf("10个数的最大值是:%.0f",max);
return 0;
}
【例5.7】输出所有的水仙花数
#include<stdio.h>
int main()
{
int number,a,b,c;
for(number=100;number<=999;number++)
{
a=number/100;
b=number%100/10;
c=number%10;
if(number==a*a*a+b*b*b+c*c*c)
printf("%5d",number);
}
return 0;
}
【例5.8】由键盘输入一个正整数,判断该数是否为完数
#include<stdio.h>
int main()
{
int number,sum,i;
printf("请输入一个正整数:")
scanf("%d",&number);
sum=0;
for(i=1;i<=number-1;i++)
if(number%i==0)
sum=sum+i;
if(number==sum)
printf("%d是完数n",number);
else
printf("%d不是完数n",number);
return 0;
}
运行结果2
【例5.9】统计由键盘中输入的若干个字符中,大写英文字母、小写英文字母、数字字符和其他字符的个数。
#include<stdio.h>
int main()
{
int upper,lower,digit,i,other;
char ch;
upper=lower=dight=other=0;
printf("输入10个字符:");
for(i=1;i<=10;i++)
{
ch=getchar()
if(ch>='a'&&ch<='z')
lower++;
else if(ch>='A'&&ch<='Z')
upper++;
else if(ch>='0'&&ch<='9')
digit++;
else
other++;
}
printf("小写字母%d个,大写字母%d,数字%d个,其他字符%d个n",lower,upper,digit,other);
return 0;
}
【5.10】任意输入一行小写字母,将它们转换成大写字母后输出
【例5.11】 由键盘输入3个数字,将其组合成一个整型数并输出
【5.12】由键盘输入一个正整数,判断其是否为素数
运行结果2
5.3 使用while语句实现循环结构
5.3.1 while语句的基本语法
while语句一般形式如下:
while(表达式)
循环体;
while语句的执行流程如图5.3所示
第一步:计算表达式的值,若表达式的值为“真”,则执行第2步;若表达式的值为“假”,则转到第4步。
第二步:执行循环体语句。
第三步:返回第一步。
第四步:结束循环,执行while语句的下一条语句。
注意:while语句的特点是先判断循环条件,后执行循环体。
5.3.2 while循环使用示例
【例5.13】计算sum的值
【5.14】输入一个正整数n,计算n!
【5.15】由键盘输入一串字符,分别统计输入字符中数字字符、字母字符及其它字符个数
5.4 使用 do-while语句实现循环结构
5.4.1 do-while语句的基本用法
do
循环体
while(表达式);
do-while语句的执行流程如图5.4所示
1.执行循环体语句;
2.计算表达式的值,若表达式的值为‘真’,返回第一步;若表达式的值为‘假’,则执行第3步;
3.结束循环;
注意:do-while语句的特点是先循环体,后判断循环条件。因此,do-while循环至少要执行一次循环体。
5.4.2 do-while循环使用示例
【例5.16】使用do-while语句计算sum=n的值
【例5.17】求两个自然数的最大公约数和最小公倍数
【例5.18】输入一个整数,统计该数的位数
5.5 改变循环结构的跳转语句
5.5.1 break语句
break结束整个循环
【例5.19】分析下面程序的运行结果
【例5.20】由键盘输入一个正整数,判断其是否为素数
运行结果1
运行结果2
【例5.21】从键盘输入一批学生的成绩,计算平均分,并统计不及格成绩个数
5.5.2 continue语句
作用:结束本次循环,开始下次循环
【例5.22】把1~100之间能7整除的数,以每行5个的形式在屏幕上输出
【例5.23】分析下面程序运行结果
5.5.3 goto语句
四种循环控制语句,for循环语句、while循环语句、do-while循环语句 、goto循环
注意:语句标号必须与goto语句处于同一个函数中。通常goto语句与if语句连用实现循环控制
【例5.24】使用goto语句计算sum=n的值
5.6 循环嵌套
【例5.25】求1!+2!+3!+...+10!
【例5.26】输出乘法口诀表
【例5.27】求100以内的素数。要求每行输出10个。
【例5.28】将10~20之间的正整数分解质因数
5.7 典型算法举例
5.7.1 递推法
【例5.29】
【例5.30】求sin(x)=x-x^3/3!+x^5/5!-x^7/7!+...的近视值,要求精确到10负6次方
5.7.2 迭代法
【例5.31】
5.7.3 穷举法
【例5.32】
【例5.33】判断由1、2、3、4四个数字能组成多少个互不相同且无重复数字的三位数?输出这些数
最后
以上就是潇洒麦片为你收集整理的第五章 循环结构程序设计总结的全部内容,希望文章能够帮你解决第五章 循环结构程序设计总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复