C 将八进制转换成二进制的程序
我是c编程语言的初学者,在这几天里,我正在训练做一些c练习 我被一些转换练习绊倒了: 这就是我所做的C 将八进制转换成二进制的程序,c,C,我是c编程语言的初学者,在这几天里,我正在训练做一些c练习 我被一些转换练习绊倒了: 这就是我所做的 #include <stdio.h> #include <string.h> int main() { int num[8] = { 0, 1, 2, 3, 4, 5, 6, 7 }; long long binar
#include <stdio.h>
#include <string.h>
int main() {
int num[8] = {
0,
1,
2,
3,
4,
5,
6,
7
};
long long binary, octal, tempoctal;
int last, i, A, tempi;
char hex[9] = {
'000',
'001',
'010',
'011',
'100',
'101',
'110',
'111'
};
int bex[10];
A = 0;
printf("enter an octal number: ");
scanf("%lld", & octal);
tempoctal = octal;
while (tempoctal != 0) {
last = tempoctal % 10;
for (i = 0; i < 8; i++) {
if (num[i] == last) {
tempi = i;
bex[A] = tempi;
}
}
A++;
tempoctal /= 10;
}
printf("\nthe is %s", bex);
return 0;
}
#包括
#包括
int main(){
整数[8]={
0,
1.
2.
3.
4.
5.
6.
7.
};
长二进制、八进制、八进制;
int last,i,A,tempi;
字符十六进制[9]={
'000',
'001',
'010',
'011',
'100',
'101',
'110',
'111'
};
int-bex[10];
A=0;
printf(“输入八进制数:”);
scanf(“%lld”&八进制);
温度八进制=八进制;
while(tempoctal!=0){
最后=温度八进制%10;
对于(i=0;i<8;i++){
如果(num[i]==最后一次){
tempi=i;
bex[A]=温度;
}
}
A++;
tempoctal/=10;
}
printf(“\n是%s”,bex);
返回0;
}
所以我想知道为什么我要打印bex的数组
我在控制台上出错了。
虽然我知道解决办法,但我想用我自己的方式去做 回答你的问题
bex
声明为int-bex[10]
,整数数组printf(“%s”…
需要字符串,而不是int数组
- 字符串通常是一个字符数组
。char是一个单字节,int通常是4字节长。因此,您可以看到其中的区别。在您的示例中,您修改了“int”的最低字节,将其他3个字节保留为“0”char bex[10]
- 可打印字符有相应的代码。例如,在asccii编码中,“0”字符的代码为
。所有其他表示数字的字符都有连续的代码(48..57)。这就是48
和其他服务在字节中看到printf
时知道打印什么的方式48
- “c”中的字符串以零散的
结尾,因此0
知道在哪里停止读取字符printf
char bex[10];
for (i=0; i <8; i++)
bex[A++] = '0' + i; // code of '0' + a number
bex[A] = 0; // string terminator
您必须处理程序的其余部分,因为它在当前状态下没有任何有用的功能,但这应该有助于您继续操作。我在控制台上遇到错误不是问题描述。您遇到了什么错误?它就在您面前的控制台上,但我们从这里看不到您的屏幕。您的帖子应该包括一个清晰的pro错误描述,包括您看到的确切错误消息,并询问与您发布的代码相关的特定问题。请参阅和。存储
scanf(“%lld”、&octal)后
,内存中的位是相同的,无论你想以二进制、八进制、十进制还是十六进制查看它——这些位都不会改变。为什么不简单地按位迭代八进制并输出位呢?是什么让你认为你可以将bex
打印为字符串?printf(\n是%s),bex;
当你有int-bex[10];
?您正在使用与给定参数不匹配的printf
转换说明符调用未定义的行为。请参阅和。您还将受益于这里的答案代码应该是不可编译的,因为您使用了带有三个字符的字符文本。您没有从t获得编译错误吗帽子?你知道你有一个%o
八进制说明符来读取基数为8的数字吗?你为什么要读取基数为10的数字???
printf("%s", bex);