循环结构有三种语句:while,for,do while。
例1:
输⼊⼀个正的整数,逆序打印这个整数的每⼀位
例如:
输⼊:1234,输出:4 3 2 1
输⼊:521,输出:1 2 5
显然,要让程序完成这个任务。需要有代码重复执行,并且根据情况不同,重复执行的次数也应不同。此时,可用到while循环,代码示例如下:
int main(){
int a = 0;
scanf("%d", &a);
while (a % 10 != 0) {
printf("%d ",(a%10));
a = a / 10;
}
return 0;
}
while循环,每执行循环体代码前,会先对括号内表达式进行判断,若为真或非0,则会执行,执行循环体后再判断括号内表达式,如此往复,直到括号内表达式为假或0。
不难想到,while循环的循环体内需要有改变循环条件表达式的语句(例如i++,i--),否则会进入死循环。此外,在while循环前也应当有设置初始循环条件的语句。当循环体内容复杂时,初始条件,条件判断,条件改变三个部分相隔甚远,便不利于代码的优化与维护。
因而,能不能将这三个部分集中放置的想法自然产生。
for循环
相较于while循环,for循环正是有着这一优势。同样的例子,用for循环写则如下:
int main() {
int a = 0;
for (scanf("%d", &a); a % 10 != 0; a /= 10) {
printf("%d", (a % 10));
}
return 0;
}
do while循环
不同于for循环和while循环,do while循环是先执行,再判断
int main() {
int n = 0;
while (n<0) {
printf("这是在while循环中打印的 %d\n", n);
}
do {
printf("这是在do while循环中打印的 % d\n", n);
} while (n < 0);
}
例:输⼊⼀个正整数,计算这个整数是⼏位数
int main() {
int count = 0;
int num = 0;
scanf("%d", &num);
do {
count++;
num /= 10;
} while (num % 10 != 0);
printf("%d", count);
}
do while有优势的情景不多,因而do while循环是应用相对较少的循环语句,但是上述情境中do while循环表现的更好,因为一个数字最少也是一位数。