首先要注意输入非负整数的范围:这里用long表示;
long 取值 -2147483648~2147483647
#include<stdio.h>
int main(){
long n;
int i=0,j;
char a[11];
scanf("%d",&n);
do{
if(n%16==10)a[i]='A';
else if(n%16==11)a[i]='B';
else if(n%16==12)a[i]='C';
else if(n%16==13)a[i]='D';
else if(n%16==14)a[i]='E';
else if(n%16==15)a[i]='F';
else a[i]=(n%16)+'0';
i++;
n=n/16;
}while(n!=0);//相比于while,用do-while可以解决n=0的情况
for(j=i-1;j>=0;j--){
printf("%c",a[j]);
}
return 0;
}