#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/