1

新人来了。我已经在这里待了一个月左右(C 到 Obj C 到 Cocoa 到 iOS 应用程序的进展)

回到一些基本的 C 语言后,我对明显常见的“scanf 跳过下一个 scanf 因为它正在吃回击键”问题感到困惑。我已经尝试将#c 添加到第二个 scanf 中,我也尝试在其中添加一个空格,但它仍然跳过了第二个 scanf,并且我总是返回 0 作为我的平均值。我知道有比 scanf 更好的输入命令。但就目前而言,必须有一种方法可以让这样简单的事情起作用吗?

谢谢!〜史蒂夫

int x;
int y;

printf("Enter first number:");
scanf("#i", &x);

printf("Enter second number:");
scanf("#i", &y);

printf("\nAverage of the two are %d", ((x+y)/2));
4

2 回答 2

1

您应该使用%d格式说明符来读取integer输入。

scanf("%d", &x); 
scanf("%d", &y);  

并通过转换为浮动打印平均值

printf("\nAverage of the two are %6.2f", ((float)(x+y)/2));

测试代码:

#include<stdio.h>
int main()
{

int x;
int y;

printf("Enter first number:");
scanf("%d", &x);

printf("Enter second number:");
scanf("%d", &y);

printf("\nAverage of the two are %6.3f\n", ((float)(x+y)/3));
return 0;
}
于 2013-08-31T15:53:28.093 回答
1

当您在输入第一个数字后按 Enter 键时,新行字符会留在标准输入中。因此,它将换行符作为下一个输入(第二个数字)。您应该在第二个 scanf() 函数的 %d 之前留下一个空格。scanf("%d", &y);

int x;
int y;

printf("Enter first number:");
scanf("%d", &x);

printf("Enter second number:");
scanf(" %d", &y);

printf("\nAverage of the two are %d", ((x+y)/2));
于 2020-07-09T16:27:38.353 回答