牛客网三道编程题(五) 之华为机试在线训练(四)进制转换、删除重复出现的数字、句子逆序
程序员文章站
2022-06-11 18:57:05
...
1、进制转换
这一题利用 cout 的流输出,非常简单。不需要再根据下标啥的,再乘以16 或者除以16啥的。请注意:
1)利用 cout 流输出的,都是字符串,不管它是不是数字。
2)cout 默认输出的是十进制。此外,如果是八进制,是 cout << oct << a;
2、提取不重复的整数。
代码如下:
#include<iostream>
using namespace std;
int main()
{
int num, result = 0;
cin >> num;
int a[10] = { 0 };
while (num != 0)
{
if (a[num % 10] == 0) // 说明第一次出现
{
a[num % 10] = 1;
result = result * 10 + num % 10;
}
num = num / 10;
}
cout << result;
}
说明:这样编程比较巧妙,如果第一次出现,就记录一下标志。只有当第一次出现时,才把它加到 result 里面。如果把题目改一下的话:把重复出现的数字全部删除掉,那么程序可以这样修改。
int main()
{
int num,num_temp,result = 0;
cin >> num;
num_temp = num;
int a[10] = {0};
while (num != 0)
{
a[num % 10]++; //记录一下出现多少次
num = num / 10;
}
while (num_temp != 0)
{
if (a[num_temp % 10] == 1) //出现一次就加上去,
{
result = result * 10 + num_temp % 10; // 当然了,可以不用累加。可以每次只输出一个数字。
num_temp = num_temp / 10;
}
else
{
num_temp = num_temp / 10; // 出现一次以上直接忽略
}
}
cout << result;
return 0;
}
3、将句子逆序
非常简单,两分钟搞定
程序如下:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
vector<string> vecs;
string s;
while (cin >> s)
{
vecs.push_back(s);
}
for (decltype(vecs.size()) i = vecs.size() - 1; i > 0; --i)
{
cout << vecs[i] << " ";
}
cout << vecs[0];
return 0;
}
上一篇: 详解MySQL实现主从复制过程
下一篇: 怎么卸载吉吉影音?吉吉播放器如何完全卸载