小快艇 发表于 2019-5-21 20:22:18

为什么不能输出

#include<iostream>
#include<string>
using namespace std;
int main()
{
   string nums;
    int target;
    int i,j;
    cin>>nums;
    cin>>target;
    for(i=0;i<nums.size()-1;i++)
         for(j=i;j<nums.size()-1;j++)
       if(nums+nums==target)
         cout<<i<<j<<endl;
   return 0;
}

shuofxz 发表于 2019-5-22 20:21:39

numsnums 都是字符类型的,两个字符类型加起来怎么可能会等于一个数字呢?
所以比之前要先把nums,nums都转成数字类型。

方法①:
通过stoi(nums),stoi(nums) 将字符转换为数字(但需要基于c++ 11以上版本的编译器,否则会编译不通过)

方法②:
int(nums)-48
直接用int()转的话,会把字符对应的ascii码转换出来,比如1对应的ascii是49, 2对应的是50。因此把转换出的ascii码减去48就变成对应的数字了


#include<iostream>
#include<string>
using namespace std;
int main()
{
   string nums;
    int target;
    int i,j;
    cin>>nums;
    cin>>target;
    for(i=0;i<nums.size()-1;i++)
    {
         for(j=i;j<nums.size()-1;j++)
         {
             if(int(nums)-48 + int(nums)-48 == target)
             {
               cout<<i<<j<<endl;
             }
         }
    }
   return 0;
}

小快艇 发表于 2019-5-24 20:52:55

shuofxz 发表于 2019-5-22 20:21
numsnums 都是字符类型的,两个字符类型加起来怎么可能会等于一个数字呢?
所以比之前要先把nums,nu ...

哇,厉害厉害,谢谢啦
页: [1]
查看完整版本: 为什么不能输出