注册 登录
编程论坛 C语言论坛

八进制转换为十进制,这个代码为什么最后运行会有负数?

肖未名 发布于 2019-11-17 10:12, 1620 次点击
但除了中间的负数,结果是对的,把i赋值了也不行
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录


程序代码:
#include<stdio.h>
int main()
{
    int a,i=0;
    int str[30];
    printf("请输入一个整数:");
    scanf("%d",&a);
    for(int w;a>=8;i++)
    {
        w=a%8;
        a=a/8;
        str[i]=w;
    }
    printf("%d",a);
    for(i=29;i>=0;i--)
        printf("%d",str[i]);
    printf("\n");
    return 0;
}


[此贴子已经被作者于2019-11-17 16:38编辑过]

8 回复
#2
纯蓝之刃2019-11-17 11:51
程序代码:
#include<stdio.h>

int main()
{
    int a,i=0;
    int str[30];
    printf("请输入一个整数:");
    scanf("%d",&a);
    for(int w;a>=8;i++)
    {
        w=a%8;
        a=a/8;
        str[i]=w;
    }
    printf("%d",a);
    for(--i;i>=0;i--)
        printf("%d",str[i]);
    printf("\n");

    return 0;
}


for(i=29;i>=0;i--)
        printf("%d",str[i]);

你这个函数打印的不对,不应该从str[29]开始打印,而是从之前的i的值减一开始打印。
#3
暴君Dentiny2019-11-17 14:04
以下是引用纯蓝之刃在2019-11-17 11:51:36的发言:

#include<stdio.h>

int main()
{
    int a,i=0;
    int str[30];
    printf("请输入一个整数:");
    scanf("%d",&a);
    for(int w;a>=8;i++)
    {
        w=a%8;
        a=a/8;
        str=w;
    }
    printf("%d",a);
    for(--i;i>=0;i--)
        printf("%d",str);
    printf("\n");

    return 0;
}

for(i=29;i>=0;i--)
        printf("%d",str);
你这个函数打印的不对,不应该从str[29]开始打印,而是从之前的i的值减一开始打印。

版主,你就不能帮帮我嘛
#4
肖未名2019-11-17 14:18
回复 2楼 纯蓝之刃
懂了,谢谢!
#5
肖未名2019-11-17 14:37
回复 2楼 纯蓝之刃
可是如果输入12的话,i=0,如果--i,不就i=-1了吗
#6
纯蓝之刃2019-11-17 15:34
回复 5楼 肖未名
输入12,走完for(int w;a>=8;i++)循环,i=1.
你循环退出的时候i自加了一,你把打印放到循环外面就知道了

[此贴子已经被作者于2019-11-17 16:03编辑过]

#7
肖未名2019-11-17 15:46
回复 6楼 纯蓝之刃
  1

[此贴子已经被作者于2019-11-17 16:32编辑过]

#8
肖未名2019-11-17 15:46
回复 6楼 纯蓝之刃
懂了
只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2019-11-17 16:33编辑过]

#9
肖未名2019-11-17 16:31
回复 6楼 纯蓝之刃
谢谢!
1