当前位置:文档之家› 循环结构程序设计:三种循环语句

循环结构程序设计:三种循环语句

sum = sum + i ; //循环变量累加到sum中
i = i + 1; //改变循环变量i的值
}while(i<=100);//注意最后的分号
3.for语句
①功能:实现当型循环结构。
②形式
for(表达式1;表达式2;表达式3){
循环体
}
③特点:先判断后执行;使用频率最高。
④举例:修改上例。
/*使用for语句编程计算整数1~100的和。*/
/*方法一:利用for语句实现。*/
int i , n ;
long int p = 1 ;
scanf("%d" , &n) ;
for( i = 1 ; i <= n ; i++ ){
p = p * i ;
}
printf("%d!=%ld\n", n , p );
/*方法二:利用while语句实现。*/
if(number % i == 0){
flag = 0 ; //如果能整除number,则说明number不是素数,存在因子,故素数标识改为0
printf("%d\t" , i ) ; //依次输出因子
}
}
printf("\n");
if(flag)
printf("%d没有因子,是素数。\n",number);
/*方法一*/
#include <stdio.h>
main(){
int number ;
int i ; //===========定义循环变量i=====
int flag = 1 ;//======定义素数标识,初始为1=====
printf("please input a number :\n");
注意:计算累加和时,需要累加和变量清0。
2.循环次数已知的累乘积问题
①编程计算n!=1*2*3*4*……*n的值。(课本第107页例题4.10)
要想解决这个问题,需要用到“递推”的程序设计方法。也就是说,求n!时,先求1!,用1!*2得到2!,用2!*3得到3!,以此类推,直到利用(n-1)!*n得到n!为止,问题即可解决。
三、程序举例
1.循环次数已知的累加和问题
①编程实现计算100以内偶数的和。
/*方法一:使用for语句*/
sum = 0 ;
for( i = 2 ; i <=100 ; i = i + 2 ){
sum = sum + i ;
}
/*方法二:使用while语句*/
sum = 0 ;
i = 2 ;
while( i <=100 ){
else
printf("NO====>%d is not a prime number!\n",number);
}
(3)从键盘任意输入一个正整数,编程实现:若该整数不是素数,则打印它所有因子;否则,打印“没有因子,是素数”的提示信息。(参见课本第131页例4.20)
#include <stdio.h>
}
}
printf("\n");
if(flag) //========素数标识为1,输出是素数,否则输出不是素数==========
printf("YES====>%d is a prime number!\n",number);
else
printf("NO====>%d is not a prime number!\n",number);
一、循环结构(Iteration Structure)的概述
1.目的
为了解决含有重复处理内容的问题,必须采用循环语句(Loop Statement)来编程实现。
2.类型
(1)当型循环结构
(2)直到型循环结构
二、循环语句
1.while语句
①功能:实现当型循环结构。
②形式
while(表达式){
循环体
}
③特点:先判断后执行。
int i , n ;
long int p = 1 ;
scanf("%d" , &n) ;
i = 1;
while( i <= n ){
p = p * i ;
i = i + 1 ;
}
printf("%d!=%ld\n", n , p );
/*方法三:利用do-while语句实现。*/
int i , n ;
①功能:实现直到型循环结构。
②形式
do{
循环体
}while(表达式); //注意最后的分号
③特点:先执行后判断。
④举例:修改上例。
/*利用do-while语句编程实现整数1~100的和。*/
int i ; //循环变量
int sum = 0 ; //累加和清0
i = 1 ; //循环变量i赋初值
do{
}else if(guess < magic){
printf("猜错了!Too small!\n");
}else{
printf("猜对了!\n");
printf("您猜的数字为:%d\n",guess);
}
}while( guess!=magic && count <=3 ); //判断循环终止条件,最多三次机会
(1)猜数字游戏升级版:编程实现猜数字游戏,要求所猜数字为1~10之间的整数,游戏者只有三次机会,猜数字游戏过程中会根据游戏者所猜数字的大小给出一定的信息提示,增强游戏的趣味性。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
main(){
}
改进:为了减少循环次数,用数学的方法可以证明:只需用2~sqrt(m)之间的数去除m,即可得到正确的判定结果。
/*方法二:目的使用sqrt()*/
#include <stdio.h>
#include <math.r ;
int i ; //===========定义循环变量i=====
long int p = 1 ;
scanf("%d" , &n) ;
do{
p = p * i ;
i = i + 1 ;
}while( i <= n) ;
printf("%d!=%ld\n", n , p );
第159页课后习题4.14属于循环次数已知,计算累乘积的问题。参考代码
注意:计算累乘积时,需要累乘积变量置1。
if(number % i == 0){
flag = 0 ; //如果能整除number,则说明number不是素数,存在因子,故素数标识改为0
}
}
printf("\n");
if(flag) //========素数标识为1,输出是素数,否则输出不是素数==========
printf("YES====>%d is a prime number!\n",number);
sum = sum + i ;
i = i + 2 ;
}
/*方法三:使用do-while语句*/
sum = 0 ;
i = 2 ;
do{
sum = sum + i ;
i = i + 2 ;
}while(i <= 100) ;
第159页课后习题4.10、4.11、4.12、4.13属于循环次数已知,计算累加和的问题。参考代码
int magic ; //计算机“想”的数
int guess ; //人猜的数
int count ;
srand(time(NULL)); //标准库函数srand()为函数rand()设置随机数种子
magic = rand() % 10 +1; //生成1-10之间的整数
//=====利用do-while循环完成猜数字游戏======
count = 0 ; //计算器清零
do{
printf("请您输入您要猜的整数:(1-10之间)\n");
scanf("%d",&guess); //读入人猜的数
count++ ;
//判断计算机“想”的数与人猜的数的大小
if(guess > magic){
printf("猜错了!Too big!\n");
for(表达式1;表达式2;表达式3){
循环体;
}
表达式1 ;
while(表达式2){
循环体;
表达式3;
}
②for语句适合循环次数事先已知的情况;而while语句和do-while语句适合循环次数事先未知的情况。
③当第一次进入循环时条件就不满足,while语句和do-while语句就不等价。除此情况外,while语句和do-while语句均等价。
}
main(){
int number ;
int i ;
int flag = 1 ;
printf("please input a number :\n");
scanf("%d",&number); //=====从键盘输入一个整数===
相关主题