C结构分支问题

来源:百度知道 编辑:UC知道 时间:2024/06/01 02:52:05
#include<stdio.h>
void main()
{
int i,j;
char a,b[25],c;
c='A';
for(i=0;i<25;i++)
b[i]=0;
while(scanf("%c",&a)!='\n')
{
for(i=0;i<25;i++)
if (a==(c+i))
b[i]++;
}
for(i=0;i<25;i++)
printf("字母%c有%d个",c+i,b[i]);

}
当输入回车是停止。
以前也问过类似的
但要求使用while(scanf("%c",&a)!='\n')这种格式的
谢谢!

scanf 的返回值是输入的位数,而不是输入的结果,故而你的判断是有误的。代码修改如下,以j作为标志位,判断回车标志,代码调试通过。

#include<stdio.h>
void main()
{
int i,j = 0 ;
char a,b[25],c;
c='A';
for(i=0;i<25;i++)
b[i]=0;

while(scanf("%c",&a))
{
if ( '\n' == a )
{
if ( 1 == j )
{
break;
}
else
{
j = 1;
continue;
}
}
else
{
j = 0;
}

for(i=0;i<25;i++)
if (a==(c+i))
b[i]++;
}
for(i=0;i<25;i++)
printf("字母%c有%d个",c+i,b[i]);

}