输入
输入由多行组成,以包含单个*
的行结尾。最后一行不应处理。每行包含Hajj
或Umrah
。
输出
对于输入的每一行,在单独的行中输出Hajj-e-Akbar
或Hajj-e-Asghar
,不包含引号。有关确切格式,请参见示例。
这是解决此问题的代码。
#include <stdio.h>
int main()
{
char str[100];
int i = 1;
while (scanf("%s", &str))
{
if (str[0] == '*')
break;
else if (str[0] == 'H')
printf("Case %d: Hajj-e-Akbar\n", i);
else
printf("Case %d: Hajj-e-Asghar\n", i);
i++;
}
}
对于输入
Hajj
Umrah
*
当我一次性输入此内容时,程序通过打印数据提供了预期的输出。
Hajj
Case 1: Hajj-e-Akbar
Umrah
Case 2: Hajj-e-Asghar
*
在得到 *
作为输入后,程序会等待用户按下 Enter
键。按下 Enter
后,程序终止。但是我希望我的程序在得到 *
作为输入时立即终止,而不是通过按下 Enter
键。请帮助我解决这个问题。但这不是我的问题。我的问题是针对同样的输入-
Hajj
Umrah
*
当我使用 scanf("%s\n", &str)
输入时,程序不会在第一个输入 Hajj
后打印输出 Case 1: Hajj-e-Akbar
,但它会在第二个输入 Umrah
后打印第一个输入的输出。然后程序会等待一个 Enter
键来输入 *
。
Hajj
Umrah
Case 1: Hajj-e-Akbar
*
然后我按下Enter
,它会打印出第二个输入Umrah
的输出Case 2:Hajj-e-Asghar
,然后等待另一个输入。按下Enter
后,输出看起来像这样。
Hajj
Umrah
Case 1: Hajj-e-Akbar
*
Case 2: Hajj-e-Asghar
我不理解
\n
在scanf
中的作用。谢谢。如果我的问题表达得不正确,我很抱歉。我是编程的新手。
&
运算符。它们已经衰变为指针。尽管值相同,但您实际上提供了错误的类型,这一点您可能没有注意到。 - Gerhardh