编程,输入一个10进制正整数,然后输出它所对应的八进制数。用C语言实现
时间: 2024-09-28 12:06:06 浏览: 62
在C语言中,你可以通过以下函数将一个十进制正整数转换成八进制数并输出。这里我们使用了`itoa()`函数来进行转换,但由于`itoa()`不是C标准库的一部分,所以需要包含一些特定的头文件和自定义的处理。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 自定义itoa函数
char* octal(int num) {
char oct_str[32]; // 大致可以容纳32位数的八进制表示
int i = 0;
while (num > 0) {
oct_str[i++] = num % 8 + '0'; // 加上'0'是因为'0'到'7'对应八进制数字
num /= 8;
}
oct_str[i] = '\0'; // 添加字符串结束符
// 如果数字是从右向左读取的,那么反转字符串
if (i > 0 && oct_str[0] == '0')
reverse(oct_str);
return oct_str;
}
void reverse(char *str) {
int len = strlen(str);
for (int i = 0; i < len / 2; ++i) {
char temp = str[i];
str[i] = str[len - i - 1];
str[len - i - 1] = temp;
}
}
int main() {
int decimal_num;
printf("请输入一个10进制正整数: ");
scanf("%d", &decimal_num);
char *octal_num = octal(decimal_num);
printf("该数的八进制形式为: %s\n", octal_num);
free(octal_num); // 注意释放动态分配的内存
return 0;
}
```
在这个程序中,我们首先从用户那里获取一个十进制数,然后使用自定义的`octal()`函数将其转换为八进制字符串。最后,我们将结果打印出来。记得在主函数结束后,我们还要手动释放`octal_num`指向的内存,因为它是通过`malloc()`动态分配的。
阅读全文