循环控制强化训练
Posted Respect@
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了循环控制强化训练相关的知识,希望对你有一定的参考价值。
循环练习第1关
#include <iostream>
#include <Windows.h>
using namespace std;
int main(void) {
int rows;
int cols;
cout << "请输入行数: ";
cin >> rows;
cout << "请输入每行需要打印的列数: ";
cin >> cols;
for (int i=0; i<rows; i++) {
for (int j=0; j<cols; j++){
cout << "*";
}
cout << endl;
}
system("pause");
return 0;
}
循环练习第2关
#include <iostream>
#include <Windows.h>
using namespace std;
int main(void) {
int rows;
cout << "请输入行数: ";
cin >> rows;
for (int i=0; i<rows; i++) {
for (int j=0; j<i+1; j++){
cout << "*";
}
cout << endl;
}
system("pause");
return 0;
}
循环练习第3关
#include <iostream>
#include <Windows.h>
using namespace std;
int main(void) {
int rows;
cout << "请输入行数: ";
cin >> rows;
for (int i=0; i<rows; i++) {
for (int j=0; j<rows-i; j++){
cout << "*";
}
cout << endl;
}
system("pause");
return 0;
}
循环练习第4关
#include <iostream>
#include <Windows.h>
using namespace std;
int main(void) {
int rows;
cout << "请输入行数: ";
cin >> rows;
for (int i=0; i<rows; i++) {
for (int j=0; j<rows-i-1; j++) {
cout << " ";
}
for (int j=0; j<2*i+1; j++){
cout << "*";
}
cout << endl;
}
system("pause");
return 0;
}
循环练习第5关
#include <iostream>
#include <Windows.h>
#include<iomanip>
using namespace std;
int main(void) {
for (int i=1; i<=9; i++) {
for (int j=1; j<=i; j++) {
//setw(2) 是下一个数据的输出宽度为2,
//仅对下一个数据的输出有效, 即只有一次效果
// std::left 使数据在自己规定的宽度内左对齐,默认是右对齐, 持续有效
cout << i << "*" << j << "=" ;
if (j==1) {
cout << setw(1) << std::left << i*j << " ";
} else {
cout << setw(2) << std::left << i*j << " ";
}
}
cout << endl;
}
system("pause");
return 0;
}
循环练习第6关
输出所有水仙花数
水仙花数: 3位数字, 各位的立方之和,等于这个数本身.
说明: 严格的说只有3位的整数, 才可能是水仙花数.
#include <iostream>
#include <Windows.h>
#include<iomanip>
using namespace std;
int main(void) {
int a, b, c;
for (int i=100; i<=999; i++) {
a = i % 10;
b = (i / 10) % 10;
c = i / 100;
if (a*a*a + b*b*b + c*c*c == i) {
cout << i << endl;
}
}
system("pause");
return 0;
}
循环练习第7关
输出指定项的斐波那契数列.
1, 1, 2, 3, 5, 8, 13, 21, …
#include <iostream>
#include <Windows.h>
#include<iomanip>
using namespace std;
int main(void) {
int n = 0;
long long a = 1;
long long b = 1;
long long value;
cout <<"请输入斐波那契数列的个数: " ;
cin >> n;
if (n <= 0) {
cout << "要求是大于0的正数." <<endl;
system("pause");
return 1;
}
if (n == 1) {
cout << "1" <<endl;
system("pause");
return 0;
}
if (n== 2) {
cout << "1 1" <<endl;
system("pause");
return 0;
}
cout << "1 1 ";
for (int i=3; i<=n; i++) {
value = a + b;
// a 和 b 前进一位
a = b;
b = value;
cout << value << " ";
}
cout << endl;
system("pause");
return 0;
}
循环练习第8关
输入一个10进制的正整数,把它转换为2进制输出。
6
110
#include <iostream>
#include <Windows.h>
#include<iomanip>
using namespace std;
int main(void) {
int ret[32] = {0};
int n;
int i;
cout << "请输入一个正整数: ";
cin >> n;
if (n<0) {
cout << "需要输入一个正整数!" << endl;
system("pause");
return 1;
}
i = 0;
while (n != 0) {
ret[i] = n % 2;
n = n / 2;
i++;
}
for (i--; i>=0; i--) {
cout << ret[i];
}
system("pause");
return 0;
}
循环练习第9关
#include <iostream>
#include <Windows.h>
#include <string>
using namespace std;
int main(void) {
string str;
int s = 0;
int p = 1;
cout << "请输入一个二进制数: ";
cin >> str;
for (int i=str.length()-1; i>=0; i--) {
int x = str[i] - '0';
s += x * p;
p *= 2;
}
cout << "s=" << s << endl;
system("pause");
return 0;
}
循环练习第10关
输入一个字符串,然后把这个字符串逆转输出
123456789
987654321
#include <iostream>
#include <Windows.h>
#include <string>
using namespace std;
int main(void) {
string str;
int i;
int j;
char tmp;
cout << "请输入一个字符串: " << endl;
cin >> str;
i=0;
j = str.length() - 1;
while (i < j) {
tmp = str[i];
str[i] = str[j];
str[j] = tmp;
i++;
j--;
}
cout << str << endl;
system("pause");
return 0;
}
循环练习第11关
经典算法题: 千鸡百钱.
1000块钱, 要买100只鸡.
公鸡每只50块
母鸡每只30块
小鸡每3只10块
问:一共有多少种买法?
#include <iostream>
#include <Windows.h>
#include <string>
using namespace std;
/*
1000块钱, 要买100只鸡.
公鸡每只50块
母鸡每只30块
小鸡每3只10块
*/
int main(void) {
int cock_max = 1000/50;
int hen_max = 1000/30;
for (int i=1; i<=cock_max; i++) {
for (int j=1; j<=hen_max; j++) {
int k = 100 - i - j; //小鸡的个数
if (k%3 == 0 && i*50 + j*30 + k/3*10 == 1000) {
cout <<"公鸡:" << i << " 母鸡:" << j << " 小鸡:" << k << endl;
}
}
}
system("pause");
return 0;
}
循环练习第12关
输入一个英文字符串(一句话),统计输入的单词个数.
#include <iostream>
#include <Windows.h>
#include <string>
using namespace std;
int main(void) {
char line[256]; //'\\0'就是0
int i = 0; // 访问字符串(字符数组)的下标
int count = 0; //单词计数
cout << "请输入一句话:";
gets_s(line, sizeof(line));
// 跳过前面的连续空格
while(line[i] == ' ') i++;
while (line[i]) { // while(line[i] != '\\0') '\\0' 就是 0
// 跳过连续的多个非空格组合(就是单词!)
while (line[i] && line[i] != ' ') i++;
while(line[i] == ' ') i++;
count++;
}
cout << "一共有" << count << "个单词" << endl;
system("pause");
return 0;
}
以上是关于循环控制强化训练的主要内容,如果未能解决你的问题,请参考以下文章
PPO姿态控制基于强化学习(Proximal Policy Optimization)PPO训练的无人机姿态控制simulink仿真
机器人自主学习新进展,百度飞桨发布四足机器人控制强化学习新算法