c++ 学习之路(三)
循环语句
while 循环
#include <iostream>
using namespace std;
int main() {
while(condition) {
// here is your code
}
return 0;
}
如果我们想要将0到100相加得到最后数值,可以这么写
#include <isotream>
using namespace std;
int main() {
int num = 1, sum = 0;
while(num < 101) {
sum += num;
num += 1;
}
// 5050
cout << sum << endl;
return 0;
}
注意事项,在循环外需要定义变量,然后才能放入循环中。while是满足()内的要求后才进入循环进行计算。这个和do … while() 有区别。
do … while() 循环
#include <iostream>
using namespace std;
int main() {
do {
// here is your code
} while(condition);
return 0;
}
如果将0和100相加,可以这么写:
#include <iostream>
using namespace std;
int main() {
int num = 0, sum = 0;
do {
num += 1;
sum += num;
} while(num < 100);
cout << sum << endl;
return 0;
}
这里,当num = 99时,还是可以循环的,所以进循环,加1, num 变成100,sum 变为5050 。
for 循环
#include <iostream>
using namespace std;
int main() {
for (int i; i < n ; i++) {
// here is your code
}
return 0;
}
其中斐波那契数就可以这么写 1,1,2,3,5,8…
#include <iostream>
using namespace std;
int main() {
int num1 = 1, num2 = 1, temp;
int fb[11];
fb[0] = num1;
fb[1] = num2;
for(int i = 0; i < 9 ; i++) {
temp = num1 + num2;
num1= num2;
num2 = temp;
fb[i+2] = num2;
}
for(int i = 0; i < sizeof(fb) / sizeof(int) ; i++) {
// 1 1 2 3 5 8 13 21 34 55 89
cout << fb[i] << "\t";
}
return 0;
}
在这里,注意数组的容量限制。如果容量大,而for内部的i边界值没有达到,会出现返回随机数的情况。
再举一个例子,比如对一些数按照从小到大的顺序排序。
#include <iostream>
using namespace std;
int main() {
int sort[] = {5,25,1,8,62,7,18,42,51};
int temp,i,j;
for(i = 0; i < sizeof(sort)/sizeof(int); i++) {
for(j = i; j < sizeof(sort)/sizeof(int);j++) {
if(sort[i] > sort[j]) {
temp = sort[i];
sort[i] = sort[j];
sort[j] = temp;
}
}
}
for(i = 0; i < sizeof(sort)/sizeof(int); i++) {
// 1 5 7 8 18 25 42 51 62
cout << sort[i] << "\t";
}
return 0;
}
在这里,通过for函数可以很容易实现数组内部元素位置的互换,从而达到排序的效果。
break
break 会出现在循环语句中,表示跳出循环。
#include <iostream>
using namespace std;
int main() {
while(condition) {
// here is your code
break;
}
}
通过执行break从而跳出程序。
比如我需要找到一个字符串中第一个a出现的索引值,我们可以这么写。
#include <iostream>
#include <cstring>
using namespace std;
int main() {
string str = "Hello, world, I want you be better";
int num = 0;
for(int i = 0; i< str.length(); i++) {
num += 1;
if(str[i] == 'a') {
break;
}
}
// 18
cout << num << endl;
return 0;
}
这里到a之后就不继续往下走了,节省了计算时间,并且得到了a的索引值。但是一定注意在条件语句中,不能用" ",需要用 ‘ ’。 因为"a"返回的是整形,而不是字符。
continue
continue 用于筛选一些东西。比如我需要筛选一堆数字中比10大的数字,我可以 这么写:
#include <iostream>
using namespace std;
int main() {
int screening[] = {2,8,33,4,25,7,14,24,6};
for(int i=0; i<sizeof(screening)/sizeof(int);i++) {
if(screening[i] < 10)
continue;
// 33 25 14 24
cout << screening[i] << "\t";
}
return 0;
}
在这里,continue体现了筛选的功能,它不会继续往下走,而是重新回到循环开始的地方。
今天的就到这里了,下次见 _。