题解分享
题解分享简介
反向输出一个三位数 - 题解
```
/*
思路分析
思路一:
1. 将得到的数字用循环获取每一位,存入数组中直接输出
思路二:
1. 将数字用字符数组char【】接收 ,倒序输出 或者倒序后输出
思路三:
1.用字符串接收 倒序后输出
// 思路一:
// 1. 将得到的数字用循环获取每一位,存入数组中 倒序输出
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin >> n;
vector<int> str;
while(n != 0) { //直接从后面获取每一位
str.push_back(n % 10);
n = (n - (n % 10)) / 10;
}
for ( int a : str ) { //跟字符串一样可以这样遍历输出
cout << a; //字符串本质上是一个字符数组,它也支持迭代器,
} //因此可以用类似的方式遍历。
return 0;
}
//输出 直接输出即可 ,不用倒序
//for ( int temp = str.size()-1; temp >= 0 ; temp-- ) {
//str.size() 获取动态数组大小 siziof()才是放在括号里面
//str.size()-1 数组大小搞对
// cout << str[temp];
//}
//思路二:
//1. 将数字用字符数组char【】接收 ,倒序输出 或者倒序后输出
#include <bits/stdc++.h>
using namespace std;
int main()
{
vector<char> str;
char i;
while((i = cin.get()) != EOF) { // 使用 cin.get() 逐字符读取
str.push_back(i); // 是i = cin.get() 不是cin.get(i)
}
//1.倒序输出 用revers()函数 注意不要最后的'\0'
reverse(str.begin(), str.end()); // 使用 std::reverse 倒序
//输出 //注意:不包括字符串末尾的 '\0'
size_t j;
for ( j = 0; j < str.size(); j++ ) {
cout << str[j];
}
//2. 倒序后输出
int n = static_cast<int>(str.size()); //安全强制转换
reverse(str.begin(), str.end()); //倒序
for ( int i = 0; i < n; i++) {
cout << str[i];
}
return 0;
}
//hello" 包括5个字符和一个 '\0',总共需要6个字节的空间。然而,
//数组 str 的大小只有5,这会导致 '\0' 被存储到数组之外,从而引发数组越界。
//char dest[6] = "world";
//strcpy(dest, "hello"); // 错误:目标数组空间不足
//在这个例子中,dest 的大小为6,只能存储5个字符加上一个 '\0'。
//但如果使用 strcpy 将 "hello" 拷贝到 dest,则会覆盖 dest 的内存,导致越界。
//思路三:
//1.用字符串接收 倒序后输出
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s;
cin >> s;
//sort(s.begin(), s.end()); //这个是升序排序
reverse(s.begin(), s.end());
for ( char c : s) {
cout << c;
}
return 0;
}
*/
```
查看全文
0
0
0
5



