学校作业,求助
编写一程序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: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']++;
}
} 一共有三处错误
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 14:27
一共有三处错误
1.
因为gets接受的是字符,所以if应该判断ss是不是应该为字符'0'-‘9’,而不是数字0-9
第三个错误那里,作业要求输出格式必须为printf("%c-%d\n"…。i不能用整型 王祖宇 发表于 2020-11-22 15:22
第三个错误那里,作业要求输出格式必须为printf("%c-%d\n"…。i不能用整型
printf("%c-%d\n", i+48, aa);
那这样 这个题的目的应该是加深对字符的ascii码的理解的
页:
[1]