c - 如何用C语言制作乘法表

标签 c

int main(void){

    int number;

    while(1) {
        scanf("%d", &number);
        printf("%d", number);

        if (number >= 1 && number <= 9) {
            for (int j = 1; j <= 9; j++) {
                printf("%d X %d = %d \n", number, j, number*j);
            }
            break;
        }
        else if (number >= 0) {
            break;
        }
        else {
            while (getchar() != '\n');
            continue;
        }
    }
    return 0;
}

抱歉..我的英语不是很好:(

这是我的九九乘法表 如果我输入负数。同时>中断 但是这段代码输入负数> else....

如何修改此代码

我想要你的聪明知识:)


使用谷歌翻译

输入小于0的数字时程序终止 输入字符时重新启动循环语句

最佳答案

您根本不处理负数。

仅当 number 等于 0 或大于 9 时,以下 else if block 才会命中,因为您的第一个 if 处理从 19 的数字。

else if (number >= 0) {
                ^^-> greater than or equal to 0.

所以将其更改为

else if (number <= 0) {
                ^^->less than or equal to 0.

Restart loop statement when entering characters.

您可以使用 scanf 的返回值在输入 char 时重新启动循环

while(1) {
        int ret = scanf("%d", &number);
        if (ret != 1)
        {
           printf("enter valid number\n");
           continue;
        }
        printf("number:%d", number);

        if (number >= 1 && number <= 9) {
            for (int j = 1; j <= 9; j++) {
                printf("%d X %d = %d \n", number, j, number*j);
            }
            break;
        }
        else if (number <= 0) {
            break;
        }
    }

关于c - 如何用C语言制作乘法表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52680672/

相关文章:

c - 存储字符串的某些部分

c - 调用库函数后无法访问/修改所需的指针值

c - 使用 ARM neon 内在函数进行深度转换

c - 在C中初始化字符指针数组

java - 为什么 Java 在这里运行得比 C 快?

c - 在 Cygwin 中运行 C 程序不会产生任何结果

c - 结构成员赋值在不在函数内部时导致语法错误

指向堆栈的 C 指针导致警告

c - 任何与 pthread_getcpuclockid 等效的函数,因为我有 Thread

C: 如果没有单独的功能,代码将无法工作。为什么?