k进制转化成10进制有俩看不d😢救j😢

那个…就是说这个程序里为啥k!=16😢
if(!n)啥意思干嘛的😢
#include
#include
#include
using namespace std;
void main()
{
char a[80];
int i,p=1,m,n=0,k;
cout<<"请设定要转化的进制位数:"<<endl;
cin>>k;
cout<<"输入一个"<<k<<"进制数:"<<endl;
cin>>a;
m=strlen(a);
for(i=m-1;i>=0&&k!=16;i--)
{
n+=(a[i]-48)p;
p
=k;
}
if(!n)
for(i=m-1;i>=0;i--)
{
if(a[i]<65) n+=(a[i]-48)*p;
if(a[i]>=65) n+=(a[i]-55)p;
p
=k;
}
cout<<"相应的10进制数为:"<<n<<endl;
}

用代码片功能发,要不全变了