为什么我在声明一个变量后得到一个不同的数字?

时间:2016-01-31 18:03:52

标签: c

我是C编程的新手,我正在尝试编写一个简单的程序,要求用户重新排列屏幕上显示的数字但我遇到了问题,我会在屏幕上打印出不同的数字我分配给变量的值。为什么我得到一个不同的数字?以下是我遇到的问题和我的代码the image的屏幕截图:

#include <stdio.h>
main()
{
int numOne, numTwo, numThree, ansOne, ansTwo, ansThree;
char name[20];
numOne=34521;

printf("\nWelcome to scrambled numbers Game");
printf("\n Please input your name to get started: ");
scanf("%s", name);
printf("\nRe-arrange this numbers in ascending order %d :", &numOne);
scanf("%d", &ansOne);

if(ansOne==12345)
{
    printf("Congratulations %s you have won the first round", name);
}
else
{
    printf("sorry %s you failed the first round", name);
}

}

2 个答案:

答案 0 :(得分:2)

这种情况正在发生,因为您正在打印变量numOne的地址而不是自己的numOne。

尝试删除&amp; printf中来自numOne的运算符。

替换这个:     printf("\nRe-arrange this numbers in ascending order %d :", &numOne);

由此:     printf("\nRe-arrange this numbers in ascending order %d :", numOne);

答案 1 :(得分:1)

printfscanf采用不同类型的参数:printf需要显示,而scanf需要指针地址接收输入数据。

&numOne的{​​{1}}参数会导致程序显示printf所在的内存地址,而不是变量内的值。您希望打印numOne而不使用numOne运算符。

另一方面,&的{​​{1}}是正确的。