① c語言程序運行過程
運行程序的時候主程序三次調用fun函數。第一次調用是一寫方式打開在文件中寫入鼓勵的以後關閉文件。第二次再次以w的方式打開文件。打開的同時就把第一次寫入的文件內容全部覆蓋掉了,然後洗肉hello再關閉文件。第三次調用fun函數是以添加方式打開。所以原文件中原來的內容依舊保留在文件的末尾,追加內容world感嘆號。
所以最後文件中的內容是hello world!
② C語言程序運行過程
C源程序頭文件-->預編譯處理(cpp)-->編譯程序本身-->優化程序-->匯編程序-->鏈接程序–>可執行文件
1.編譯預處理
讀取c源程序,對其中的偽指令(以#開頭的指令)和特殊符號進行處理
[析] 偽指令主要包括以下四個方面
(1)宏定義指令,如#define Name TokenString,#undef等。對於前一個偽指令,預編譯所要做的是將程序中的所有Name用TokenString替換,但作為字元串常量的Name則不被替換。對於後者,則將取消對某個宏的定義,使以後該串的出現不再被替換。
(2)條件編譯指令,如#ifdef,#ifndef,#else,#elif,#endif,等等。這些偽指令的引入使得程序員可以通過定義不同的宏來決定編譯程序對哪些代碼進行處理。預編譯程序將根據有關的文件,將那些不必要的代碼過濾掉
(3)頭文件包含指令,如#include 「FileName」或者#include 等。在頭文件中一般用偽指令#define定義了大量的宏(最常見的是字元常量),同時包含有各種外部符號的聲明。採用頭文件的目的主要是為了使某些定義可以供多個不同的C源程序使用。因為在需要用到這些定義的C源程序中,只需加上一條#include語句即可,而不必再在此文件中將這些定義重復一遍。預編譯程序將把頭文件中的定義統統都加入到它所產生的輸出文件中,以供編譯程序對之進行處理。
包含到c源程序中的頭文件可以是系統提供的,這些頭文件一般被放在/usr/include目錄下。在程序中#include它們要使用尖括弧(>)。另外開發人員也可以定義自己的頭文件,這些文件一般與c源程序放在同一目錄下,此時在#include中要用雙引號(」")。
(4)特殊符號,預編譯程序可以識別一些特殊的符號。例如在源程序中出現的LINE標識將被解釋為當前行號(十進制數),FILE則被解釋為當前被編譯的C源程序的名稱。預編譯程序對於在源程序中出現的這些串將用合適的值進行替換。
③ 怎樣用c語言程序看一個程序的執行步驟
c語言中的頭文件time.h中定義了庫函數clock(),它返回的是從程序運行開始算起的時間,一時鍾周期為單位,time.h還定義了符號:clocks_per_sec,即一秒鍾的時鍾周期。這樣就簡單了,在頭文件中加入#include<time.h>,在程序main()主函數的開頭定義longnow=0;並給把clock()賦值給now,即now=clock();記錄程序開始時的時間,clock()會繼續增加,但now已經確定為開始那一時刻clock()的值,在程序結尾,算式clock()-now就是程序執行所需的時間,但是是以時鍾周期為單位的,如果想得到以秒為單位的時間只要輸出(clock()-now)/clocks_per_sec就是了,即在程序結尾添加
printf("%lf",(clock()-now)/clocks_per_sec);就可以了。
④ C語言源程序到運行程序經過哪幾個步驟
1、預處理
在這一階段,源碼中的所有預處理語句得到處理,例如:#include語句所包含的文件內容替換掉語句本身,所有已定義的宏被展開。
根據#ifdef,#if等語句的條件是否成立取捨相應的部分,預處理之後源碼中不再包含任何預處理語句。
GCC預處理階段可以生成.i的文件,通過選項-E可以使編譯器在預處理結束時就停止編譯。例如:gcc -E -o hello.i hello.c
2、編譯
這一階段,編譯器對源碼進行詞法分析、語法分析、優化等操作,最後生成匯編代碼。這是整個過程中最重要的一步,因此也常把整個過程稱為編譯。
可以通過選項-S使GCC在進行完編譯後停止,生成.s的匯編程序。例如:gcc -S -o hello.s hello.c
3、匯編
這一階段使用匯編器對匯編代碼進行處理,生成機器語言代碼,保存在後綴為.o的目標文件中。
當程序由多個代碼文件構成時,每個文件都要先完成匯編工作,生成.o目標文件後,才能進入下一步的鏈接工作。
目標文件已經是最終程序的某一部分了,只是在鏈接之前還不能執行。可以通過-c選項生成目標文件:gcc -c -o hello.o hello.c
4、鏈接
經過匯編以後的機器代碼還不能直接運行。為了使操作系統能夠正確載入可執行文件,文件中必須包含固定格式的信息頭,還必須與系統提供的啟動代碼鏈接起來才能正常運行,這些工作都是由鏈接器來完成的。gcc -o hello hello.c
5、運行:執行.EXE文件,得到運行結果。
⑤ [C語言] 運行C程序的步驟
(1)上機輸入和編輯源程序。通過鍵盤向計算機輸入程序,如發現有錯誤,要及時改正。最後將此源程序以文件形式存放在自己指定的文件夾內(如果不特別指定,一般存放在用戶當前目錄下),文件用.c作為後綴,生成源程序文件,如f.c。
(2)對源程序進行編譯,先用C編譯系統提供的「預處理器」(又稱「預處理程序」或「預編譯器」)對程序中的預處理指令進行編譯預處理。例如,對於#include<stdio.h>指令來說,就是將stdio.h頭文件的內容讀進來,取代#include<stdio.h>行。由預處理得到的信息與程序其他部分一起組成一個完整的、可以用來進行正式編譯的源程序,然後由編譯系統對該源程序進行編譯。
編譯的作用首先是對源程序進行檢查,判定它有無語法方面的錯誤,如有,則發出「出錯信息」,告訴編程人員認真檢查改正。修改程序後重新進行編譯,如果還有錯,再發出「出錯信息」。如此反復進行,直到沒有語法錯誤為止。這時,編譯程序自動把源程序轉換為二進制形式的目標程序(在Visual C++中後綴為.obj,如f.obj)。如果不特別指定,此目標程序一般也存放在用戶當前目錄下,此時源文件沒有消失。
在用編譯系統對源程序進行編譯時,自動包括了預編譯和正式編譯兩個階段,一氣呵成。用戶不必分別發出二次指令。
(3)進行連接處理。經過編譯所得到的二進制目標文件(後綴為.obj)還不能供計算機直接執行。前面已說明:一個程序可能包含若干個源程序文件,而編譯是以源程序文件為對象的,一次編譯只能得到與一個源程序文件相對應的目標文件(也稱目標模塊),它只是整個程序的一部分。必須把所有的編譯後得到的目標模塊連接裝配起來,再與函數庫相連接成一個整體,生成一個可供計算機執行的目標程序,稱為可執行程序(executive program),在Visual C++中其後綴為.exe,如f.exe。
即使一個程序只包含一個源程序文件,編譯後得到的目標程序也不能直接運行,也要經過連接階段,因為要與函數庫進行連接,才能生成可執行程序。
以上連接的工作是由一個稱為「連接編輯程序」(linkage editor)的軟體來實現的。
(4)運行可執行程序,得到運行結果。
以上過程如圖1.2所示。其中實線表示操作流程,虛線表示文件的輸入輸出。例如,編輯後得到一個源程序文件f.c,然後在進行編譯時再將源程序文件f.c輸入,經過編譯源程序,找出問題,修改源程序,並重新編譯,直到無錯為止。有時編譯過程未發現錯誤,能生成可執行程序,但是運行的結果不正確。一般情況下,這不是語法方面的錯誤,而可能是程序邏輯方面的錯誤,例如計算公式不正確、賦值不正確等,應當返回檢查源程序,並改正錯誤。
為了編譯、連接和運行C程序,必須要有相應的編譯系統。目前使用的很多C編譯系統都是集成開發環境(IDE)的,把程序的編輯、編譯、連接和運行等操作全部集中在一個界面上進行,功能豐富,使用方便,直觀易用。
⑥ 怎麼查看c語言程序運行過程
用單步執行,VC下面是
按鍵F10
就是鍵盤上面最上面一行的F數字按鍵·~~~~
進行一步一步的執行,下面的窗口可以設定跟蹤變數
在TC裡面則是
F7、F8進行單步執行(其中一個是跳過被調用函數,好像是F8)
按鍵Ctrl+F7組合可以加入跟蹤變數的結果顯示~~~~
其他編譯器一般沒有支持調試的,再次就不說了·~~~~
⑦ C語言程序運行過程
第一題答案:
60.5
70.5
運行過程:首先struct xscj xs[]={{1,60,61},{2,70,71}};這條語句是對結構體數組xs賦初值,{1,60,61}分別賦值給xs[0].n=1, xs[0].cj1=60, xs[0].cj2=61;xs[0].cj3未賦值。同理,{2,70,71}分別賦值:xs[1].n=2, xs[1].cj1=70, xs[1].cj2=71;xs[1].cj3未賦值.
其次,
for(i=0;i<2;i++){
xs[i].cj3=(xs[i].cj1+xs[i].cj2)/2;
printf("%5.1f ",xs[i].cj3);
}
這條語句是分別對xs[1],xs[2]的cj3欄位賦值,賦值為(cj1+cj2)/2的值。輸出語句 printf("%5.1f ",xs[i].cj3);限定了輸出寬度和小數點位數,故輸出60.5 和 70.5.
2.第二題填空:st.name @st.age
首先明白scanf的格式:
scanf("格式化字元串",變數地址表);
「變數地址表」是接受輸入數據的變數的地址。第一個輸入格式是%s,接收字元串,字元串名字即為首地址,所以直接st.name就可以了;第二個格式是%d,接收整型數據,所以必須取地址,使用取地址符號&,所以第二空答案就是&st.age.
⑧ Visual C++ 2010 在寫好的C程序後,如何一步一步查看程序的運行
我用的vs2012,不過原理都是一樣的,打開你的程序,在上方菜單里,有調試選項,下拉選擇里有逐語句調試(快捷鍵f11),點擊逐語句調試,就開始了調試,你應該能看到程序開頭有個箭頭指向第一條語句。下一步,工具欄里有三個箭頭狀的命令,第一個是逐語句,第二個是逐過程,第三個是跳出,你點擊逐過程的箭頭,程序就會一步一步運行了,遇到函數想進一步查看,就點擊逐語句(轉入),希望能幫到你,謝謝
⑨ C語言程序運行過程
C源程序到運行程序步驟:
1.編輯:輸入源程序並存檔(.C)
2.編譯:將源程序翻譯為目標文件(.OBJ)
3.鏈接:將目標文件生成可執行文件(
.EXE)
4.運行:執行.EXE文件,得到運行結果
⑩ 當編好一個C語言時,怎麼看到其運行效果
VC 6.0這是目前血C用的比較多的
運行VC6.0—>文件—>新建—>文件—>C++ Source File—>填寫路徑和文件名—>確定—>編輯代碼—>編譯—>連接—>運行
之後就可以看到程序運行過程了,編譯,連接,運行這三個命令有快捷鍵的
在右邊望遠鏡圖標右下方有三個圖標,滑鼠放上去有提示的,從左到右一次是編譯,連接,運行