完整代码 #include <stdio.h> int main() { int num;//十进制数 int i=0;//用来循环 scanf("%d",&num);//输入十进制数 char a[5];//十六进制数 do{ switch(num%16){ case 15:a[i]='F';break; case 14:a[i]='E';break; case 13:a[i]='D';break; case 12:a[i]='C';break; case 11:a[i]='B';break; case 10:a[i]='A';break; default:a[i]='0'+num%16;break;} i++; num=num/16; }while(num!=0); for(i=i-1;i>=0;i--) { printf("%c",a[i]); }//输出十六进制数 return 0; } 算法讲解 do{ switch(num%16){ case 15:a[i]='F';break; case 14:a[i]='E';break; case 13:a[i]='D';break; case 12:a[i]='C';break; case 11:a[i]='B';break; case 10:a[i]='A';break; default:a[i]='0'+num%16;break;} i++; num=num/16; }while(num!=0); 十进制转十六进制方法:整数除以16取余,直到商为0为止,然后从最后一个余数读到第一个 算法:将num除以16求余,10到15区间找到相应的字母去对应,然后循环,把每次求得的结果放到数组中通过i记录循环次数,方便将数组逆序输出,结果即为所求的十六进制数