當前位置:首頁 » 編程軟體 » c程序編譯成功後運行閃退

c程序編譯成功後運行閃退

發布時間: 2022-05-29 22:39:47

Ⅰ C程序編譯沒問題,但是運行要崩潰

我大概看了下你的源碼,最主要的問題是你沒有對front進行初始化就對其進行了操作,front指向不確定,對其進行操作當然會破壞程序本身。
另外我要說的是,隊列無論是用棧、鏈表、數組等等實現,都有現成的演算法,你參考下就好了。
你的源碼裡面有很多不規范的地方,例如:
1、判斷隊列為空的方法一般都是用front=rear;
2、按你的思路rear->next永遠都應該等於NULL,即隊尾為空,用它判斷隊列是否為空是不對的。
3、
linkshow()函數,判斷隊列到隊尾用q!=NULL也不規范,q是個結構體。
4、linkshow()函數,輸出的應該為q->data。
5、你定義了p,
front,
rear為全局指針變數,函數就不需要帶參數了。
另外,還有不少邏輯錯誤,所以最好參考其他已有演算法(教科書),重新編寫你的程序。如果你想用自己的演算法,就要解決好以下幾個問題:
1、新加隊列元素,需要開辟內存空間
2、注意判斷隊列為空的演算法,不要遺漏當只有一個隊列元素時候的輸出顯示問題(按你的思路,隊列只有一個元素時,其next也為空)

c語言編寫程序後,為什麼執行時自動關閉

出現這種情況與溢出造成的有關 ,可以設置斷點觀察下,在哪裡自動關閉。常見的容易溢出的原因是第一個是數組下標越界,第二個是除數為0當然還有其他的。

常見的原因因為程序沒有設置暫停,運行完了之後,就自動關閉。可以在程序最後加上getchar();或者 system(pause)。實現程序暫停的效果。

pause是cmd中的一個命令,通過system函數調用執行。這樣程序會在執行這個之後結束,換句話說就是按任意鍵退出,而不會直接退出。



(2)c程序編譯成功後運行閃退擴展閱讀


C語言的運算非常靈活,功能十分豐富,運算種類遠多於其它程序設計語言。在表達式方面較其它程序語言更為簡潔,如自加、自減、逗號運算和三目運算使表達式更為簡單;

初學者往往會覺的這種表達式難讀,關鍵原因就是對運算符和運算順序理解不透不全。當多種不同運算組成一個運算表達式,即一個運算式中出現多種運算符時,運算的優先順序和結合規則就會顯得十分重要。

關鍵字又稱為保留字,就是已被C語言本身使用,不能作其它用途使用的字。例如關鍵字不能用作變數名、函數名等標識符。

數據類型關鍵字:

short:修飾int,短整型數據,可省略被修飾的int。(K&R時期引入)

long:修飾int,長整型數據,可省略被修飾的int。(K&R時期引入)

long long:修飾int,超長整型數據,可省略被修飾的int。(C99標准新增)

signed:修飾整型數據,有符號數據類型。(C89標准新增)

unsigned:修飾整型數據,無符號數據類型。(K&R時期引入)

restrict:用於限定和約束指針,並表明指針是訪問一個數據對象的初始且唯一的方式。(C99標准新增)

復雜類型關鍵字:

struct:結構體聲明。(K&R時期引入)

union:聯合體聲明。(K&R時期引入)

enum:枚舉聲明。(C89標准新增)

typedef:聲明類型別名。(K&R時期引入)

sizeof:得到特定類型或特定類型變數的大小。(K&R時期引入)

inline:內聯函數用於取代宏定義,會在任何調用它的地方展開。(C99標准新增)

Ⅲ 新手學C問題:為什麼我的C語言程序老是閃退

在return 0; 前加一條語句 getchar();

Ⅳ c語言程序執行一閃而過怎麼辦

可以在程序結尾使用system("pause");語句阻止窗口消失。

system("pause");的頭文件為#include<stdlib.h>

#include<stdio.h>

#include<stdlib.h>

void to_upper_str( char *str ) //子函數

{

while( *str )

{

if( *str >='a' && *str<='z' )

*str -= 32;

str++;

}

}

int main(){

char str[11] ;

printf("請輸入10個英文字元: ");

scanf("%s",str);

str[10]='' ;

to_upper_str( str );

printf("結果為:%s ",str);

system("pause");

return 0;

}

拓展資料

C語言是一門通用計算機編程語言,廣泛應用於底層開發。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。

盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。

二十世紀八十年代,為了避免各開發廠商用的C語言語法產生差異,由美國國家標准局為C語言制定了一套完整的美國國家標准語法,稱為ANSI C,作為C語言最初的標准。[1]目前2011年12月8日,國際標准化組織(ISO)和國際電工委員會(IEC)發布的C11標準是C語言的第三個官方標准,也是C語言的最新標准,該標准更好的支持了漢字函數名和漢字標識符,一定程度上實現了漢字編程。

C語言是一門面向過程的計算機編程語言,與C++,Java等面向對象的編程語言有所不同。

其編譯器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。

stdlib頭文件即標准庫標准庫頭文件.stdlib.h裡面定義了五種類型,一些宏和通用工具函數。類型例如size_t,wchar_t,div_t,ldiv_t和lldiv_t;宏例如EXIT_FAILURE,EXIT_SUCCESS,RAND_MAX和MB_CUR_MAX等等;常用的函數如malloc(),calloc(),realloc(),free(),system(),atoi(),atol(),rand(),srand(),exit()等等。具體的內容打開可以compile-器的包括目錄裡面的文件stdlib.h頭文件查看。

Ⅳ c語言編程做出程序後閃退是怎麼回事求大神 本人菜鳥!

因為程序已經運行結束正常退出了,
你想看結果就去cmd里敲你的執行文件完整路徑
或者給你的程序加 getchar() scanf() 用stdio的輸入函數來攔截程序不讓它立馬退出
或者調用用stdlib的system函數執行pause命令 實現按任意鍵繼續

Ⅵ C語言編輯出來的轉化成exe後打開會自己閃退是怎麼回事。

閃退是因為程序運行完了之後會自動關閉.,如果你程序中有輸入的部分他會等你輸入完成後直接退出。你在末尾加一個system("pause")就行了。

Ⅶ c語言編譯完的可執行文件運行後為什麼閃退

1、編譯後直接雙擊運行的,非GUI的程序一般不需要等待用戶,運行完了當然自動退出了,執行main()函數末尾返回。如果要是想停一下等待看結果,main()函數末尾加一句system("pause");
2、例如

#include<stdio.h>
intmain()
{
printf("HelloWorld! ");
system("pause");
return0;
}

Ⅷ c語言編程的exe文件為什麼按回車會閃退,求原理解釋。

這些都是依賴於windows的控制台窗口,程序執行完就退出了。

因為程序已經運行結束正常退出了,想看結果就去cmd里敲執行文件完整路徑,或者給程序加getchar() scanf() 用stdio的輸入函數來攔截程序不讓它立馬退出,或者調用用stdlib的system函數執行pause命令實現按任意鍵繼續。

例如:

新建文本名叫c.c的文件,對文件進行編碼,輸入以下程序:

#include <stdio.h>

int main(void)

{

printf ("hellow world");

return 0;

}

三保存退出後,用gcc編譯命令,編譯c.c文件,命令如下

gcc c.c -o c

生成的c文件就是.exe文件

(8)c程序編譯成功後運行閃退擴展閱讀:

C語言包含的各種控制語句僅有9種,關鍵字也只有32 個,程序的編寫要求不嚴格且以小寫字母為主,對許多不必要的部分進行了精簡。實際上,語句構成與硬體有關聯的較少,且C語言本身不提供與硬體相關的輸入輸出、文件管理等功能,如需此類功能,需要通過配合編譯系統所支持的各類庫進行編程,故c語言擁有非常簡潔的編譯系統。

Ⅸ C語言編譯後程序閃退 加入暫停語句成功編譯後也是一樣 求助

你加入暫停語句system("pause");
這個語句一定要手動跳過,所以肯定不會閃退的,除非你程序造成了內存錯誤。
望採納

Ⅹ 求助C語言高手!程序雖然編譯成功,但是輸入數字按下回車就閃退了,沒有輸出預想中的結果請問是咋回事

//調試沒有問題。
#include<stdio.h>
intmain(void)
{
intn,i,j,k;
scanf("%d",&n); //輸入2310
for(i=2;i<n;i++)
{
k=1;
if((n%i)==0)
{
k=0;
for(j=2;j<i;j++)
{
if((i%j)==0)
{
k++;
}
}
}
if(!k)
{
printf("%d ",i); //輸出:2 3 5 7 11
//如果輸入:1234
//輸出為:2 617
}
}
return0;
}

熱點內容
王牌競速如何找到最開始的伺服器 發布:2024-04-28 14:53:09 瀏覽:403
airpod安卓怎麼切換下一曲 發布:2024-04-28 14:23:03 瀏覽:835
百姓網源碼 發布:2024-04-28 14:18:56 瀏覽:893
war包防止反編譯 發布:2024-04-28 14:17:16 瀏覽:328
linuxll命令 發布:2024-04-28 14:16:27 瀏覽:860
阿里雲伺服器增強安全配置取消 發布:2024-04-28 14:16:12 瀏覽:867
war3存儲空間不足 發布:2024-04-28 13:20:54 瀏覽:949
微信密碼已經忘記了如何找回 發布:2024-04-28 11:54:13 瀏覽:306
騰訊雲伺服器可以備案幾個網站 發布:2024-04-28 11:54:12 瀏覽:458
影響編譯速度的因素有哪些 發布:2024-04-28 11:53:58 瀏覽:255