首页 新闻 会员 周边 捐助

关于C语言的题目

0
悬赏园豆:15 [已解决问题] 解决于 2019-11-14 22:44

输入十进制,八进制,十六进制输出二进制:

include<stdio.h>

include<math.h>

include<string.h>

void is_trans(char *number,int type);
void is_trans2(int sum);

void main()
{
char number[1000];
int type;

printf("请输入你要输入的数字:");
gets(number);

printf("请输入你要输入的数的进制:");
scanf("%d",&type); //为什么这里的scanf和前面的gets互换位置之后就只能输入scanf的,而gets直接被跳过了???


is_trans(number,type);

}

void is_trans(char *number,int type)
{
int i,len,sum,q;
len = strlen(number);
sum = 0;

for (i = 0;number[i] != '\0';i++)
{
    if (type == 8||10)
        break;


    switch (number[i])
    {
    case 'A':   number[i] = 10;break;
    case 'B':   number[i] = 11;break;
    case 'C':   number[i] = 12;break;
    case 'D':   number[i] = 13;break;
    case 'E':   number[i] = 14;break;
    case 'F':   number[i] = 15;break;

    
    }


}
for (i = 0;number[i] != '\0';i++)
{
    q = len-i-1;
    sum = sum + (number[i]*pow(type,q));//为什么当输入的是7和8时,这里的sum会变成55???
    
}

is_trans2(sum);

}

void is_trans2(int sum)
{
int i,a[1000],n,p;

n = 0;

for (i = 0;sum != 0;i++)
{
    p = sum % 2;
    sum = sum / 2;
    a[i] = p;
    n++;

}

for (i = n - 1;i >= 0;i--)
{
    printf("%d",a[i]);
}

}

求大神解答:问题在代码注释里了。经过调试了的。

问题补充:

而且有时候输入之后输出的结果是对的,有时候是错的。

这个也是,为什么当把数字储存在字符串数组中,最后提取出来的数字却变了??

shmily涂的主页 shmily涂 | 初学一级 | 园豆:4
提问于:2019-11-13 19:48
< >
分享
最佳答案
0


里面的number[i]需要转一下格式(转成int),不然它是char的地址,而不是内容‘值’

收获园豆:15
你小子嚣张呀 | 小虾三级 |园豆:630 | 2019-11-14 09:22

谢谢了,我弄明白了,是那个带入计算的是ASCII码。

shmily涂 | 园豆:4 (初学一级) | 2019-11-14 22:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册