c 問題 程式一編譯就崩潰

2025-02-15 15:20:05 字數 3021 閱讀 9118

1樓:網友

錯誤說明在題目中間,主要是你的陣列下表,應從0開始。若用於測試,取10就足夠啦。

#include

int main()

int n,i,j,b,m;

int a[100];

scanf("%d",&n);

for(i=0;iscanf("%d",a[i]);

for(j=0;jfor(i=0;iif(a[i]m=a[i];

a[i]=a[i+1];

a[i+1]=m;

b=a[0]+a[1];

for(i=2;ib=2*b+a[i];

printf("%d",b);

return 0;

2樓:流風迴雪

把。for(i=1;i<=n;i++)scanf("%d",a[i]);

改成。for(i=1;i<=n;i++)scanf("%d",&a[i]);

樓主大意了,需要傳指標的。

並且陣列從0開始比較好,空間得以充分利用,建議進行進一步修改。

3樓:孤松獨海

改為 int main()

int n,i,j,b,m;

int a[100];

scanf("%d",&n);

for(i=1;i<=n;i++)scanf("%d",a[i]);

for(j=1;j<=n;j++)

for(i=1;iif(a[i]b=a[1]+a[2];

for(i=1;i<=n;i++)

printf("%d",b);

return 0;

雖然改了 但是你的輸入不符合標準。

陣列應該是從0開始的a[0]

c語言程式執行崩潰

4樓:mexico卡卡

這種情況叫做 runtime error (執行時錯誤)。

runtime error (執行時錯誤)就是程式執行到一半,程式就崩潰了。

比如說:除以零。

陣列越界:int a[3]; a[10000000]=10;

指標越界:int * p; p=(int *)malloc(5 * sizeof(int));p+1000000)=10;

使用已經釋放的空間:int * p; p=(int *)malloc(5 * sizeof(int));free(p); p=10;

陣列開得太大,超出了棧的範圍,造成棧溢位:int a[100000000]

c語言程式設計,編譯無錯,執行出錯

5樓:網友

你的程式有3個問題:

1 你所謂的執行時問題,即棧溢位(stack overflow), 解決方法是使用c語言的函式(相當於c++的new操作符)在堆上分配記憶體(當然最後根據輸出檔案的答案來看,你確實資料給大了)

2 邏輯問題,如樓上各樓所說:

s[i]=s[i-1]+a[i];而不是s[i]=s[i-1]+s[i];

你中學數學知識都忘了。。。

3 還是邏輯問題,不改會讓你的檔案始終輸出0 0 0if(s[i]<100&&s[i+1]>=100)b[0]=i;

這種型別的應改為:

if(s[i-1]<100&&s[i]>=100)b[0]=i-1;

這是因為你的邏輯裡,每次剛給s[i]賦值,此時s[i+1]還沒賦值呢,不能使用。

總的改好的如下,我也加了簡單的中文註釋:

#include

#include // malloc和free函式需要這個標頭檔案int b[3];

void writedat();

void jsvalue( )

/釋放malloc 分配的記憶體。

free(a);

free(s);

void main()

void writedat()

6樓:網友

你這裡有幾個問bai題:

1。你的陣列du定得這麼大,zhi

計算機根本dao不可能接受;

2。因為內只是對m值進行比較判斷,所容以不應用for 迴圈而用do while 較好。

試改寫如下:

a[0]=1;

a[1]=1;

n=3;s=2;

do while s<100

然後寫入b 陣列。

再重置a陣列,重做二次,將迴圈判別值改為1000,10000即可。

7樓:匿名使用者

你的第二。

個迴圈中當i=0時s[i-1]為s[-1],所以就會回出錯,幫你改了答一點點。

void jsvalue( )

8樓:網友

第二層迴圈沒有必要吧。

你每次算出乙個a[i],同事就可以算出來s[i]了而且,s[i]=s[i-1]+a[i];而不是s[i]=s[i-1]+s[i];

以上兩點,希望能有參考價值。

c語言程式一執行就崩潰是什麼情況

9樓:天枰非官

這種情況叫做 runtime error (執行時錯誤)。

runtime error (執行時錯誤)就是程式執行到一半,程式就崩潰了。

比如說:除以零。

陣列越界:int a[3]; a[10000000]=10;

指標越界:int * p; p=(int *)malloc(5 * sizeof(int));p+1000000)=10;

使用已經釋放的空間:int * p; p=(int *)malloc(5 * sizeof(int));free(p); p=10;

陣列開得太大,超出了棧的範圍,造成棧溢位:int a[100000000]

10樓:網友

有非法的記憶體訪問,一般是空指標、野指標問題。

11樓:聽不清啊

這是因為程式寫錯了。比如int a; scanf("%d",a);

C程式編譯

include stdio.h void list int n int i,j for i 1 i n i for j 1 j i j printf d d 4d j,i,i j printf n void main list 9 include void main int i,j,k i與j相乘,...

c 程式編譯錯誤 菜鳥求解,C 程式編譯錯誤 菜鳥求解

凌晨 純手打 很辛苦的。望採納 編譯成功和你要求輸出的格式是一樣的 不明白的訊息我 輸入方法 其實本程式任意輸入16個字元都不會出錯,這樣輸出是為了迎合你的輸入格式要求 a 空格 空格 空格 回車 cmsd 回車 lmx 空格 回車 end 空格 回車 ps 保留了你寫的char bijiao ch...

linux下編譯c 程式報錯no such file or directory是什麼原因

你在編譯的時候沒有加上必須的編譯選項吧?你再仔細檢查一下,比如說 用到數學的庫函式時,在命令列編譯中必須加上 lm 才行。沒有這個檔案或目錄的,所以不能操作 linux下編譯出現這個bash configure no such file or directory 怎麼解決 1 開始以為是sh路徑問題...