例35.1
算法思路
1.使用cin读取整数,存入字符串s中
2.从后向前遍历字符串s
3.每次取出一个字符输出
4.字符之间用空格隔开
#include <iostream>
#include <cstring>
using namespace std;
int main() {
//读取整数存入字符串
string s;
cin >> s;
//从后向前遍历字符串
for(int i = s.size()-1; i >= 0; i--){
//输出每个字符
cout << s[i] << ' ';
}
return 0;
}
例35.2
算法思路
1.使用while循环,判断n是否大于1
2.如果n为偶数,输出n/2的计算步骤
3.如果n为奇数,输出n*3+1的计算步骤
4.每次更新n的值
5.循环结束后输出End
#include<bits/stdc++.h>
using namespace std;
int main() {
//输入一个正整数
int n;
cin >> n;
while(n > 1) { //使用while循环判断终止条件
if(n%2 == 0) { //如果n为偶数
//输出n/2步骤
cout << n << "/2=" << n/2 << endl;
n = n/2; //更新n值
} else if(n%2 != 0){ //如果n为奇数
//输出n*3+1步骤
cout << n << "*" << 3 << "+1=" << n*3+1 << endl;
n = n*3+1; //更新n值
}
}
//循环结束后输出结束标识
cout << "End";
return 0; //返回主函数
}
例35.3
直接用函数…
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
cout << __gcd(n, m);
return 0;
}
练35.1
算法思路
1.初始化传输总量sum=1,答案ans=0
2.用while循环ans从1开始迭代到无穷大
3.每次循环计算sum按照k的指数增长方式累加
4.检查sum是否超过计算机数n
5.如果超过了,输出ans结束循环
6.循环结束返回ans
#include<iostream>
using namespace std;
//定义长整型避免大数溢出
typedef long long l;
int main() {
//输入计算机数n和每台每秒传输数k
l n, k;
//初始化传输总量和答案
l sum = 1, ans;
cin>>n>>k;
//使用while循环计算答案
while(++ans) {
//每次循环sum按k的指数累加
sum += sum * k;
//判断是否传输完成
if(sum>=n) {
cout<<ans;
//返回结束函数
return 0;
}
}
//返回结束函数
return 0;
}
练35.2
算法思路
1.使用cin读取输入的整数n
2.定义变量sum用于存储各个数位之和
3.使用while循环计算各个数位之和
4.在循环中,每次取出n的个位数字,加到sum中,同时将n除以10,去掉个位数字
5.循环结束后,sum中存储的就是各个数位之和
6.输出sum
#include <iostream>
using namespace std;
typedef long long l;
int main() {
//输入一个整数n
l n;
//定义变量sum
l sum = 0;
cin >> n;
//计算各个数位之和
while(n) {
sum += n % 10;
n /= 10;
}
//输出结果
cout << sum;
return 0;
}
练35.3
算法思路
1.使用cin读取输入的小数,存入字符串s中
2.使用erase函数删除字符串s中的小数点
3.使用stoi函数将字符串转化为long long整数
4.输出整数n
#include <iostream>
#include <string>
using namespace std;
int main() {
//读取小数到字符串
string s;
cin >> s;
//删除字符串中的小数点
s.erase(s.find('.'),1);
//将字符串转化为长整型
long long n = stoi(s);
//输出结果
cout << n;
//返回主函数
return 0;
}
练35.4
算法思路
1.输入初试数字N
2.初始化分数sum为0
3.在while循环中,判断N是否等于1结束循环
4.判断N是否为奇数或偶数
5.根据规则计算N的新值
6.分数sum加1
7.循环结束后输出sum
#include <iostream>
using namespace std;
typedef long long l;
int main() {
//输入初试数字N
l N;
//初始化分数变量
l sum = 0;
cin >> N;
//使用while循环判断结束条件
while(N != 1) {
//判断N是否为奇数或偶数
if(N % 2)
//根据规则计算N新值
N = N * 3 + 1;
else
//根据规则计算N新值
N /= 2;
//每次循环分数加1
sum++;
}
//输出最终分数
cout << sum;
return 0;
}