满足循环条件,执行对应的循环语句。
目录
1、while循环
2、do...while循环
3、for循环
4、嵌套循环
1、while循环
语法:while(循环条件){循环语句}
当循环条件为真时,才执行循环语句。
//打印数字0~9 #includeusing namespace std; int main() { int num = 0; while(num<10) { cout << num << endl; num++; } system("pause"); return 0; }
特别要注意的是,因为只有当循环条件为真时,才执行循环语句。如果while(1),那么程序就会一直不停执行,陷入死循环。
while循环练习
要求:系统随机生成一个1~100的数字,玩家进行猜测。如果猜错,提示玩家数字过大或过小,如果猜对恭喜玩家胜利,并且退出游戏。
#includeusing namespace std; //#include //在生成随机数时用到了srand,有些需要加这个头文件 int main() { srand((unsigned int)time(NULL)); int num = rand()%100 + 1;//如果没有上面那句代码,那么只会生成伪随机数 //即每次产生的随机数都一样。 //加了上面那句那就是根据系统时间来生成的不一样的随机数了 int val = 0; while(val != num) { cout << "请输入您猜测的数字:" << endl; cin >> val; if(val < num) { cout << "您的猜测过小" << endl; } else if(val > num) { cout << "您的猜测过大" << endl; } else { cout << "您的猜测正确!" << endl; } } system("pause"); return 0; }
2、do...while循环
语法:do{循环语句}while(循环条件)
注意:do...while循环是先执行一次循环语句,再判断循环条件。
#includeusing namespace std; int main() { int num = 0; do { cout << num << endl; num++; } while(num < 10); system("pause"); return 0; }
练习:求出所有三位数中的水仙花数。(水仙花数:每个位上的数字的3次幂之和等于它本身的数)
#includeusing namespace std; int main() { int num = 100; int a = 0, b = 0, c = 0;//a、b、c分别表示三位数的个位、十位、百位 cout << "水仙花数有: " << endl; do { a = num % 10;//获取个位数字 b = num / 10 % 10;//获取十位数字 c = num / 100;//获取百位数字 if(a*a*a + b*b*b + c*c*c == num)//判断与num是否相等 { cout << num << endl;//相等就打印,不相等就执行num++ } num++; }while(num < 1000); system("pause"); return 0; }
while循环与do...while循环的区别:
while循环先判断循环条件再执行循环语句;
do...while循环先执行一次循环语句,再判断循环条件。
3、for循环
语法:for(起始表达式;循环条件;末尾循环体){循环语句;}。
其中的起始表达式、循环条件可以末尾循环体可以写在()里,也可以写在循环体中,并且起始表达式只执行1次,然后判断循环条件,如果满足条件则执行循环语句,再执行末尾循环体,执行完毕再接着判断循环条件······当条件不满足时,退出for循环。比如下面的例子:
//打印数字0~9 #includeusing namespace std; int main() { for(int i = 0; i < 10; i++) { cout << i << endl; } //int i = 0; //这样写代码就变复杂了 //for(; ; ) //{ //if(i > 10) //{ //break; //} //cout << i << endl; //i++; //} system("pause"); return 0; }
for循环,代码结构清晰,简短,使用频率更高。
4、嵌套循环
嵌套循环,在循环中再嵌套循环,用来解决一些实际问题,比如输出矩阵
10 x 10的矩阵星图:
#includeusing namespace std; int main() { for (int i = 0; i < 10; i++)//打印竖排 { for (int j = 0; j < 10; j++)//打印横排 { cout << "* "; } cout << endl; } system("pause"); return 0; }



