c++的字符串拼接、截取;整型转化成字符串

来源:互联网 发布:ubuntu 查看软件版本 编辑:程序博客网 时间:2024/06/02 02:47
#include<iostream>
#include<string>     //有string类
#include <sstream>   //有stringstream类
using namespace std;




/**
 * 如果一个数恰好等于它的因子之和,则称该数为“完全数”。
 * 各个小于它的约数(真约数,列出某数的约数,去掉该数本身,剩下的就是它的真约数)的和
 * 等于它本身的自然数叫做完全数(Perfect number),又称完美数或完备数。
 *   例如:第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。
 *   第二个完全数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。
 */
bool ifWholeNumber(int inputNumber);
void ouputExpression(int inputNumber);
string intToString(int number);
int main(){
int s;
cout<<"请输入一个数字:"<<endl;
cin>>s;
ouputExpression(s);
return 0;//1一般是发生异常的返回值
}


//是否是完数
bool ifWholeNumber(int inputNumber){
    bool flag = false;
    int m = 1;  
    for (int i = 2; i <= inputNumber; i++) {
if(inputNumber % i == 0){  //是它的一个因子
if(i != inputNumber){
m = m + i;
}
}
}
   if(m == inputNumber){ //因子和等于输入的数字,是完数
    return true;
   }else{
    return flag;
   }
}


//是完数,输出表达式
void ouputExpression(int inputNumber){
bool flag = ifWholeNumber(inputNumber);
if(flag){
string result = intToString(inputNumber)+"= 1+";
    for (int i = 2; i <= inputNumber; i++) {
if(inputNumber % i == 0){  //是它的一个因子
if(i != inputNumber){
//result = result + i +"+";
result.append(intToString(i));
result.append("+");
}
}
}
cout<<result.substr(0,result.length()-1)<<endl;
}else{
cout<<"输入的数字不是完数"<<endl;
}
}


//int转换成字符串
string intToString(int number){
stringstream ss;
ss<<number;
string s;
     ss>>s;
return s;
}