while循环控制语句
while(条件){ //只要条件为真,将一直执行,要避免死循环到一定条件要退出。除c51单片机代码
执行满足条件的语句
}
爱你一万遍:
/*
int i = 0;
while(i <10){
puts("I love you");
i = i + 1;
} //正常写法
*/
//简易写法
int times;
times = 10;
while(times){
puts("I love you");
times --;
printf("%d\n",times);
}
return 0;
条件值为0即为假即退出
tips:cmd中上下键可调用之前写过的命令,如果陷入死循环,则按Ctrl+c结束,cls是清理屏幕命令
i=i+1也可以写成i++
i=i-1也可以写成i--
求和1到100所有数据之和
int i = 100;
int sum = 0;
while(i){
sum = sum + i;
printf("i: %d\n",i);
i --;
}
printf("sum=%d\n",sum);
return 0;
dowhile
#include <stdio.h>
int main()
{
int data = 10;
do{
puts("this is a test");
data --;
}while(data != 0);
return 0;
}
while的三个表达式:初始值,条件的临界值,条件发生变化
for循环
int data;
//条件赋初值;判断临界值;条件改变
for(data=0;data<10;data++){
puts("i miss you");
}
其他形式
int data=0;
for(;data<10;data++){
puts("i miss you");
}
int data=0;
for(;data<10;){
puts("i miss you");
data++;
}
int data=0;
for(;;){
puts("i miss you");
data++;
}死循环
C99允许:
for(int i = 0;i<100;i++);
break提前结束循环
int numOfPerson;
int totalMoney = 0;
int money;
for(numOfPerson = 1;numOfPerson < 1000;numOfPerson ++){
puts("请输入捐款的数目:");
scanf("%d",&money);
totalMoney = totalMoney + money;
if(totalMoney >= 100000){
puts("捐款已经达到10万元了");
break;
}
}
printf("总捐款人数是%d人\n",numOfPerson);
printf("总捐款金额是%d元\n",totalMoney);
printf("人均捐款金额是%.2f元\n",(float)totalMoney/numOfPerson);
return 0;
结果
请输入捐款的数目:
456
请输入捐款的数目:
5468
请输入捐款的数目:
3365
请输入捐款的数目:
3594
请输入捐款的数目:
5599
请输入捐款的数目:
56465
请输入捐款的数目:
15151
请输入捐款的数目:
1454
请输入捐款的数目:
15584
捐款已经达到10万元了
总捐款人数是9人
总捐款金额是107136元
人均捐款金额是13392.00元
continue提前结束本次循环
要求输出100-200之间不能被3整除的数
#include <stdio.h>
int main()
{
int data = 100;
int i = 0;
for(;data <= 200;data ++){
if(data % 3 == 0){
continue;
}
printf("%d,",data);
i ++;
}
printf("\n一共有%d个数\n",i);
return 0;
}
结果:
100,101,103,104,106,107,109,110,112,113,115,116,118,119,121,122,124,125,127,128,130,131,133,134,136,137,139,140,142,143,145,146,148,149,151,152,154,155,157,158,160,161,163,164,166,167,169,170,172,173,175,176,178,179,181,182,184,185,187,188,190,191,193,194,196,197,199,200,
一共有68个数
循环嵌套
#include <stdio.h>
int main()
{
int i;
int j;
for(i = 1;i <= 4;i ++){
for(j = 1;j <= 5;j ++){
printf("%d ",i*j);
}
printf("\n");
}
return 0;
}
结果
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
练习
1.输入两个正整数,求其最大公约数和最小公倍数
#include <stdio.h>
int main()
{
int m, n, num1, num2, temp;//定义整型变量
printf("请输入两个数:");//提示语句
scanf("%d%d",&num1,&num2);//键盘输入两个数
m=num1; //赋值
n=num2; //赋值
while(num2!=0) // 余数不为0,继续相除,直到余数为0
{
temp=num1%num2;
num1=num2;
num2=temp;
}
printf("最大公约数是:%d\n", num1);//输出最大公约数
printf("最小公倍数是:%d\n", m*n/num1);//输出最小公倍数
return 0;
}
结果:
请输入两个数:12 20
最大公约数是:4
最小公倍数是:60
2.水仙花数
int n,i,j,k;
puts("三位数的水仙花数有:");
for(n = 100;n < 1000;n ++){
i = n / 100;
j = n / 10 % 10;
k = n % 10;
if((i*i*i + j*j*j + k*k*k) != n){
continue;
}
printf("%d ",n);
}
结果
三位数的水仙花数有:
153 370 371 407
循环结束罗。