个位数统计——字符串的应用

#include <stdio.h>
#include <string.h>

int main() {
    char N[1001];  // 用于存储最多 1000 位的数字
    int count[10] = {0};  // 用于统计各个位数字的出现次数

    // 输入数字 N,最多 1000 位
    scanf("%s", N);

    // 统计数字出现次数
    int len = strlen(N);  // 获取数字的长度
    for (int i = 0; i < len; i++) {
        count[N[i] - '0']++;  // 将字符转换为数字并计数
    }

    // 输出结果,按照数字升序输出
    for (int i = 0; i < 10; i++) {
        if (count[i] > 0) {
            printf("%d:%d\n", i, count[i]);  // 输出数字 i 及其出现次数
        }
    }

    return 0;
}

问题分析:

  1. 大数字处理问题long long 最大能表示 64 位整数,即范围是 -2^632^63 - 1,大约是 -92233720368547758089223372036854775807,如果数字超出这个范围,long long 类型就无法正确表示了。
  2. 负数问题:如果输入的是负数,long long 也会导致一些问题。虽然在你的代码中,程序没有显式处理负数,但如果输入了负数,temp = n 会把负号处理为一个数字,这可能导致错误的结果。

解决方案:

  1. 处理大数字:对于大于 long long 范围的数字,我们应该将数字处理为字符串,而不是直接当作 long long 类型来处理。

全部评论

相关推荐

高歌起舞:今年AI相关岗位卡九卡本特别严重
我的求职进度条
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务