| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2222 人关注过本帖
标题:C语言编程,将十六进制转换为八进制,大体思想就是先将十六进制转换为十进制 ...
取消只看楼主 加入收藏
蝴蝶扣
Rank: 2
等 级:论坛游民
威 望:1
帖 子:52
专家分:76
注 册:2016-7-18
结帖率:83.33%
收藏
已结贴  问题点数:20 回复次数:2 
C语言编程,将十六进制转换为八进制,大体思想就是先将十六进制转换为十进制,再转换为八进制,但是程序运行结果有误,请各位大神帮帮忙,看看我的代码错在哪里?谢谢了!
问题描述
  给定n个十六进制正整数,输出它们对应的八进制数。
输入格式
  输入的第一行为一个正整数n (1<=n<=10)。
  接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
输出格式
  输出n行,每行为输入对应的八进制正整数。
注意
  输入的十六进制数不会有前导0,比如012A。
  输出的八进制数也不能有前导0。
样例输入
2
39
123ABC
样例输出
71
4435274

我的代码:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void main()
{
    char str[10];
    int n,num,k=1,sum=0;
    int sh,res[100],j=0;//这个res[100]表示8进制数的数组序列
    scanf("%d",&n);
    while(n--)
    {
        gets(str);
        for(int i=strlen(str);i>=0;i--)
        {
            if(str[i]>='A' && str[i]<='F')
            {
                num=str[i]-'A'+10;
                sum+=num*k;
                k*=16;
            }
            if(str[i]>='0' && str[i]<='9')
            {
                num=str[i]-'0';
                sum+=num*k;
                k*=16;
            }
        }
        //printf("%d\n",sum);//这是16进制转化为10进制的结果
        sh=sum/8;//这里的sh表示商
        while(sh!=0)
        {
            res[j]=sum%8;
            j++;
            sum=sh;
            sh=sum/8;
        }
        printf("%d",sum);
        for(int t=j;t>=0;t--)
            printf("%d",res[t]);
    }
}




        
搜索更多相关主题的帖子: 十六进制 include 八进制 十进制 C语言 
2016-09-16 19:03
蝴蝶扣
Rank: 2
等 级:论坛游民
威 望:1
帖 子:52
专家分:76
注 册:2016-7-18
收藏
得分:0 
回复 2楼 ehszt
您好!非常感谢您的解答。但是,我还有一个问题要请教您,如果严格按照题目要求的输入输出格式 :  
样例输入
 2
 39
 123ABC
 样例输出
 71
 4435274

是不是用指针比较好?还是您还有其他的办法?期待您的恢复!
2016-09-17 11:19
蝴蝶扣
Rank: 2
等 级:论坛游民
威 望:1
帖 子:52
专家分:76
注 册:2016-7-18
收藏
得分:0 
回复 4楼 ehszt
谢谢您耐心的解答,我自己再想想办法
2016-09-17 13:55
快速回复:C语言编程,将十六进制转换为八进制,大体思想就是先将十六进制转换为 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.050886 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved