橙 网站,个人做当地旅游网站,北京网站优化怎么样,365房产网循环嵌套
循环嵌套的使⽤
while #xff0c; do while #xff0c; for #xff0c;这三种循环往往会嵌套在⼀起才能更好的解决问题#xff0c;就是我们所说的#xff1a;循环嵌套。这三种循环都可以任意嵌套使⽤ ⽐如#xff1a; 写⼀个代码#xff0c;打印⼀个乘法⼝…循环嵌套
循环嵌套的使⽤
while do while for 这三种循环往往会嵌套在⼀起才能更好的解决问题就是我们所说的循环嵌套。这三种循环都可以任意嵌套使⽤ ⽐如 写⼀个代码打印⼀个乘法⼝诀表
1*1 1
1*2 2 2*2 4
1*3 3 2*3 6 3*3 9
1*4 4 2*4 8 3*412 4*416
1*5 5 2*510 3*515 4*520 5*525
1*6 6 2*612 3*618 4*624 5*630 6*636
1*7 7 2*714 3*721 4*728 5*735 6*742 7*749
1*8 8 2*816 3*824 4*832 5*840 6*848 7*856 8*864
1*9 9 2*918 3*927 4*936 5*945 6*954 7*963 8*972 9*981打印的内容是分为9⾏的第1⾏打印1项第2⾏打印2项第3⾏打印3项以此类推第9⾏打印9项。每⼀⾏的信息每⼀项的第⼀个乘数和列号是⼀致的每⼀项的第⼆个乘数和⾏号是⼀致的两个乘数的积就是第三个数。打印9⾏我们可以使⽤循环解决总共循环9次每次进⼊循环打印⼀⾏循环变量使⽤ i 来控制 i 从1开始循环到9打印⼀⾏。第 i ⾏是有 i 项组成的这 i 项的打印也可以写成循环来完成。使⽤循环变量 j j 从1开始⼀致循环到 i 正好循环 i 次正好打印 i 项。同时每⼀⾏打印完后还要换⾏。输出的效果中i*j的结果如果是2位数才有右对⻬不够2位数的情况使⽤空格补⻬。所以这⾥就得使⽤ %2d 这样的输出格式控制了。
#include iostream
using namespace std;
#include cstdioint main()
{for (int i 1; i 9; i){for (int j 1; j i; j){printf(%d*%d%2d , j, i, j * i);}cout endl;}return 0;
}练习
乘法表
#include iostream
using namespace std;
#include cstdioint main()
{for (int i 1; i 9; i){for (int j 1; j i; j){printf(%d*%d%2d , j, i, j * i);}cout endl;}return 0;
}像题⽬要求的这种情况就得使⽤两层循环嵌套来解决外层循环负责控制打印⼏⾏内部循环负责控制每⼀⾏打印⼏项。
包含数字9的数
#include iostream
using namespace std;int main()
{int cnt 0;for (int i 1; i 2019; i){int n i;while (n){if (n % 10 9){cnt;break;}n / 10;}}cout cnt endl;return 0;
}在多层嵌套的循环中也可以使⽤break但是要注意⼀个break只能跳出⾃⼰所在的循环⽆法⼀次性跳出所有的循环
B2064 斐波那契数列
#include iostream
using namespace std;int n;int main()
{cin n;int a 0;while (n--){cin a;int i 1, j 1, k 1;while (a 3){k i j;i j;j k;a--;}cout k endl;}return 0;
}B2079 求出 e 的值
#include iostream
#include cstdio
using namespace std;int n;int main()
{cin n;double e 1;for (int j 1; j n; j){long long x 1;for (int i 1; i j; i){x * i;}e 1.0 / x;}printf(%.10f, e);return 0;
}#include iostream
using namespace std;
int main()
{ int n 0; cin n; int i 1; double e 1; long long fac 1; while (i n) { fac * i; e 1.0 / fac; i; } printf(%.10lf\n, e); return 0;
}三角形
#include iostream
using namespace std;int n;int main()
{cin n;for (int i 1; i n; i){for (int j 1; j i; j){cout *;}cout endl;}return 0;
}B2083 画矩形 #include iostream
using namespace std;int a, b, f;
char c;int main()
{cin a b c f;if (f 0){for (int i 1; i a; i){for (int j 1; j b; j){if (i 1 || i a || j 1 || j b)cout c;elsecout ; }cout endl;}}else{for (int i 1; i a; i){for (int j 1; j b; j){cout c; }cout endl;}}return 0;
}如果我们仔细去琢磨上⾯的代码会发现 if 和 else 中都是打印图案区别在于实⼼还是空⼼实⼼和空⼼的区别⼜在于中间区域其实边上的⼀圈实⼼和空⼼是⼀样的。所以我们在实现的时候边上⼀圈打印字符剩余的区域做⼀个判断如果是实⼼打印c如果是空⼼就打印空格就好了那么就有了下⾯简化的写法。
#include iostream
using namespace std;int a, b, f;
char c;int main()
{cin a b c f;for (int i 1; i a; i){for (int j 1; j b; j){if (i 1 || i a || j 1 || j b)cout c;else{if (f 0)cout ;elsecout c; }}cout endl;}return 0;
}B2085 第 n 小的质数
解析
质数⼜称素数。⼀个⼤于1的⾃然数除了1和它自身外不能被其他⾃然数整除的数叫做质数。第n⼩的质数其实就是从⼩到⼤的第n个质数。
伪代码
int i 2
int cnt 0
while (1)
{判断i是否是素数试除拿2~i-1之间的数组去试除i如果2-i-1之间有数字能整除i则i不是素数如果2-i-1之间没有任何一个数字能整除i则i是素数如果i是素数cntif (cnt n)break;i;
}
循环停止的时候i就是第n个素数#include iostream
using namespace std;int n;int main()
{cin n;int i 2;int cnt 0;while (1){int flag 1;for (int j 2; j i-1; j){if (i % j 0){flag 0;break;}}if (flag 1)cnt;if (cnt n)break;i;}cout i endl;return 0;
}“Time Limit Exceeded”TLE超时是⼀个在编程竞赛和在线评测平台如LeetCode、Codeforces、HackerRank等中常⻅的错误信息。它意味着程序在执⾏过程中超过了给定的最⼤运⾏时间限制⽽未能在规定时间内得出结果。
如果 n 有⼀个因⼦ a 那么必然存在另⼀个因⼦ b 使得 n a × b 。如果 a 和 b 都⼤于 n \sqrt{ n } n 那么 a×b 将会⼤于 n 这与 na×b ⽭盾。因此⾄少有⼀个因⼦不会超过的。
#include iostream
using namespace std;
#include cmathint n;int main()
{cin n;int i 2;int cnt 0;while (1){int flag 1;for (int j 2; j sqrt(i); j){if (i % j 0){flag 0;break;}}if (flag 1)cnt;if (cnt n)break;i;}cout i endl;return 0;
}水仙花数
#include iostream
#include cmath
using namespace std;int main()
{for (int i 100; i 999; i){int sum 0;int tmp i;while (tmp){sum pow(tmp % 10, 3);tmp / 10;}if (sum i)cout i endl;}return 0;
}pow函数可以⽤计算次⽅的函数 pow(x, y) 返回的是 x 的 y 次⽅的值 pow 函数需要⼀个头⽂件 cmath