按点使循环停止

时间:2015-11-07 00:58:46

标签: c

我需要编写一个程序,要求您输入数字,当您按下点时,它将结束循环并显示有多少数字为正数,多少数为负数,例如4 5 -9。

程序应显示2个数字为正数,1个为负数,但这不是我的问题。当我按下点时,我会停留在循环停止的部分,并且请记住我们处于编程的起始阶段,所以我无法使用花哨的东西。

正如你在这里看到的那样,我尝试给出一个变量两种类型(charfloat),但我认为这不起作用,因为它使用了字符的值而不是数字他们自己。

int main()
{
    float p, n;
    char a;

    n = 0;
    p = 0;

    do
    {
        printf("type a number");
        scanf("%s&%f", &a);

        if (a < 0)
        {
            n = n + 1;
        }
        else if (a > 0)
        {
            p = p + 1;
        }
        else
        {
        }
    }
    while (a != '.');

    printf(" positive numbers are %2.0f \n  negative numbers are %2.0f", p, n);
    return 0;
}

2 个答案:

答案 0 :(得分:1)

通过流行的在线c编译器运行代码:

http://www.tutorialspoint.com/compile_c_online.php

您的代码按预期运行。键入“。”会发生什么?

编辑:(解决方案)

问题在于输入负数时

a = '-'

,其整数值大于零,因此不会触发否定的情况。

然后,解决方案是检查否定符号:

if (a == '-') {...}

另外,请注意'。'输入以终止循环被计为正数。

答案 1 :(得分:0)

如果第一个字符不是'。',您应该将输入读入字符串并将其转换为整数。像这样:

    printf("type a number\n");
    scanf("%s", a);
    if (a[0] == '.') {
        break;
    }
    i = strtoul(a, NULL, 10);

然后你可以看出我是积极的还是消极的。声明一个char [10]或其他东西。