请问这两个程序为什么是部分正确?我少考虑了什么?

大一刚学c++,已经被PTA整魔怔了

img

img


#include<iostream>
using namespace std;
int sxh(int A)
{
    int X,Y,Z,n;
    X=A/100;
    Z=A%10;
    Y=A/10%10;
    n=X*X*X+Y*Y*Y+Z*Z*Z;
    return n;
}
int main()
{
unsigned int a,b=0,c,m,n;
   
    cin>>m>>n;
     a=m;
    if (m>=100&&m<=n&&n<1000)
    {
        if (m<=153) cout<<"153"<<endl;
        while (a<n)
        {
        if (sxh(a)!=a)
        { 
        b=a=a+1;
        }
        else cout<<a<<endl;
        a=a+1;
        }
        

        }
    else cout<<"Invalid Value.";
return 0;
}

img


如图,编译没问题,预期结果也是对的,但扣分。

img

img


#include<iostream>
using namespace std;
int main()
{
char a,b;
    
    while (a!='\n')
    {a=cin.get();
        if (a>='a'&&a<'z')
        {
            a=a+1;
            b=a-32;
            if(a=='z') 
                b='A';
            cout<<b;
        }
        else 
        {
            if (a>='A'&&a<='Z')
            {
                b=a+1+32;
                if(a=='Z') 
                    b='a';
                cout<<b;
            }
            else
                cout<<a;
        }
    }
return 0

img


这个同样也是运行测试都没问题。请不吝赐教,感谢。