#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次。
我想问一下
我的代码逻辑有什么问题吗? (我想我的代码确实有问题所以请赐教我)
当我不得不经常更改变量的值时,使用指针指向所提及变量的内存地址会更好(甚至可能)吗?如果是的话,我该怎么做呢?
谢谢!
答案 0 :(得分:1)
在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);
答案 1 :(得分:1)
您看到的是变量内存位置的值。 更改内部for循环的行,如下所示
ans = mult * i;
printf("%d x %d = %d \n", mult, i, ans);
答案 2 :(得分:1)
您的代码中存在一些错误。
你正在使用&amp; print语句中的运算符,用于打印变量的地址。
使用值“1”而不是“0”启动循环。执行循环,直到'i'小于等于'n'。
而不是在循环外使用ans变量,在循环中使用它,因为它在循环的每次迭代中计算乘法结果。
#include <stdio.h>
int main()
{
int i;
int mult;
int n;
int ans;
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 = 1; i<=n; i++) {
ans = mult*i ;
printf("%d x %d = %d \n", mult, i , ans);
}
return 0;
}