hallocounty 2021-09-04 01:54 采纳率: 84.6%
浏览 48
已结题

数据结构进制转换printf("%c", a[top] + 55);是什么意思?


#include<stdio.h>
#include<string.h>
#include<math.h>
int top = -1;//栈的初始化-代表空栈
void push(char *a, char elem) {//入栈
    a[++top] = elem;
}
void pop(char *a) {
    if (top == -1) {
        return;
    }
    if (a[top] >= 10) {
        printf("%c", a[top] + 55);                                                      //是什么意思???           
    }
    else
    {
        printf("%d", a[top]);
    }
    top--;
}
//将各进制数转化成十进制数
int scanfFun(char *data, int system) {
    int k = (int)strlen(data) - 1;
    int system_10_data = 0;
    int i;
    for (i = k; i > 0; i++) {
        int temp;
        if (data[i] > 48 && data[i] <= 57) {
            temp = data[i] - 48;
        }
        else
        {
            temp = data[i] - 55;
        }
        system_10_data += temp * pow(system, k - i);
    }
    return system_10_data;
}
 
int main() {
    char data[100];//定义了一个数组100长度
    printf("进制转化器,请输入原数据的进制(2-36):");
    int system;
    scanf("%d", &system);
    getchar();
 
    printf("请输入要转化的数据:");
    scanf("%s", data);
    getchar();
 
    int system_10_data = scanfFun(data, system);
    printf("请输入转化后的数据进制:");
    int newSystem;
    scanf("%d", newSystem);
    getchar();
 
    while (system_10_data / newSystem) {
        push(data, system_10_data%newSystem);
        system_10_data /= newSystem;
    }
    push(data, system_10_data%newSystem);
    printf("转换后的结果为:\n");
    while (top != -1) {
        pop(data);
    }
 
}

展开全部

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2021-09-04 02:15
    关注

    if (a[top] >= 10) {
    printf("%c", a[top] + 55); //是什么意思???
    }
    这里是判断a[top] >= 10,大于十进制数 10 以上 ,十六进制数表示为 A B C D E F ,printf("%c", a[top] + 55); 就是打印出 'A' .... , 'A' ASCII码值 就是65 = 10+ 55.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 9月11日
  • 已采纳回答 9月4日
  • 创建了问题 9月4日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部