我在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),但它没有用。
答案 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;
}