|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
编写一程序P275.C实现以下功能
从键盘读入一行字符(约定:字符数≤127字节),统计并显示该行字符中10个数字字符各自出现的次数,没有出现的字符不显示。编程可用素材:printf("请输入一行字符:")、printf("统计结果为:\n")、printf("%c-%d\n"…。
程序的运行效果应类似地如图1和图2所示,图1和图2中的红色部分是从键盘输入的内容。
请输入一行字符:a653 xAXaxii23523!=-xi351xizxiax
统计结果为:
1-1
2-2
3-4
5-3
6-1
图1 程序运行效果示例1
请输入一行字符:p0hr r00']\ rv5yj 9 hpOORH sV5yy vy y9
统计结果为:
0-3
5-2
9-2
图1 程序运行效果示例2
以下是我写的,有错,如果可以的话请帮我看看哪儿错了
#include<stdio.h>
int main(void)
{
char ss[128];
int i, aa[10] = {0};
printf("请输入一行字符:");
gets(ss);
printf("统计结果为:\n");
for(i = 0; ss[i] != '\0'; i++)
{
if(ss[i] >= 0 && ss[i] <= 9)
{
aa[ss[i]]++;
}
}
for(i = 0; i <= 9; i++)
{
if(aa[i] != '\0')
{
printf("%c-%d\n", i, aa[i]);
}
}
return 0;
}
一共有三处错误
1. - if(ss[i] >= 0 && ss[i] <= 9)
复制代码
因为gets接受的是字符,所以if应该判断ss[i]是不是应该为字符'0'-‘9’,而不是数字0-9
应该为
- if(ss[i] >= '0' && ss[i] <= '9')
复制代码
2.
和第一个相似,输入的都是字符,'0'对应的ascii为48,,'1'对应的ascii是49........'9'对应的ascii是57,所以应该是
3. - printf("%c-%d\n", i, aa[i]);
复制代码
输出时,i为整型,不能用%c,应该是
- printf("%d-%d\n", i, aa[i]);
复制代码
完整的代码
- #include<stdio.h>
- #include<stdlib.h>
- int main(void)
- {
- char ss[128];
- int i, aa[10] = {0};
- printf("请输入一行字符:");
- gets(ss);
- printf("统计结果为:\n");
- for(i = 0; ss[i] != '\0'; i++)
- {
- if(ss[i] >= '0' && ss[i] <= '9')
- {
- aa[ss[i] - 48]++;
- }
- }
- for(i = 0; i <= 9; i++)
- {
- if(aa[i] != '\0')
- {
- printf("%d-%d\n", i, aa[i]);
- }
- }
- system("pause");
- return 0;
- }
复制代码
|
|