m0_53936501
2021-05-10 00:21
采纳率: 100%
浏览 39

有关c++的一个问题不知哪里出错了求教?

本人学生课本有一道题

请编写程序,实现统计字符串s中数字字符‘0’~‘9’出现的次数,并依次存储在长度为10的数组count中。

以下是本人编写的程序,请指教。

 

#include <stdio.h>
void main()
{
    char c;
    int count[10] = {0,0,0,0,0,0,0,0,0,0};
    printf("请输入任意字符(输入*终止)\n");
    while ((c = getchar()) != '*');
    {
        if (c == 0)
            count[0]++;
        else if (c == 1)
            count[1]++;
        else if (c == 2)
            count[2]++;
        else if (c == 3)
            count[3]++;
        else if (c == 4)
            count[4]++;
        else if (c == 5)
            count[5]++;
        else if (c == 6)
            count[6]++;
        else if (c == 7)
            count[7]++;
        else if (c == 8)
            count[8]++;
        else if (c == 9)
            count[9]++;
        else;
    }
    printf("%d %d %d %d %d %d %d %d %d %d", count[0], count[1], count[2], count[3], count[4], count[5], count[6], count[7], count[8], count[9]);
}
 

正常应该是输入55566677789输出0000033311,可是每次不够输入什么输出都为0000000000

 

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • 已采纳
    #include <stdio.h>
    void main()
    {
        char c;
        int count[10] = {0,0,0,0,0,0,0,0,0,0};
        printf("请输入任意字符(输入*终止)\n");
        while ((c = getchar()) != '*')
        {
            if (c == '0')
                count[0]++;
            else if (c == '1')
                count[1]++;
            else if (c == '2')
                count[2]++;
            else if (c == '3')
                count[3]++;
            else if (c == '4')
                count[4]++;
            else if (c == '5')
                count[5]++;
            else if (c == '6')
                count[6]++;
            else if (c == '7')
                count[7]++;
            else if (c == '8')
                count[8]++;
            else if (c == '9')
                count[9]++;
            else;
        }
        printf("%d %d %d %d %d %d %d %d %d %d", count[0], count[1], count[2], count[3], count[4], count[5], count[6], count[7], count[8], count[9]);
    }
    
    点赞 评论
  • benbenli 2021-05-10 02:50

    既然用C++,就要真的用C++,而不是C。你看C++代码简单多了。

    
    #include <map>
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        map<char, int> counter;
        char c;
        
        cout << "请输入任意字符(输入*终止: " << endl;
        while ((cin >> c) && c != '*')
        {
            ++counter[c];
        }
        
        cout << "Digit counters: ";
        for (c = '0'; c <= '9'; ++c)
            cout << counter[c] << ' ';
        cout << endl;
        
        return 0;
    }
    
    // Output
    请输入任意字符(输入*终止:                                                                                                                                                         
    55566677789*                                                                                                                                                                       
    Digit counters: 0 0 0 0 0 3 3 3 1 1    

    如果你满意我的回答,请点采纳,我很感谢你的认可。

    点赞 1 评论
  • 代码的问题一是while ()后面多了个 ; 分号,二是if (c == '0') 其中'0'是字符要加单引号。

    点赞 评论
  • CSDN专家-三岁丫 2021-05-10 00:42

    getchar 返回的是一个字符对应的 ASCII 的编码,而字符 '1' 对应的编码应该是 49 。你要把所有的 == 号的右边都改成单引号扩起来的

    点赞 评论
  • 有问必答小助手 2021-05-10 11:20

    您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

    如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

    ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

    点赞 评论
  • C和C++技术博客 2021-05-10 15:10

    希望对您有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html

    点赞 评论

相关推荐 更多相似问题