输入一个以回车结束的字符串(有效长度少于80),再输入一个字符,统计其在字符串中出现的次数。

下面是完整的题目和我写的错误程序,帮我看看错在哪里,谢谢!输入一个以回车结束的字符串(有效长度少于80),再输入一个字符,统计其在字符串中出现的次数。如:输入asdabc... 下面是完整的题目和我写的错误程序,帮我看看错在哪里,谢谢!
输入一个以回车结束的字符串(有效长度少于80),再输入一个字符,统计其在字符串中出现的次数。
如:输入asdabc 再输入 a 答案为 2
要求用函数调用的形式,提示:
主函数的功能:输入字符串,输入字符,调用count()函数统计次数,输出结果。
count()函数功能:统计出次数,将结果返会主函数。
#include<stdio.h>

int count(char a[80]);
int main()
{
char a[80];
int b,i=0;
printf("Input characters:");
do{scanf("%c",&a[i]);}while(a[i]!='\n'&&i<=80);
b=count(a);
printf("%d\n",b);
}
int count(char a[80])
{
int i,x,k=0;
scanf("%c",&x);
for(i=0;i<=80&&a[i]!='\n';i++)
{
if(a[i]==x)
k++;
}
return k;
}
展开
 我来答
听不清啊
高粉答主

推荐于2017-09-10 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部
#include<stdio.h>
int count(char a[80]);

int main()
{
char a[80];
int b,i=0;
printf("Input characters:");
do{scanf("%c",&a[i]);}while(a[i++]!='\n'&&i<=80); //这里改了,不然不能保留已读的字符
b=count(a);
printf("%d\n",b);
}
int count(char a[80])
{
int i,x=0,k=0;
//这里改了,要么int x=0 要么char x;不然的话x 占2个字节,它的前一个字节值不确定
scanf("%c",&x);
for(i=0;i<=80&&a[i]!='\n';i++)
{
if(a[i]==x)
k++;
}
return k;
}
追问
试验了一下,是这样的,不过我还是有问题。我是新手,见谅~
do{scanf("%c",&a[i]);}while(a[i++]!='\n'&&i<=80);
不是只有先输入,才能判断输入的是不是回车,先做do输入a[i],那a[i++]这个没输入怎么知道是什么
int i,k=0; char x;
scanf("%c",&x);
这里的错误是笔误还是能理解的
追答
a[i++]!='\n'它是先比较a[i]!='\n' 后再i++的。

int i,x=0,k=0;
//这里改了,要么int x=0 要么char x;不然的话x 占2个字节,它的前一个字节值不确定
scanf("%c",&x); 这么用也不是不可以,这是尊重你原来的写法,不是我的笔误。可以运行的。
C中int是可以作为char来用的啊。
我写的二个“要么”就是均可的意思。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式