C 正确编译后程序失败

C 正确编译后程序失败,c,command-prompt,C,Command Prompt,我已经用C写了一个简单的循环,这意味着从用户那里打印n^2给定的n。它在输入N后崩溃。我已经删除了循环,当我现在所做的只是使用scanf输入N时,它仍然崩溃。下面是我写的: #include <stdio.h> int main() { int n; int N; printf("Input iterations: "); scanf("%d", N); return 0; } 它编译良好,然后在我输入时运行: "C2 Loops.e

我已经用C写了一个简单的循环,这意味着从用户那里打印n^2给定的n。它在输入N后崩溃。我已经删除了循环,当我现在所做的只是使用scanf输入N时,它仍然崩溃。下面是我写的:

#include <stdio.h>

int main() 
{
    int n;
    int N;

    printf("Input iterations: ");
    scanf("%d", N);

    return 0;
}
它编译良好,然后在我输入时运行:

"C2 Loops.exe"
但一旦我输入N的值,程序就会崩溃:

作为旁注(我通常用C++编程)添加 使用名称空间std; 在编译时抛出错误。这正常吗


非常感谢您对此问题提供的任何帮助。

您应该将变量的地址传递给
scanf()
,而不是变量本身。改变

scanf(“%d”,N)

scanf(“%d”和&N)

否则,
scanf
将尝试将输入值设置为
N
指向的地址。此处未初始化
N
的值,表示程序将在此处访问不可预测的内存地址。这就是你的程序失败的原因

scanf("%d", N);
           ^ missing & 

%d
期望地址为
int

只有这部分代码,程序才能接收参数N和end。因为你对这个参数什么都不做。也许您应该向我们展示如何编写以打印n^2命令。可能是这样的

printf("N^2 = %d", N*N);

不要只提供链接。问题中必须包含所有必要的信息!并阅读
scanf
manpage!您应该始终使用-Wall进行编译,并认真对待警告。您还应该阅读相关手册。谷歌“man scanf”,或者,如果在Cygwin上,只需键入“man scanf”。
printf("N^2 = %d", N*N);