复试上机题 求教

java学一生 2019-03-29 12:53:25
统计一个给定字符串中指定的字符出现的次数
Input
测试输入包含若干测试用例,每个测试用例包含2行,第1行为一个长度不超过5的字符串,第2行为一个长度不超过80的字符串。注意这里的字符串包含空格,即空格也可能是要求被统计的字符之一。当读到'#'时输入结束,相应的结果不要输出。
Output
对每个测试用例,统计第1行中字符串的每个字符在第2行字符串中出现的次数,按如下格式输出:
c0 n0
c1 n1
c2 n2
...
其中ci是第1行中第i个字符,ni是ci出现的次数。
Sample Input
I
THIS IS A TEST
i ng
this is a long test string
#
Sample Output
I 2
i 3
5
n 2
g 2
注:第2个测试用例中,空格也是被统计的字符之一。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char a[6], b[81], c[10] = {0};
int lena, lenb;
while (gets(a)&&a[0] != '#')
{
gets(b);
lena = strlen(a); lenb = strlen(b);
for (int i = 0; i < lena; i++)
{
for (int j = 0; j < lenb; j++)
{
if (a[i] == b[j])
{
c[i]++;
}
}
}
for (int i = 0; i < lena; i++)
{
printf("%c %d", a[i], c[i]);
printf("\n");
}
}

system("pause");
return 0;
}

提交错误 可是我输入输出都是对的
...全文
248 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2019-03-29
  • 打赏
  • 举报
回复
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char a[80], b[80];
int *cnt;
int lena, lenb;
while (fgets(a, 80, stdin) && a[0] != '#')
{
fgets(b, 80, stdin);
lena = strlen(a);
lenb = strlen(b);
if (lena < 80)
a[--lena] = 0; //'\0'
if (lenb < 80) //'\0'
b[--lenb] = 0;

cnt = (int *)malloc(sizeof(int) * lena);
if (!cnt)
exit(0);

for (int i = 0; i < lena; i++)
{
cnt[i] = 0;
for (int j = 0; j < lenb; j++)
{
if (a[i] == b[j])
{
cnt[i]++;
}
}
}
for (int i = 0; i < lena; i++)
{
printf("%c %d", a[i], cnt[i]);
printf("\n");
}
free(cnt);
}

system("pause");
return 0;
}


供参考~
自信男孩 2019-03-29
  • 打赏
  • 举报
回复
如果i >= 10,那么c数组就会越界。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧