【发布时间】:2022-12-10 03:00:28
【问题描述】:
输入
输入中将有几行以包含单个* 的行结尾。这最后一行
不应该被处理。每行将包含 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 有何影响。
谢谢你。
如果我不能正确解释我的问题,我很抱歉。我是编程新手。
【问题讨论】:
-
您不应在数组上使用
&运算符。它们已经衰减为指针。您不会注意到,因为值是相同的,但您实际上提供了不正确的类型。