請問下面這段代碼為什么會出現問題#include<stdio.h>#include<malloc.h>#include<conio.h>#include<string.h>#define LIST_INIT_SIZE 100 // 順序表存儲空間的初分配量#define LISTINCREMENT 10 // 順序表存儲空間的分配增量typedef struct //線性表的結構{ int *elem; //存儲空間的基地址 int length; //當前的長度 int listsize; //當前分配的容量}SQLIST;void Create(SQLIST &L) //建立線性表{ L.elem =(int*)malloc(LIST_INIT_SIZE* sizeof(int)); if(!L.elem) printf("為線性表分配空間失敗!"); L.length =0; stsize =LIST_INIT_SIZE;} void Insert(SQLIST &A,int x) //實現有序的插入操作{ if(A.length == stsize) printf("線性表錯誤!"); if(x > A.elem[A.length-1]) A.elem[A.length]=x; //與最大的元素進行判斷,以決定是否插在最后 else { int i=0; while(x >= A.elem[i]) i++; //從第一個元素起,尋找正確的插入位置 for(int j=A.length; j>=i; j--) A.elem[j+1]=A.elem[j]; //將所找位置后面的所有數據都向右移動一個位置 A.elem[i]=x; //插入新的數據 } A.length++; //順序表的長度加1}void main(){ printf("程序說明:\n"); printf(" 建立順序存儲的單鏈表,其數據元素按元素值非遞減有序排列,插入一個數據元素后,該線性表仍保持有序\n\n"); SQLIST s; Create(s); //為線性表分配空間 s.elem[0]=1; //建表 s.elem[1]=3; s.elem[2]=5; s.elem[3]=7; s.elem[4]=9; s.length=5; printf("\n\n已建立的順序表為:\n"); for(int i=0; i<s.length; i++) printf("%d ",s.elem[i]); printf("\n\n請輸入要插入的數據:\n "); int tmp; scanf("%d",&tmp); Insert(s,tmp); printf("\n\n插入數據后的順序表為:\n"); for(i=0; i<s.length; i++) printf("%d ",s.elem[i]); _getch(); //如果不加如該句,則執行用Visual C++編譯后的exe文件,控制臺窗口會一閃而過,看不請執行結果:)}
熱心網友
沒有問題啊,執行結果如下圖:另外,你說的“執行用Visual C++編譯后的exe文件”是不是指鼠標雙擊該exe文件?就算不加那句,結果也是正確的。要讓結果一直在屏幕上出現,可以在開始菜單中點“運行”,輸入cmd,回車,出現cmd界面后將路徑調整到欲執行的.exe所在的位置,然后輸入.exe的文件名,回車執行。也可以在回到根目錄后直接鍵入.exe的路徑及其文件名,例如yy.exe在D盤,則出現cmd界面后輸入cd\,切到C盤根目錄;然后鍵入D:\yy,回車即可執行。如果cmd執行時不能顯示中文,就改用附件里的“命令提示符”試試,具體操作與cmd相同。