[問題] 有關於動態記憶體配置
各位前輩好,小弟想寫一支程式是由user決定array大小和裡面的元素,並進行排列
程式碼如下
#include<stdio.h>
#include<stdlib.h>
int size=0;
int *num,*ans;
int aa=0;
int ii=0;
int jj=0;
int i=0;
int j=0;
int cond=1;
int flag=0;
int n=0;
void cre_num(void){
printf("請輸入矩陣大小\n");
scanf("%d",&size);
num=(int*)malloc(size*sizeof(int));
printf("請輸入矩陣原素\n");
while(1){
scanf("%d",&num[ii]);
printf("\n");
ii++;
if(ii==size) break;
}
}
void change(k){
flag++;
aa=num[k-1];
num[k-1]=num[k];
num[k]=aa;
}
void sort(int len){
for(i=1;i<=len;i++){
if (num[i]<num[i-1]) {
change(i);
for(j=(i-1);j>=0;j--){
if(num[j]<num[j-1]) change(j);
if(num[j-1]>num[j-2]) break;
}
}
}
}
void print_ans(int len){
for(i=0;i<=(len-1);i++){
printf("%3d",ans[i]);
}
}
void print_num(int len){
for(i=0;i<=(len-1);i++){
printf("%3d",num[i]);
}
}
int main(){
cre_num();
ans=(int*)realloc(num,size*sizeof(int));
sort(size);
printf("series is\n");
print_num(size);
printf("\n");
printf("answer is\n");
print_ans(size);
printf("\n");
printf("資料交換%d次\n",flag);
system("pause");
return 0;
}
小弟的問題是,如果我用宣告來決定陣列num的情況下是可以成功排序的,
另外cre_num這含數產生出來的陣列的內容也都是對的,可是把他們合在一起後
程式執行的結果都是錯的,原本我debug的方向是我printf_ans和printf_num錯了...但是
簡查很久也真的不知道錯在哪,我想應該是我有觀念錯了...還請各位前輩指點...謝謝...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.218.117.45
推
10/02 11:28, , 1F
10/02 11:28, 1F
→
10/02 11:30, , 2F
10/02 11:30, 2F
→
10/02 11:41, , 3F
10/02 11:41, 3F
→
10/02 11:43, , 4F
10/02 11:43, 4F
→
10/02 11:44, , 5F
10/02 11:44, 5F
→
10/02 11:45, , 6F
10/02 11:45, 6F
→
10/02 11:45, , 7F
10/02 11:45, 7F
→
10/02 11:46, , 8F
10/02 11:46, 8F
→
10/02 11:46, , 9F
10/02 11:46, 9F
推
10/02 11:46, , 10F
10/02 11:46, 10F
→
10/02 11:50, , 11F
10/02 11:50, 11F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 3 篇):
2
11
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章