#我的目标:输入字符,以回车结束,输出“输入A的个数”。但是我做出以下尝试,为何程序无法循环输入?
#include <stdio.h>
int main()
{
char a;
int t = 0;
while(1)
{
printf("请输入:");
scanf("%c", &a);
if(a == 'A')t++;
if(a == '\n')break;
}
printf("%d", t);
}
#include <stdio.h>
int main()
{
char a,b;
int t = 0;
do
{
printf("请输入:");
scanf("%c", &a);
if(a == 'A')t++;
}while((b=getchar())!='\n');
printf("%d", t);
}
第一个是因为输入回车键自动结束了输入,而输入一个字符后又必须敲一次回车键【悖反了哈哈】;
第二个是因为开始的时候循环执行一次,所以可以输入一次,然后你输入了a字符变量后,不是需要回车键吗,结果又没了。
第二个可以改成EOF,也就是
#include <stdio.h>
int main()
{
char a,b;
int t = 0;
do
{
printf("请输入:");
scanf("%c", &a);
if(a == 'A')t++;
}while((b=getchar())!=EOF);//这里改了
printf("%d", t);
}
然后输入结束,用ctrl+z来结束输入
其实第一个也可以这么改
#include <stdio.h>
int main()
{
char a;
int t = 0;
while(1)
{
printf("请输入:");
scanf("%c", &a);
if(a == 'A')t++;
if(a == EOF)break;
}
printf("%d", t);
}
然后ctrl+z结束输入
#include <stdio.h>
int main()
{
char a;
int t = 0;
printf("请输入:");
while(1)
{
scanf("%c", &a);
if(a == 'A')t++;
if(a == '\n')break;
}
printf("%d", t);
}
修改如下,供参考:
#include <stdio.h>
int main()
{
char a;
int t = 0;
printf("请输入:");
while(scanf("%c", &a)==1 && a != '\n')
{
//scanf("%c", &a);
if(a == 'A')t++;
//if(a == '\n') break;
}
printf("%d", t);
return 0;
}