c++70分求助!!!

P1307 [NOIP2011 普及组] 数字反转

zzy20131010 @ 2024-02-02 23:03:04

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int N;
    int i;
    int f;
    char h[100];
    bool flat=false;

    cin>>N;

    i=1; 

    if(N<0)
    {
        flat=true;
        N=0-N;
        cout<<"-";
    }
    //主要程序 
    while(N!=0)
    { 
        f=1;    
        i=N%10;
        N=N/10;
        if(i==0&&f==1)
        {
            continue;
        }
        if(i=='-'&&f==1)
        {
            continue;
        }
        cout<<i;
        f++; 
    } 
} 

by Lin_Ziluo @ 2024-02-07 11:59:54

你的i是int类型,怎么可能等于‘-’,第二个if判断相当于没有用处,下面的continue也不会执行,肯定会错


by Lin_Ziluo @ 2024-02-07 17:38:38

还有,字符数组h没用啊,整个程序下来除了定义的时候我就没见过它了!


by Lin_Ziluo @ 2024-02-08 22:30:32

AC代码(仅供参考)

#include <bits/stdc++.h>
using namespace std;
int main(){ //以上不解释
    int N;
    cin >> N;
    for (int i = 1;i <= 9;i++){ 
        if (N % 10 == 0) N /= 10;
        else break; //把0(末尾)去掉
    }
    if (N == 0){
        cout << 0;
        return 0; //N为0的情况特殊处理
    }
    if (N < 0){
        N = 0 - N;
        cout << '-'; //负数的情况特殊处理
    }
    while (N > 0){
        cout << N % 10;
        N /= 10; //从个位开始倒序输出
    }   
    return 0;
}

|