7.1.1 什么是重复执行
重担执行,意味着反反复复地执行一条语句,什么样的语句 呢?两种,一种是完全相同的语句,另一种是结构十分相似的语句 ,总之是一些可以转化成重复执行的操作。
有for,while,do-while
无论何种机制,一定满足3个通俗的条件之一或多个,有起点,有终点,有重复执行的语句。
三种循环都能实现循环,虽然各有千秋,但是功能可以完全相互替代,下面我们通过两个示例来分别比较3种循环的实现方式。
示例 1 编程获取用户输入的5个整数,然后输出5个整数中最小的整数。
实现的方法有多种,本小节只比较3种循环实现的方法。无论如何循环的次数最多5次,也就是说本循环的次数是确定的。
用for循环来实现:
#include<stdio.h> int main(int argc,char* argv[]) { int num1,num2; scanf("%d",&sum1); for (int i=1;i<=4;i++) { scanf("%d",&num2); if (num1>num2) num1=num2; } printf("最小的数是%d",num1); return 0; }
while
#include<stdio.h> main() { int num1,num2; scanf("%d",&num1); int i =1; while(i<=4) { scanf('%d',&num2); if (num1>num2) num1=num2; i++; } printf("最小的数是"); return 0; }
do-while
#include <stdio.h> main() { int num1,num2; scanf("%d",&num1); int i=1; do { scanf("&d",&num2); if (num1>num2) num1=num2; i++; }while(i<=4) printf("最大的数是%d:"); return 0; }
结:
for 循环和while循环都是先判断,再执行循环体,而do-while是执行循环体再判断。while 与do-while循环的条件表达式只能放循环的终止条件,起始和步进条件分别放在循环的前面与循环的里面。
示例2 由用户输入 一串字符,编程判断字符串中字符‘a’出现的次数。
for
#include<stdio.h> main() { puts("input an string"); char c=getchar(); int coun_numm =0; for (;c!=' ';) { if (c=='a') count_num++; c=getchar(); } printf("字母a的数目是:%d",count_num); return 0; }
while
#include <stdio.h> main() { puts("inpuit a string"); char c=getchar)_; int count_num=0; while(c!='a') { if (c=='a') count_num++; c=getchar(); } printf("字母a的个数是%d",count_num); return 0; }
do-while
#include <stdio.h> main() { puts("input an string"); char c; int count_num =0; do { c = getchar (); if (c=='a') count_num++; }while(c!=' ') printf("字母a的个数是%d",count_num); return 0; }
for 的3个表达式可以依据问题的需要任意省略和填充,因此它的书写方式也是最灵活的