返回信息流各位高手,遇到了一个c++方面不会的题目,请大家帮忙:
输入任意一个整数,判断该数是不是只有数字0~7构成,且不含有重复数字,要求用C++程序写出来。
大家帮帮我。
这是一条镜像帖。来源:北邮人论坛 / cpp / #40041同步于 2010/6/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
一道头疼的C++编程题目
zhongxin
2010/6/2镜像同步13 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
整数转字符串;
求字符串长度;
if(字符串长度 大于 8)
报错
else
{
建立10元素数组;//保存0-9的出现次数
遍历字符串,计算0-9的出现次数,保存到数组;
遍历10元素数组:
if(8 or 9 出现)
报错;
else if(0-7 重复出现)
报错;
else
符合要求;
}
char buf[9999];
gets(buf);
char *p;
for(p=buf;'0'<= *p && *p<='7';p++);
if(*p) printf("no\n"); else printf("yes\n");
还要求不能有重复数字呢...
【 在 wks (cloverprince) 的大作中提到: 】
: char buf[9999];
: gets(buf);
: char *p;
: ...................
#include <algorithm>
#include <vector>
using namespace std;
bool IsLegal(unsigned val) //unsigned 保证数值不小于0
{
vector<unsigned> digits;
while (val) //存储个、十、百……各位的数字
{
digits.push_back(val%10);
val /= 10;
}
if (digits.size()<2) //只有一位数,是合法数值
return true;
sort(digits.begin(),digits.end()); //排序
if (digits.back()>7) //最大数字不应大于7
return false;
for (vector<unsigned>::size_type i=1; i<digits.size(); ++i)
if (digits[i]==digits[i-1]) //查找重复数字
return false;
return true; //通过了各种检查,合法数值
}
【 在 zhongxin 的大作中提到: 】
: 各位高手,遇到了一个c++方面不会的题目,请大家帮忙:
: 输入任意一个整数,判断该数是不是只有数字0~7构成,且不含有重复数字,要求用C++程序写出来。
: 大家帮帮我。