卡在C的乘法表中

时间:2018-09-25 17:23:59

标签: c

我是C编程新手。我试图编写一个程序,该程序可以接受用户的整数并显示其乘法表(最多10倍)。 这是我的程序:

#include <stdio.h>

int main ()
{
        int number;
        int count = 1;
        int sum;

        printf("Enter a number to display its table: ");
        scanf(" %i ", &number);

        while (count <=10)
                {
                    sum = number * count;
                    printf("%i x %i = %i\n", number, count, sum);
                    count += 1;
                }
return 0;
}

编译成功完成,但是当我执行输出文件时,什么也没发生,终端卡住了,我必须按ctrl + c退出。.

My output

4 个答案:

答案 0 :(得分:8)

这是由于您的scanf命令中使用了空格。

如果将其替换为

scanf("%i", &number);

您会立即得到答复。

答案 1 :(得分:7)

使用scanf格式" %i ",由于格式中的前导空格,scanf函数将读取(并跳过)可能的前导空格。

然后它将读取整数。

然后,由于存在尾随空格,它将读取并丢弃空格,直到找到非空格输入为止。

由于此后没有非空格输入,因此scanf将阻塞,直到您提供一些非空格输入为止。

只需在格式中没有空格即可解决。或通过输入一些额外的虚拟输入(后跟 Enter )。

答案 2 :(得分:2)

问题出在scanf上。

只需替换

scanf(" %i ", &number);

具有:

scanf("%i", &number);

它将起作用。

答案 3 :(得分:1)

#include <stdio.h>

int main (){
        int number;
        int count = 1;
        int sum;

        printf("Enter a number to display its table: ");
        scanf("%d", &number);  

        while (count <=10){
             sum = number * count;
             printf("%d * %d = %d\n", number, count, sum);
             count += 1;
        }
return 0;
}

注意:您可以同时使用%d%i,其中%d指定带符号的十进制整数,而%i指定整数。

问题:您的代码问题是在%i之前使用空格。

错误:

scanf(" %i ", &number); //Wrong

右:

scanf("%i", &number); //Right.