王祖宇 发表于 2020-11-22 13:59:30

学校作业,求助

  编写一程序P275.C实现以下功能
  从键盘读入一行字符(约定:字符数≤127字节),统计并显示该行字符中10个数字字符各自出现的次数,没有出现的字符不显示。编程可用素材:printf("请输入一行字符:")、printf("统计结果为:\n")、printf("%c-%d\n"…。
  程序的运行效果应类似地如图1和图2所示,图1和图2中的红色部分是从键盘输入的内容。

请输入一行字符:a653xAXaxii23523!=-xi351xizxiax
统计结果为:
1-1
2-2
3-4
5-3
6-1
图1 程序运行效果示例1

请输入一行字符:p0hr r00']\ rv5yj 9 hpOORH sV5yy vyy9
统计结果为:
0-3
5-2
9-2
图1 程序运行效果示例2

以下是我写的,有错,如果可以的话请帮我看看哪儿错了
#include<stdio.h>
int main(void)
{
        char ss;
        int i, aa = {0};

        printf("请输入一行字符:");
        gets(ss);

        printf("统计结果为:\n");

        for(i = 0; ss != '\0'; i++)
        {
                if(ss >= 0 && ss <= 9)
                {
                        aa]++;
                }
        }
        for(i = 0; i <= 9; i++)
        {
                if(aa != '\0')
                {
                        printf("%c-%d\n", i, aa);
                }
        }
        return 0;

}

jackz007 发表于 2020-11-22 14:22:51

本帖最后由 jackz007 于 2020-11-22 14:24 编辑

      for(i = 0; ss != '\0'; i++)
      {
                if(ss >= 0 && ss <= 9)   // 这一句要改
                {
                        aa]++;             // 这一句要改
                }
      }

      for(i = 0; ss != '\0'; i++)
      {
                if(ss >= '0' && ss <= '9')
                {
                        aa - '0']++;
                }
      }

小甲鱼的铁粉 发表于 2020-11-22 14:27:37

一共有三处错误
1.if(ss >= 0 && ss <= 9)
因为gets接受的是字符,所以if应该判断ss是不是应该为字符'0'-‘9’,而不是数字0-9
应该为
if(ss >= '0' && ss <= '9')
2.aa]++;
和第一个相似,输入的都是字符,'0'对应的ascii为48,,'1'对应的ascii是49........'9'对应的ascii是57,所以应该是
aa - 48]++;
3.printf("%c-%d\n", i, aa);
输出时,i为整型,不能用%c,应该是
printf("%d-%d\n", i, aa);

完整的代码
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
      char ss;
      int i, aa = {0};

      printf("请输入一行字符:");
      gets(ss);

      printf("统计结果为:\n");

      for(i = 0; ss != '\0'; i++)
      {
                if(ss >= '0' && ss <= '9')
                {
                        aa - 48]++;
                }
      }
      for(i = 0; i <= 9; i++)
      {
                if(aa != '\0')
                {
                        printf("%d-%d\n", i, aa);
                }
      }
      system("pause");
      return 0;

}

王祖宇 发表于 2020-11-22 15:22:47

小甲鱼的铁粉 发表于 2020-11-22 14:27
一共有三处错误
1.
因为gets接受的是字符,所以if应该判断ss是不是应该为字符'0'-‘9’,而不是数字0-9


第三个错误那里,作业要求输出格式必须为printf("%c-%d\n"…。i不能用整型

小甲鱼的铁粉 发表于 2020-11-22 15:52:28

王祖宇 发表于 2020-11-22 15:22
第三个错误那里,作业要求输出格式必须为printf("%c-%d\n"…。i不能用整型

printf("%c-%d\n", i+48, aa);
那这样

小甲鱼的铁粉 发表于 2020-11-22 15:53:37

这个题的目的应该是加深对字符的ascii码的理解的
页: [1]
查看完整版本: 学校作业,求助