yousamr 2022-11-18 13:05 采纳率: 100%
浏览 30
已结题

C语言统计重复数字次数

img

img


1.为什么后面的都是0
2.如何修改使其满足统计重复的数字的次数

  • 写回答

1条回答 默认 最新

  • a5156520 2022-11-18 13:26
    关注

    数字后面全是0,因为b[a[i]]++这句代码的原因,a[i]里的数据都是字符,所以b[a[i]]++数组越界(比如数字字符'1'的ASCII码是49, 那b[a[i]]++就会执行b[49]++),不是在数组b前面10个数组位置计数,所以导致结果错误;

    b[a[i]]++; 改为 b[a[i]-'0']++;即可,因为数组b是int数组,把字符数字改为数字,用字符数字-'0'就可以了;

    然后i<=strlen(a)改为i<strlen(a),因为使用scanf()函数获取一个字符串到数组a后,数组a最后一个元素下标是strlen(a)-1(除去末尾的空字符'\0').

    修改如下:

    参考链接:
    ASCII码对照表-完整ASCII码表-我就查查询

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main(void){
        int i;
        char a[100];
        int b[10]={0};
        scanf("%s",a);
        
        for(i=0;i<strlen(a);i++){
            b[a[i]-'0']++;
        }
        
        printf("  0  1  2  3  4  5  6  7  8  9\n");
        for(i=0;i<10;i++){
            printf("  %d",b[i]);
        }
        
        return 0;
    }
     
    
    

    img

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

报告相同问题?

问题事件

  • 系统已结题 11月26日
  • 已采纳回答 11月18日
  • 创建了问题 11月18日

悬赏问题

  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!