迭代语句通常称为循环,它重复执行操作直到满足某个条件才停下来。while和for语句在执行循环体之前检查条件,do while语句先执行循环体,然后再检查条件。
在 C 语言中, while 循环用于在给定条件为真时,重复执行一段代码。
其基本语法结构为:
while
{
// 循环体,要重复执行的代码
}
执行过程如下:
首先计算 条件表达式 的值,如果值为真(非零),则执行 循环体 中的语句。执行完 循环体 后,再次计算 条件表达式 的值,若仍为真,继续执行 循环体 ;若 条件表达式 的值为假(零),则结束 while 循环,执行后续的代码。
例子如下:
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 5)
{
printf("%d ", i);
i++;
}
return 0;
}
while循环与for循环的区别:
在 C 语言中, while 循环和 for 循环有以下一些区别:
1. 语法结构:
while 循环的语法结构为: while(条件表达式) { 循环体 }
for 循环的语法结构为: for(初始化表达式; 条件表达式; 更新表达式) { 循环体 }
2. 初始化部分:
while 循环在循环开始前,没有专门的初始化部分。相关的初始化操作通常在 while 循环之前进行。
for 循环将初始化、条件判断和更新操作都集中在一个语句中,使得循环的控制更加清晰和简洁。
3. 适用场景:
如果循环的条件判断在循环开始前不太容易确定,或者初始化操作比较复杂且与循环条件没有直接关系,可能更适合使用 while 循环。
当循环的次数明确或者需要在循环过程中进行多个控制操作(如初始化、条件判断和更新)时, for 循环通常更方便。
4. 灵活性:
while 循环相对来说更加灵活,因为它的结构更简单,只关注条件判断。
for 循环由于其完整的结构,在一些情况下可以使代码更具可读性和可维护性。
关于while循环的一些例子:
输入任意正整数,逆序输出该正整数。
#include<stdio.h>
int main(){
int n;
scanf("%d", &n);
while(n){
printf("%d", n%10);
n /= 10;
}
return 0;}
输入正整数n,统计1到n的范围内1共出现多少次。
#include<stdio.h>
int main()
{
int n, i, temp, count = 0;
scanf("%d", &n);
for(i = 1; i <= n; i++){
temp = i;
while(temp){
if(temp % 10 == 1)
count++;
temp /= 10;
}}
printf("%d", count);
return 0;
}
回文数是指一个数字从左到右和从右到左读取都相同的数。例如,数字121、5335和6084806都是回文数,而123和987不是回文数,因为它们不能以其数字的原始顺序反向读取。输入一个正整数n,若是正整数则输出"是回文数",否则输出"不是回文数"。
#include<stdio.h>
int main()
{
int n, revs = 0, temp;
scanf("%d", &n);
temp = n;
while(n){
revs = revs*10+n%10;
n /= 10;
}
if(temp==revs)
printf("%d是回文数",temp);
else
printf("%d不是回文数",temp);
return 0;
}
水仙花数只是自幂数的一种,自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身,其它位数的自幂数名字包括:一位自幂数:独身数 {0,1,2,3,4,5,6,7,8,9}三位自幂数:水仙花数 {153,370,371,407}四位自幂数:四叶玫瑰数 {1634,8208,9474}五位自幂数:五角星数{54748,92727,93084}六位自幂数:六合数 {548834}七位自幂数:北斗七星数 {1741725,4210818,9800817,9926315}八位自幂数:八仙数 {24678050,24678051,88593477}九位自幂数:九九重阳数 {146511208,472335975,534494836,912985153}十位自幂数:十全十美数 {4679307774}通过编程计算输出所有的一位自幂数至七位自幂数。
#include<stdio.h>
int main()
{
int i, j, sum, temp;
for(i = 1; i <= 7; i++){
for(j = pow(10, i-1);j < pow(10, i);j++){
sum = 0;
temp = j;
while(temp){
sum += pow(temp%10, i);
temp /=10;
}
if(sum == j)printf("%d\t", sum);
}
printf("\n");}
return 0;
}