我尝试编译时,CodeBlocks中的代码停止工作

时间:2014-09-12 20:57:34

标签: c codeblocks

我在CodeBlocks中创建了一个看起来非常好的代码,但是当我编译它时,会发生以下情况(在链接中的图像中): http://postimg.org/gallery/imbtu6ns/ 这是代码:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(){
int x,num[x],n,small,big;
    printf("Type how many numbers you will use: ");
    scanf("%d",&n);
    for (x=0;x<n;x++){
        printf("Type a number: ");
        scanf("%d",&num[x]);
    }
    big=num[0];
    small=num[0];
    for (x=0;x<n;x++){
        if (num[x]<small){
            menor=num[x];
        }
        if (num[x]>big){
            maior=num[x];
        }
    }
    printf("Maior: %d\n",big);
    printf("Menor: %d\n",small);
    system("pause");
    return 0;
}

它是一个代码,用于从用户读取n个数字,然后打印较小和较大的数字。 我认为代码中没有问题。这个错误是什么?我试着写下这里写的是什么:Windows popup: X.exe has stopped working (Code::Blocks),但它没有用。

1 个答案:

答案 0 :(得分:1)

在声明数组或使用内存分配技术时使用固定数字。

更改此行:

int x,num[x],n,small,big;

int x,num[10],n,small,big;

这是具有内存分配技术的代码。我想你正在尝试做那样的事情。

代码:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(){
int x,*num,n,small,big;
    printf("Type how many numbers you will use: ");
    scanf("%d",&n);
    num = (int*)malloc(n*sizeof(int));
    for (x=0;x<n;x++){
        printf("Type a number: ");
        scanf("%d",num+x);
    }
    big=*(num+0);
    small=*(num+0);
    for (x=0;x<n;x++){
        if (*(num+x)<small){
            small=*(num+x);
        }
        if (*(num+x)>big){
            big=*(num+x);
        }
    }
    free(num);
    printf("Maior: %d\n",big);
    printf("Menor: %d\n",small);
    return 0;
}