御笔剑客 发表于 2018-2-22 16:05:20

为什么这段代码会出现负值呢?

#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
struct num{
    int num;
    string str;
};
bool cmp(num a,num b)
{
    return a.num>b.num;
}
int main()
{
    int n;
    cin>>n;
    num num1;
    for(int i=0;i<n;i++)
      cin>>num1.str;
    for(int i=0;i<n;i++)
    {
      for(int j=3;j<=13;j++){
            num1.num=num1.num*10+num1.str-'0';
            cout<<"第"<<j+1<<"个数字"<<":"<<num1.num<<" "<<num1.str<<endl;
      }
    }
    sort(num1,num1+n,cmp);
    for(int i=0;i<n;i++)
      cout<<num1.str<<endl;
}

御笔剑客 发表于 2018-2-22 16:06:39

这是测试用例:
5
466272307503271156
215856472207097978
234804580401078365
404475727700034980
710351408803093165
样例输出
404475727700034980
234804580401078365
215856472207097978
710351408803093165
466272307503271156

人造人 发表于 2018-2-22 16:18:55

1>------ 已启动生成: 项目: C++, 配置: Debug Win32 ------
1>main.cpp
1>c:\visualstudioprojects\c++\c++\main.cpp(9): error C2380: “num”前的类型(构造函数有返回类型或是当前类型名称的非法重定义?)
1>c:\visualstudioprojects\c++\c++\main.cpp(15): error C2274: “函数样式转换”: 位于“.”运算符右边时非法
1>c:\visualstudioprojects\c++\c++\main.cpp(31): error C2274: “函数样式转换”: 位于“.”运算符右边时非法
1>c:\visualstudioprojects\c++\c++\main.cpp(32): error C2274: “函数样式转换”: 位于“.”运算符右边时非法
1>已完成生成项目“C++.vcxproj”的操作 - 失败。
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
页: [1]
查看完整版本: 为什么这段代码会出现负值呢?