c - C编程中的"Program received signal SIGSEGV, Segmentation fault"

标签 c

#include<conio.h>
#include<stdio.h>
#include<stdlib.h>

int main(void)
{
  int n ,k, i, j, l;
  double c, s, p, q;
  printf("Sa se dea valoarea n pentru combinari: ");
  if(scanf("%d",n)!=1)
  {
    printf("Date eronate");
    exit(1);
  }

  printf("Sa se introduca k pentru a face numarul de combinari: ");
  if(scanf("%d",k)!=1||k>n)
  {
    printf("Date eronate");
    exit(1);
  }

  s=1;
  p=1;
  q=1;

  for(i=1;i<=n;i++)
    s*=i;

  for(j=1;j<=k;j++)
    p*=j;

  for(l=1;l<=(n-k);l++)
    q*=n-k;
  c=s/(p*q);
  printf("%g",c);

  getch();

  return 0;
}

这是我的程序,这个程序必须计算从 n 到 k 的组合,并给我这个错误。我能做什么?

最佳答案

if(scanf("%d",n)!=1)

应该是

if(scanf("%d",&n)!=1)
//            ^

这同样适用于后面设置k的代码。

您需要传递您希望 scanf 写入的任何变量的地址。

正如 PaulR 所指出的,如果您启用警告(-Wall 用于 gcc,/W4 用于 MSVC),您的编译器可能会警告您此类错误。为您的程序执行此操作会报告

warning: format '%d' expects argument of type 'int *', but argument 2 has type 'int' [-Wformat]

...这会帮助您自己诊断问题。

关于c - C编程中的"Program received signal SIGSEGV, Segmentation fault",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21387059/

相关文章:

c - c 中的动态类型

c - 我无法弄清楚 strcpy

c - 错误: 'answer' undeclared (first use in this function)

Python 解释器将异步操作的控制权交还给 C 调用者

c - 运行时间或新想法

c - shm_open() 导致 No such file or directory

c - 为无符号整数赋值*

c++ - 写入视频文件并同时播放

命令行参数或读取文件

c - scanf 的 "regex"支持标准吗?