我是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);
}
}
答案 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)
printf
和scanf
采用不同类型的参数:printf
需要显示值,而scanf
需要指针地址接收输入数据。
&numOne
的{{1}}参数会导致程序显示printf
所在的内存地址,而不是变量内的值。您希望打印numOne
而不使用numOne
运算符。
另一方面,&
的{{1}}是正确的。