c++ 学习之路(三)

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体现了筛选的功能,它不会继续往下走,而是重新回到循环开始的地方。

今天的就到这里了,下次见 _

发布了6 篇原创文章 · 获赞 0 · 访问量 68

猜你喜欢

转载自blog.csdn.net/weixin_44935881/article/details/105309302