goto转向语句
标号它是由一个名字加上一个冒号”:“来组成的。该标号通常被放置在一段可执行的c++语句的左边,通过它后面的goto语句来实现跳转。
goto是转向语句,它表示无条件地跳转到标号处。
由于goto语句能直接跳到程序的某一处开始执行,因此会导致许多不易察觉的错误,并且使程序结构看上云不那么严密,松散很多。
所以不要再用goto语句,goto语句一旦出了错,要调试起来是非常困难的。
例:
#include <iostream>
int main(){
int i = 1;
number:++i; //nubmer是标号
std::cout << "*";
if(i<10){ //循环了9次,所以输出了9个"*"
goto number; //无条件跳转到number标号处
}
std::cout << "\n程序结束!\n";
std::cout << "*********\n";
return 0;
}
输出:
*********
程序结束!
*********
while循环语句
while语句只要它后面的条件为真,那么就会不断的执行一段代码。while语句一定要满足条件才会执行,直到条件不满足才会跳出循环。
例:
#include <iostream>
int main(){
int i = 1;
while (i<10) {
std::cout << "*";
++i;
}
std::cout << "\n程序结束\n";
std::cout << "*********\n";
return 0;
}
输出:
*********
程序结束
*********
字符条件的while循环语句
字符也可以用于while循环语句的条件。
例:
#include <iostream>
int main(){
char choice = 'y';
while(choice == 'y' || choice == 'Y'){
std::cout << "问君能有几多愁,怡似一江春水向东流\n";
std::cout << "再看一遍?(Y/N):";
std::cin >> choice;
}
std::cout << "程序结束!\n";
return 0;
}
输出: 输入y
问君能有几多愁,怡似一江春水向东流
再看一遍?(Y/N):y
问君能有几多愁,怡似一江春水向东流
再看一遍?(Y/N):
输出:输入n
问君能有几多愁,怡似一江春水向东流
再看一遍?(Y/N):n
程序结束!
限定次数的while循环语句
#include <iostream>
int main(){
int count = 0; //计次
int many; //循环次数
std::cout << "你想看几次?";
std::cin >> many;
while(count < many){
std::cout << "问君能有几多愁,怡似一江春水向东流\n";
++count; //计次
}
std::cout << "程序结束!\n";
return 0;
}
输出:输入4
你想看几次?4
问君能有几多愁,怡似一江春水向东流
问君能有几多愁,怡似一江春水向东流
问君能有几多愁,怡似一江春水向东流
问君能有几多愁,怡似一江春水向东流
程序结束!
continue和break语句
假如你想让程序执行到循环体的某处时,忽略后面所有语句,跳到while循环开始处重新开始,就使用continue;
例:
#include <iostream>
int main(){
int i = 0;
while(i<3){
i++;
if(i == 1){ //如果i的值是1,那么就不输出
continue; //跳到循环开始处重新开始循环
}
std::cout << "i的值是:" << i << std::endl;
}
return 0;
}
输出:
i的值是:2
i的值是:3
break语句
当在while循环体内,可使用break语句跳出循环。
注:break跳出的是循环,而不是退出程序。
例:
#include <iostream>
int main(){
int i = 0;
while(i<3){
i++;
if(i == 1){ //如果i的值是1,那么就跳出while循环
break; //跳出循环
}
std::cout << "i的值是:" << i << std::endl;
}
std::cout << "程序结束!\n";
return 0;
}
输出:
程序结束!
永不休止的while循环
当while循环条件是1或是true时,如不在循环体内设定跳出条件(如break语句),那么就会一直循环下去。
例:
#include <iostream>
int main(){
while(true){
int n;
std::cout << "请输入一个数字:";
std::cin >> n;
std::cout << "您输入的数字是:" << n << std::endl;
}
return 0;
}
输出: 因没有退出条件,所以会一直循环下去。
请输入一个数字:1
您输入的数字是:1
请输入一个数字:2
您输入的数字是:2
请输入一个数字:3
您输入的数字是:3
请输入一个数字:4
您输入的数字是:4
请输入一个数字:5
您输入的数字是:5
请输入一个数字:
do…while循环
do…while循环保证无论在什么样的情况下,循环都会最少执行一次。
#include <iostream>
int main(){
int many;
std::cout << "你想看几次?";
std::cin >> many;
do{
many--;
std::cout << "问君能有几多愁,怡似一江春水向东流\n";
}while(many>0);
std::cout << "程序结束!\n";
return 0;
}
输出:输入0
你想看几次?0
问君能有几多愁,怡似一江春水向东流
程序结束!
输出:输入3
你想看几次?3
问君能有几多愁,怡似一江春水向东流
问君能有几多愁,怡似一江春水向东流
问君能有几多愁,怡似一江春水向东流
程序结束!
for循环
for(初始化语句,条件判断语句,累加语句或语句);
初始化语句:用于初始化,可多个变量,变量与变量间使用逗号”,”隔开
条件判断语句:用于是否进行循环的判断
累加语句或语句:累加
如:
for(int i=0;i<5;i++){}
该语句指进行5次循环。
先执行初始化语句,再进行条件判断,如条件为真,那么执行循环体内的代码,为假就退出循环。
每循环完一次执行累加语句进行累加,再进行条件判断语句,如条件为真就继续执行,为否退出循环。
例:
#include <iostream>
int main(){
int many;
std::cout << "你想看几次?";
std::cin >> many; //接收循环次数
for(int i = 0; i<many; i++){
std::cout << "问君能有几多愁,怡似一江春水向东流!\n";
}
std::cout << "程序执行完毕!\n";
return 0;
}
输出:输入2
你想看几次?2
问君能有几多愁,怡似一江春水向东流!
问君能有几多愁,怡似一江春水向东流!
程序执行完毕!
例:累加条件位置处写的语句
#include <iostream>
int main(){
int i = 0;
for(;i<5;std::cout << "累加条件位置处写的语句 "){
i++;
std::cout << "问君能有几多愁!\n";
}
return 0;
}
输出:
问君能有几多愁!
累加条件位置处写的语句 问君能有几多愁!
累加条件位置处写的语句 问君能有几多愁!
累加条件位置处写的语句 问君能有几多愁!
累加条件位置处写的语句 问君能有几多愁!
累加条件位置处写的语句
多个初始化变量例子:
#include <iostream>
int main(){
for(int x= 0, y = 0, z = 0; x<3; x++, y++, z++){
std::cout << "x:" << x;
std::cout << "y:" << y;
std::cout << "z:" << z;
std::cout << std::endl;
}
return 0;
}
条件为空的for循环
只需在条件位置写上”;”。
例:
#include <iostream>
int main(){
int i = 0;
for(;i<5;){
i++;
std::cout << "问君能有几多愁,恰似一江春水向东流!\n";
}
return 0;
}
输出:
问君能有几多愁,恰似一江春水向东流!
问君能有几多愁,恰似一江春水向东流!
问君能有几多愁,恰似一江春水向东流!
问君能有几多愁,恰似一江春水向东流!
问君能有几多愁,恰似一江春水向东流!
例:
#include <iostream>
int main(){
int i = 0;
for(;;){ //3个条件都为空
if(i<5){ //循环5次
std::cout << "问君能有几多愁,恰似一江春水向东流!\n";
}
else{ //循环5次后跳出循环
break;
}
i++; //累加条件
}
return 0;
}
输出:
问君能有几多愁,恰似一江春水向东流!
问君能有几多愁,恰似一江春水向东流!
问君能有几多愁,恰似一江春水向东流!
问君能有几多愁,恰似一江春水向东流!
问君能有几多愁,恰似一江春水向东流!
嵌套的for循环
嵌套就是一个循环中包含另一个循环。
外面的循环每执行一次,里面的循环都要完全的执行一次。
例:
#include <iostream>
int main(){
int a,b;
char c;
std::cout << "多少行?";
std::cin >> a;
std::cout << "多少列?";
std::cin >> b;
std::cout << "什么字:";
std::cin >> c;
for(int i = 0; i<a; i++){ //行
for(int j = 0; j<b; j++){ //列
std::cout << c << " ";
}
std::cout << "\n";
}
return 0;
}
输出: 输入4行3列a字
多少行?4
多少列?3
什么字:a
a a a
a a a
a a a
a a a
switch语句
switch语句可以根据不同的数字或字符选择不同的分支。
break语句可以跳出switch语句。
如switch语句分支中无break,那么它会从当前的case处一直向下执行,直到遇到break语句
switch语句首先检查小括号中的变量,这个变量可以是数字,也可以是字符,也可以是表达式,总之有一个可供判断的值。
如果小括号的值出现在某个case中,与该case相关联的语句就会执行。执行完毕后,break语句会让程序跳出switch语句循环。
假如小括号的值与case所有的数字和字符都不相符,会执行default分支的语句。
如果既没有匹配的值也没有default分支,那么程序会自动退出switch语句。
格式:
switch(变量){
case 1:语句;
break;
case 2:语句;
break;
… …
case 999:语句;
break;
default:语句;
}
#include <iostream>
int main(){
int choice;
std::cout << "请输入一个整数:";
std::cin >> choice;
switch (choice) {
case 0:
std::cout << "您输入的是0\n";
break;
case 1:
std::cout << "您输入的是1\n";
break;
case 2:
std::cout << "您输入的是2\n";
break;
case 3:
std::cout << "您输入的是3\n";
break;
default:
std::cout << "您输入的不是0~3之间的有效数字!\n";
}
std::cout << "程序结束!\n";
return 0;
}
输出:输入3
请输入一个整数:3
您输入的是3
程序结束!
输出:输入5
请输入一个整数:5
您输入的不是0~3之间的有效数字!
程序结束!