C语言,八进制正整数字符串转换为十进制整数
时间: 2024-09-23 15:14:57 浏览: 93
C语言中,将八进制正整数字符串转换成十进制整数可以使用标准库函数`strtol`或者手动实现算法。以下是使用`strtol`的例子:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
char octal_str[] = "1234"; // 八进制字符串
long decimal_num;
if (strtol(octal_str, NULL, 8) /* 第三个参数指明基数,这里是8表示八进制 */
&& /* strtol返回非零值表示转换成功 */
!errno) { // 判断是否有错误发生
decimal_num = strtol(octal_str, NULL, 8); // 转换后的结果
printf("八进制 '%s' 转换成十进制是 %ld\n", octal_str, decimal_num);
} else {
printf("无法转换八进制字符串 '%s'\n", octal_str);
}
return 0;
}
```
如果你想要手动实现,你可以遍历字符串,每一位乘以8的相应次方,然后累加起来。
相关问题
将八进制正整数字符串转换成十进制数然后将十进制数转换成十六进制。用C语言编程
以下是将八进制正整数字符串转换成十进制数然后将十进制数转换成十六进制的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char octal[100];
printf("请输入一个八进制正整数:");
scanf("%s", octal);
// 将八进制字符串转换成十进制数
int decimal = 0;
for (int i = 0; i < strlen(octal); i++) {
decimal = decimal * 8 + (octal[i] - '0');
}
printf("转换成十进制数为:%d\n", decimal);
// 将十进制数转换成十六进制字符串
char hex[100];
int i = 0;
while (decimal != 0) {
int remainder = decimal % 16;
if (remainder < 10) {
hex[i] = remainder + '0';
} else {
hex[i] = remainder - 10 + 'A';
}
i++;
decimal /= 16;
}
hex[i] = '\0';
strrev(hex);
printf("转换成十六进制字符串为:%s\n", hex);
return 0;
}
```
将八进制正整数字符串转换成十进制数,将十进制数转换成十六进制。用C语言编程
以下是将八进制正整数字符串转换成十进制数和将十进制数转换成十六进制的C语言代码:
1.将八进制正整数字符串转换成十进制数
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int main()
{
char octal[20];
int decimal = 0, i, len;
printf("请输入一个八进制正整数字符串:");
scanf("%s", octal);
len = strlen(octal);
for (i = 0; i < len; i++) {
decimal += (octal[i] - '0') * pow(8, len - i - 1);
}
printf("转换后的十进制数为:%d\n", decimal);
return 0;
}
```
2.将十进制数转换成十六进制
```c
#include <stdio.h>
#include <stdlib.h>
int main()
{
int decimal, remainder, quotient, i = 1, j;
char hexadecimal[20];
printf("请输入一个十进制正整数:"); scanf("%d", &decimal);
quotient = decimal;
while (quotient != 0) {
remainder = quotient % 16;
if (remainder < 10)
hexadecimal[i++] = remainder + 48;
else
hexadecimal[i++] = remainder + 55;
quotient = quotient / 16;
}
printf("转换后的十六进制数为:");
for (j = i - 1; j > 0; j--)
printf("%c", hexadecimal[j]);
printf("\n");
return 0;
}
```
阅读全文
相关推荐
















