0分求纠错

P1307 [NOIP2011 普及组] 数字反转

_albert @ 2017-01-22 11:21:59

#include<iostream>
using namespace std;
int main()
{char a[30];
 int b=0,c;
 cin>>a;
 if(a[0]=='-'){cout<<"-";b=1;}
 for(int i=19;i>=b;i--)
    {if(a[i]=='\0'){c=i-1;break;}}
  for(int i=c;i>=b;i--)
    {if(a[i]!='0'){c=i;break;}}
 for(int i=c;i>=b;i--)cout<<a[i];
  return 0;
 }

在vs测试几组数据都是正确的 b是控制输出的末端

c是控制输出的起始端

不太清楚是哪里不符合评测机的要求,烦请各位帮忙看一下,谢谢啦


by _albert @ 2017-01-22 11:24:27

中间那个循环应该是i=29,但改了之后也是0分,


by KAGUYATHU @ 2017-01-22 17:30:16

#include<iostream>
#include<cstring>
using namespace std;
int main()
{
    int flag=0;
    int ff=0;
    char ss1[20];
    cin.getline(ss1,20);
    if ((ss1[0]!='-')&&(ss1[strlen(ss1)-1]!='0')){
        for (int i=strlen(ss1)-1;i>=0;i--){
            cout<<ss1[i];
        };
    };
    if ((ss1[0]=='-')&&(ss1[strlen(ss1)-1]!='0')){
        cout<<'-';
        for (int i=strlen(ss1)-1;i>=1;i--){
            cout<<ss1[i];
        };
    };
    if ((ss1[0]=='-')&&(ss1[strlen(ss1)-1]=='0')){
        cout<<'-';
        for (int i=strlen(ss1)-2;i>=1;i--){
            if ((ss1[i]!='0')&&(ff==0)){
             flag=i;ff=1;}
        }
        for (int i=flag;i>=1;i--)
            cout<<ss1[i];
    };
    if ((ss1[0]!='-')&&(ss1[strlen(ss1)-1]=='0')){
        for (int i=strlen(ss1)-2;i>=0;i--){
            if ((ss1[i]!='0')&&(ff==0)) {
            flag=i;ff=1;}
        }
            for (int i=flag;i>=0;i--)
            cout<<ss1[i];
    };
    return 0;
}
水题码了这么长,丢脸了啊啊

by 向红名进击! @ 2017-02-09 20:51:45

要发发题解去


|