输入一行字符,统计指定字符的个数。

huankid 2010-04-22 12:02:06

#include "stdio.h"
#include "string.h"

int main()
{char c[100],a,b,n,i,f;
printf("输入一行字符\n");
scanf("%s",c);
printf("指定字符\n");
scanf("%c",&a);
for(i=0;i<=strlen(c);i++)
{if (c[i]!=a) break;
else
{n=0;
n=n+1;
printf("%d\n",n);}}
return 0;
}

输入一行字符,统计指定字符的个数。

程序不对。。。
...全文
317 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
白云飘飘飘 2010-04-22
  • 打赏
  • 举报
回复
printf("指定字符\n");
getchar();
scanf("%c",&a);
huankid 2010-04-22
  • 打赏
  • 举报
回复
#include "stdio.h"
#include "string.h"

int main()
{char c[100],a;
int n=0,i;
printf("输入一行字符\n");
scanf("%s",c);
printf("指定字符\n");
scanf("%c",&a);
for(i=0;i<=strlen(c);i++)
{if (c[i]==a)
n=n+1;}
printf("%d\n",n);
return 0;
} 这样为啥还是不对?
Myth_cn 2010-04-22
  • 打赏
  • 举报
回复
#include "stdio.h"
#include "string.h"

int main()
{
char c[100],a,b,n,i,f;
printf("输入一行字符\n");
scanf("%s",c);
fflush(stdin);
printf("指定字符\n");
scanf("%c",&a);
fflush(stdin);
n = 0;
for(i=0;i<=strlen(c);i++)
{
if (c[i] == a)
++n;
}
printf("%d\n",n);
return 0;
}

不考虑你的输入太长导致缓冲溢出的问题
白云飘飘飘 2010-04-22
  • 打赏
  • 举报
回复
if (c[i]==a)
{static n=0;
n=n+1;
printf("%d\n",n);}
huankid 2010-04-22
  • 打赏
  • 举报
回复
没有break 也不对。。。 话说break怎么用???
tankdin 2010-04-22
  • 打赏
  • 举报
回复
如果不相等,continue继续循环,不是break。
而且你这样n每次符合条件就赋0了。
n在循环外面给个初值就可以了。
tankdin 2010-04-22
  • 打赏
  • 举报
回复
你直接break掉了....
elegant87 2010-04-22
  • 打赏
  • 举报
回复

fflush(stdin)清空输入缓冲区。
scanf("%d",&a);
scanf("%c",&c);
经常如果这种情况的话,第一次输入的回车可能会被第二次输入操作所捕捉,这个的作用就是清空缓冲,这样就不会出现这种情况了。
elegant87 2010-04-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 huankid 的回复:]

#include "stdio.h"
#include "string.h"

int main()
{char c[100],a;
int n=0,i;
printf("输入一行字符\n");
scanf("%s",c);
printf("指定字符\n");
scanf("%c",&a);
for(i=0;i<=strlen(c);i++)
{if (c[i]==……
[/Quote]

n=n+1改为n++

#include "stdio.h"
#include "string.h"

int main()
{
char c[100],a;
int n=0,i;
printf("输入一行字符\n");
scanf("%s",c);
printf("指定字符\n");
//getchar();
fflush(stdin); //要清理缓冲区 getchar()也可以的
scanf("%c",&a);
for(i=0;i<=strlen(c);i++)
{
if (a==c[i])
n++; //此处不是n=n+1
}
printf("%d\n",n);
return 0;
}
十八道胡同 2010-04-22
  • 打赏
  • 举报
回复
printf("指定字符\n");
scanf("%c",&a);

------------------------
printf("指定字符\n");
getchar();
scanf("%c",&a);判断一下a里面有值不

for(i=0;i<=strlen(c);i++)
------------
for(i=0;i<strlen(c);i++)
huankid 2010-04-22
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lcl_data 的回复:]
printf("指定字符\n");
scanf("%c",&a);

------------------------
printf("指定字符\n");
getchar();
scanf("%c",&a);判断一下a里面有值不

for(i=0;i<=strlen(c);i++)
------------
for(i=0;i<strlen(c);i++)
[/Quote]


为什么一定要有getchar()???????????、
huankid 2010-04-22
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 elegant87 的回复:]
C/C++ code

fflush(stdin)清空输入缓冲区。
scanf("%d",&a);
scanf("%c",&c);
经常如果这种情况的话,第一次输入的回车可能会被第二次输入操作所捕捉,这个的作用就是清空缓冲,这样就不会出现这种情况了。
[/Quote]
好高深完全不懂。。。。。。 但程序已经编对了~~~
renzhewh 2010-04-22
  • 打赏
  • 举报
回复

scanf("%s",c);
改成
scanf("%s%*c", c);

for(i=0;i<=strlen(c);i++)
改成
for(i=0;i<strlen(c);i++)

69,369

社区成员

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

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