c语言编写程序,将十进制非负正整数转换为十六进制整数。 转换方法是:除16取余,直到商为0(和转二进制相同,只是奇数为16)。 十六进制使用的数字符号为: 0 1 2 3 4 5 6 7 8 9 A B C D E F 其中A B C D E F分别代表十进制的10,11,12,13,14,15。 输入:非负整数 输出:十六进制整数,位数不超过8位。 【输入输出样例】 输入: 13 输出: D 提示:(1)结果可保存在字符数组中,逆序输出。(2)十六进制数字的符号可保存在一个字符数组中。
时间: 2024-03-03 08:49:33 浏览: 20
以下是C语言的实现代码:
```c
#include <stdio.h>
#include <string.h>
int main(){
int num, i = 0;
char res[9]; // 保存结果的字符数组
char hex[17] = "0123456789ABCDEF"; // 保存十六进制字符
scanf("%d", &num);
if(num == 0){
printf("%d", num);
return 0;
}
while(num != 0){
res[i++] = hex[num % 16]; // 将余数转换为十六进制字符
num /= 16;
}
res[i] = '\0'; // 字符串结尾标志
for(i=strlen(res)-1; i>=0; i--) // 逆序输出字符数组
printf("%c", res[i]);
return 0;
}
```
输入样例:
```
13
```
输出样例:
```
D
```
相关问题
用C语言编写程序,将十进制正整数n转换成十六进制字符串逆序输出。要求用到函数进行转换。
好的,这是一个关于C语言编程的问题。我可以用sprintf函数将十进制正整数n转换成十六进制字符串,再使用strrev函数将字符串逆序输出。代码如下:
```
#include <stdio.h>
#include <string.h>
int main() {
int n;
char hex[100];
printf("请输入一个十进制正整数n:");
scanf("%d", &n);
sprintf(hex, "%X", n);
strrev(hex);
printf("转换成十六进制字符串的结果为:%s\n", hex);
return 0;
}
```
希望对你有帮助!接下来,有什么其他问题需要我回答吗?
用C语言编写程序,将十进制正整数n转换成十六进制字符串逆序输出。只引用stdio.h
好的,这是一个关于 C 语言的编程问题。下面是一个示例程序供你参考:
```c
#include <stdio.h>
void reverse(char s[], int n);
int main() {
int n;
char s[100];
printf("请输入一个十进制正整数:");
scanf("%d", &n);
int i = 0;
while (n > 0) {
int remainder = n % 16;
if (remainder < 10) {
s[i++] = remainder + '0';
} else {
s[i++] = remainder - 10 + 'A';
}
n /= 16;
}
s[i] = '\0';
reverse(s, i);
printf("转换成十六进制字符串是:%s\n", s);
return 0;
}
void reverse(char s[], int n) {
int i, j;
char c;
for (i = 0, j = n - 1; i < j; i++, j--) {
c = s[i];
s[i] = s[j];
s[j] = c;
}
}
```
以上就是一个简单的程序,主要思路是对十进制正整数使用除 16 取余的方式计算,将余数转换为对应的十六进制字符,存储到字符数组中。然后使用逆序字符串的方法倒序输出即可。