【发布时间】:2016-12-30 18:02:43
【问题描述】:
当我分配给整数“数字”的第一个值被分配给 R 数组时,我的程序崩溃了。它可能与我创建的指针有关,我似乎无法找到问题所在。如果我省略这部分代码:
else{
while (k<=n/2){
temp2=R[k];
R[l-1]=temp2;
R[k]=R[l-1];}
l-=1;
k+=1;
}
,程序运行良好,即使它给出不同的输出。下面是代码:
#include <stdio.h>
main(){
int i,n,number,temp,j,k=0,l,temp2;
int *R;
R=(int *)malloc(n*sizeof(int));
printf("Dwse mou to megethos tou pinaka se parakalw poly:\n");
scanf("%d", &n);
for(i=0; i<n; i++){
printf("Dwse enan thetiko akeraio arithmo:\n");
scanf("%d", &number);
R[i]=number;
}
for(i=1;i<n;i++){
temp=R[i];
j=i-1;
while((temp>R[j])&&(j>=0)){
R[j+1]=R[j];
j=j-1;
}
R[j+1]=temp;
}
l=n;
if (n%2==0)
printf("Einai adynato na ginei h taksinomhsh:\n");
else{
while (k<=n/2){
temp2=R[k];
R[l-1]=temp2;
R[k]=R[l-1];}
l-=1;
k+=1;
}
for(i=0; i<n; i++){
printf("R[%d]: %d\n", i, R[i]);
}
}
谢谢。
【问题讨论】:
-
R=(int *)malloc(n*sizeof(int));移动到scanf("%d", &n);之后。 -
您正在使用未初始化的变量
n分配数组R -
好吧,非常感谢,请原谅我因为我的笨拙而提出这样的问题。
-
else-block 也是错误的。
-
哪里不对?
标签: c segmentation-fault