所以这在理论上似乎是一个相对简单的C问题,但在实践中它有点困难。 因此用户输入数字N,之后他们输入N个字符。一个程序应该计算大写字母的出现次数(或小写或其他什么,这不是问题)。这就是控制台的外观(例如,用户输入数字3):
输入N:3
输入字符1:p
输入字符2:/
输入字符3:s
等等。我尝试这样做的方式是:
#include <stdio.h>
#include <ctype.h>
int main(int argc, char **argv)
{
int n;
scanf("%d", &n);
int b = 0;
for (int i = 1; i<=n; i++){
printf("Enter character %d: ", i);
char c;
scanf("%c", &c);
if (islower(c)) b++;
}
printf("%d\n", b);
return 0;
}
这似乎是一个很好的解决方案但问题是显然在输入N后按下ENTER键,或者在输入任何字符后被识别为需要输入的字符之一。现在我不确定这是否是它应该工作的方式,但是当用户完成某个输入时,不是ENTER键的角色告诉控制台?我的意思是如果我输入N时不能按Enter键而不将其作为一个角色捕获,我怎么能输入N?这是我测试时控制台的样子:
所以我想我可以以某种方式使循环运行两次N的时间,每次都忽略第一个字符,但我想知道我是否应该将其视为编码问题或控制台问题。
有什么想法吗?感谢。