#include <stdio.h>
#include <stdlib.h>

int main() {
    int i;
    int mult;
    int n;
    int ans;
    ans = mult * i;

    printf("Please enter a multiple you want to explore.");
    scanf("%d", &mult);
    printf("Please enter the number which you would want to multiply this number till.");
    scanf("%d", &n);

    for(i = 0; i<n; i++) {
        printf("%d x %d = %d \n", &mult, &i , &ans);
    }
    return 0;
}

大家好,这是一个简单的代码,应该可以帮助用户列出n次的时间表。然而,我收到了未定义的行为,我很困惑我的“for”循环的实现有什么问题。
我收到这个作为我的输出。
6356744 x 6356748 = 6356736

在我的控制台里有n次。
我想问问
我的代码逻辑有什么问题吗?(我想我的代码确实有问题,所以请务必启发我)
当我必须不断地改变变量的值时,使用指针指向所提到的变量的内存地址会更好(甚至可能)吗?如果是,我该怎么做?
谢谢!

最佳答案

printf中必须提供整数。现在给出整数的地址。所以改变

printf("%d x %d = %d \n", &mult, &i , &ans);


printf("%d x %d = %d \n", mult, i, ans);

为了制作表格,将ans替换为mult*i,因此:
printf("%d x %d = %d \n", mult, i, mult*i);

您还应该检查scanf的返回值,以检查它是否已成功读取您的输入:
do {
    printf("Please enter a multiple you want to explore.");
} while (scanf("%d", &mult)!=1);
do {
    printf("Please enter the number which you would want to multiply this number till.");
} while (scanf("%d", &n)!=1);

关于c - for循环导致未定义的行为c,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50665829/

10-12 03:15