我是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退出。.
答案 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.