用c语言,编写函数funD(n),用于将十进制正整数n(不超过6位)转换为十六进制整数。 主函数为#include “stdio.h” char hex[8]=“0X”; main(){ unsigned int n; printf(“输入一个正整数:”); scanf(“%u",&n); funD(n); printf(“%d的十六进制整数为%s”,n,hex);}
时间: 2023-06-16 14:04:01 浏览: 76
以下是用C语言编写的funD函数的实现:
```c
void funD(unsigned int n) {
int i = 0;
int temp;
while (n) {
temp = n % 16;
if (temp < 10) {
hex[i + 2] = temp + '0';
} else {
hex[i + 2] = temp - 10 + 'A';
}
n = n / 16;
i++;
}
while (i < 6) {
hex[i + 2] = '0';
i++;
}
hex[8] = '\0';
for (int j = 2; j < 6; j++) {
char temp = hex[j];
hex[j] = hex[9 - j];
hex[9 - j] = temp;
}
}
```
该函数首先定义了一个变量i,用于记录当前转换后的十六进制数的位数。然后,使用while循环将n转换为十六进制数。在循环中,通过取余操作获取n除以16的余数,并根据余数的大小判断该位应该使用数字还是字母表示,最后将余数对应的字符存储到hex数组中。然后,将n除以16,以便下一次循环处理高位数字。同时,i加1,以便记录转换后的位数。
在循环结束后,如果转换后的十六进制数不足6位,则在数组末尾添加0。然后,将hex数组中的数字进行反转,以便将数字的高位放在数组的前面,低位放在数组的后面。最后,在hex数组的末尾添加一个空字符,以便在输出时格式化输出。
在主函数中,首先获取用户输入的十进制数n,然后调用funD函数将n转换为十六进制数,并将转换后的结果存储到全局变量hex数组中。最后,使用printf函数输出转换后的十六进制数。
阅读全文