对于一项作业,我被要求创建一个小程序,该程序要求用户输入以确定他们希望操作的转换器。 我的问题是,在输入想要使用的转换器(1或2)之后,为什么程序不要求用户输入。 它只需要一次性运行整个语句,而不是调用scanf。

#include <stdio.h>

int main()
{
float cm;
float inches;
int operation;

printf("Hello and welcome to the Inches to Centimetres converter. \n");
printf("Choose from the options below by entering the corresponding number:\n");
printf("Inches to CM converter (1)\n");
printf("CM to Inches converter (2)\n");
scanf("&d", &operation);

if (operation == 1)
{
    printf("Please enter the amount of Inches you wish to convert : \n");
    scanf("%f", &inches);

    cm = inches * 2.54;


    if (inches <= 0)
        {
        printf("Invalid number");
        }
    else
        printf("%f inches is equal to %f centimetres.", inches, cm);
}
else if (operation == 2);
{
    printf("Please enter the amount of Centimetres you wish to convert : ");
    scanf("%f", &cm);

    inches = cm / 2.54;


    if (cm <= 0)
        {
        printf("Invalid number");
        }
    else
        printf("%f centimetres is equal to %f inches.", cm, inches);
}


}

产量

#1楼 票数:2 已采纳

这里有两个问题。 第一:

scanf("&d", &operation);

有一个错字,“&d”应为“%d”,这就是为什么您会立即得到两次提示的原因。 你要:

scanf("%d", &operation);

其次是:

}
else if (operation == 2);
{

; 立即结束else块。 因此,大括号中的块将始终运行。 摆脱;

}
else if (operation == 2)
{

更好的是:

} else if (operation == 2) {

用这种方式格式化花括号实际上将消除这种类型的错误。

  ask by Josh B translate from so

未解决问题?本站智能推荐:

1回复

C-While循环中的If语句。连续Scanf()

好吧,我希望该功能将更改返回给我。 而且我有限制,我无法插入所有类型的硬币。 例如,如果我有givemeChange(0.50)我想插入钱直到钱足以支付产品。 我找不到解决方案。 我在终端中插入2个数字,然后函数总是继续return 0.69 这是我的代码: 感谢您的时间
2回复

为什么这是跳出while循环的有效scanf语句?

为什么这是跳出无限while循环的有效代码行?
3回复

与scanf()或if()混淆

我对C不太熟悉。因此,也许有人会轻易找到解决方案,如果您共享它,我也不会介意。 在第一个scanf()中输入数据后,始终提供选项else():“错误”。 我一直在寻找问题的可能选择。 我发现了很多类似的东西,但是没有什么可以帮助我的。 我认为错误在于strcmp()。 但是我不能肯定
3回复

使用scanf获取一个字符串,然后对该字符串使用if语句,而不是c语言中的字符

我知道您可以使用scanf并获取要在if子句中使用的字符,但是,有没有办法使用字符串呢? 例如
2回复

scanf()没有接受输入

所以这是我当前的问题。 Scanf()实际上并没有在程序中的特定位置进行扫描,并且没有任何理由不从我的编程/逻辑部分进行扫描(据我所知)。 另外,我有一个if语句也不起作用,如果我输入31,它应该执行条件语句。 但是,事实并非如此。 为了明确起见,每当我用gets()切换scanf(
3回复

检测scanf读取的值的变化

对于作业,我们应该从文本文档中读取日期列表和相关值(温度)。 每行中的值用逗号分隔。 示例数据: 到目前为止,我已经实现了一个循环来读取每一行: 我们假设文档中没有错误,没有重复日期。 但是,可能缺少条目(不是每个月都有完整的数据;缺少天数)。 我无法检测每个月的数据(mm
5回复

在函数中使用scanf和循环

我想使用一个函数来询问用户是否有余额。 如果余额低于0,则提示用户输入大于0的值。这是我到目前为止所做的代码: 我收到错误“警告:控制到达非空函数的结束”。 我知道我需要结束else语句,但是如果输入的值超过0,则不确定要放在那里的内容。此外,当程序运行时,它会要求用户两次输入起始余额。
4回复

C中的区分大小写(scanf)(如果/其他)

我的脚本的这一部分工作正常,只是输入“ blue”完成了if语句,但将输入“ Blue”视为其他。 我在用||做or语句时遇到麻烦 因此可以接受“蓝色”或“蓝色”。 如果有人可以提供一些指导,将不胜感激。 我刚刚开始学习C。 完整脚本在这里: