超超级无敌霸王龙 2021-11-21 09:21 采纳率: 0%
浏览 27

代码没办法输出最后内容

  1. 实验06-8:字符串转换成十进制整数
    【问题描述】输入一个以'#'结束的字符串,滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数的字符串,然后将其转化为十进制数后输出。如果过滤后字符串的首字符为'-',代表的是负数。
    【输入形式】一个字符串
    【输出形式】一个十进制整数
    【样例输入】+P-xf4+-1!#
    【样例输出】-3905
    【样例说明】输入的内容,按十六进制数要求将数值(09,AE)和符号(在数值之前的'-')保留,得到-f41,转换为十进制后市-3905
    就是我敲的代码,没有办法输出最后的十进制的值
#include<stdio.h>
#include<math.h>
int main()
{
    char a[20],b[20]={0};
    int n=0,i,j=0,c=0,s=0;
    while((a[n]=getchar())!='#')
    {
        n++;
    }
    for(i=0;i<n;i++)
    {
        if((a[i]>='0'&&a[i]<='9')||(a[i]>='a'&&a[i]<='f'))
        {
            b[j]=a[i];
            j++;
            if(c!=0)
            {
                c++;
            }
        }
        if(c==0)
        {
            if(a[i]=='-')
            {
                b[j]=a[i];
                c++;
                j++; 
            }
        }
    }
    printf("%s",b); 
    n=j-1;
    c=0;
    for(i=n;n>0;i--)
    {
        if(b[i]>='0'&&b[i]<='9')
        c=pow(16,n-i)*(b[i]-'0');
        if(b[i]>='a'&&b[i]<='e')
        c=pow(16,n-i)*(b[i]-'a'+10);
        s=s+c;
            }
        printf("%d",s);
    if(a[0]=='-')
    {
        printf("-%d",s);
    }
    else
    {
        if(b[i]>='0'&&b[i]<='9')
        c=pow(16,n)*(b[i]-'0');
        if(b[i]>='a'&&b[i]<='e')
        c=pow(16,n)*(b[i]-'a'+10);
        s=s+c;
        printf("%d",s);
    }
 } 

希望帮忙看看感激不尽.

img

  • 写回答

1条回答 默认 最新

  • 技术专家团-Bamboo 2021-11-21 09:29
    关注

    大写的十六进制字符 A~F没有判断

    评论

报告相同问题?

问题事件

  • 创建了问题 11月21日

悬赏问题

  • ¥15 关于#hadoop#的问题,请各位专家解答!
  • ¥15 如何批量抓取网站信息
  • ¥15 Spring Boot离线人脸识别
  • ¥15 NRF24L01能发送但是不能接收
  • ¥15 想问一下这种情况怎么解决呢(关键词-file)
  • ¥15 python Flassk 模块部署 服务器时报错
  • ¥15 Opencv(C++)异常
  • ¥15 VScode上配置C语言环境
  • ¥15 汇编语言没有主程序吗?
  • ¥15 这个函数为什么会爆内存