導航:首頁 > 源碼編譯 > 上機編譯難能通過嗎

上機編譯難能通過嗎

發布時間:2022-09-18 03:29:33

Ⅰ 計算機二級C語言中上機題可以在考試時編譯還有運行嗎

不會,可以調試,直到你確認正確

Ⅱ 程序無法編譯通過問題,怎麼解決

關於程序無法通過編譯的問題,其錯誤類型肯定是有很多種的。根據我多年的編程調試經驗,可以給你提供以下幾種類型的錯誤,供你參考(以下以 C 語言編程經驗為例,其他編程語言的調試思路也是同理的)。
其中最容易調試的程序錯誤類型就是:
(1)、在編寫源程序過程中出現的各種語法錯誤。這種錯誤主要是由於剛剛開始學習編程,對編程語言的語句、以及語法結構還不是很清晰造成的,這種錯誤是最容易進行調試的,因為語法錯誤,編譯器連編譯都無法通過(通常會顯示出來具體是哪一行出現錯誤),這樣的話,你就可以直接到出錯的那一行進行修改源代碼了;

(2)、若是經過一段時間的上機練習,對學習編程的初始階段已經較為熟練了、且語法錯誤較少了之後,之後就會遇到更加復雜、並且難於調試的語義錯誤。例如在 C 語言中,對於如下代碼:

void main( )
{
int n ;
scanf("%d", &n) ;
if( n == 100 )
printf(" n is 100 !\n") ;
else
printf(" n is not 100 !\n") ;
}
但是若在邏輯判斷語句:if( n == 100) 中,如果誤將「==」(邏輯等於)寫成了「=」(賦值等於),那麼在 scanf("%d", &n) 語句中,無論你輸入的 n 等於多少,一旦執行 if 語句,那麼 將 100 這個數字賦給變數 n,則該邏輯表達式的值總是 1,程序的運行結果必定總是輸出:n is 100。
而該程序的實際思路是:從鍵盤輸入一個整數,如果該整數等於 100,則輸出:n is 100 !如果輸入的整數不等於 100 的話,則輸出:n is not 100 !
像這樣的邏輯錯誤(在對 C 語言源程序進行編譯時,C 語言編譯器是檢查不出來的),如果沒有豐富的程序調試經驗,程序調試起來就是非常困難的。
(3)、其它的錯誤類型例如:數組越界、非法使用了未初始化的指針變數、未對指針變數進行有效的內存分配,就向那一塊存儲區域讀寫數據,等等。這些都會造成程序崩潰,嚴重的就會造成操作系統崩潰。

Ⅲ 計算機三級網路技術上機編譯有錯是不是一定不及格

只要你運行結果不是題里要求的,就是不及格,運行成功就是優秀,所以上機考試只有優秀、不及格兩種

Ⅳ 計算機二級c語言上機三道題都編譯運行出結果,而且結果都正確了為什麼還沒過

全國計算機等級考試二級c的程序題共有三道,分別是填空、改錯、編程,分值方面填空佔18分,改錯18分,編程24分,總分60分。而卷面總分(選擇+程序)60分以上,才會判定成績就合格,才能夠領到證書。

各題詳細答題方式和評分准則如下:

1、填空題:
答題方式:
在指定位置,也就是標記有類似
/********************found*************************/
for(i=0; ____1____ ; i++)
這種位置作答。
答題時,將「____1____」雙引號內的部分完全刪除,然後把作答的答案填補進去,也就是「將類似__1__這種位置標記替換為作答的答案」。

題面會給出「例如輸入***數據,得到***數據」的註解,可以藉此編譯運行程序,通過輸入和輸出的結果來判定程序是否正確。

評分准則:
填空題的評分准則並非以程序本身「能否正確運行」為准則,而是通過類似」對比答題的程序文本與命題組答案,逐行按比例給分「的方式來評分,也就是很多人所謂的「逐項(或逐個答題位置給分)「。

上述描述信息量過大,下面舉例說明:
①題面有明文要求,只允許在指定位置作答,不許添加或刪除空格、回車之類的字元,不許增減程序代碼行數,更不許改動題面的程序原始代碼。

例如:
題面如下:
int i,j,sum=0;
/**************found********************/
for(i=0; __1__ ;i++) //假設答案應為i<10或其他等價寫法
sum+=i;

答題後排版如下:
int i,j,sum=0;
/**************found********************/
for(i=0; i<10 ;i++) sum+=i; //注意這里刪除了一個回車符

卷面要求對應行數(第3行)應為
for(i=0; i<10 ;i++)
評分時判定該行內容為
for(i=0; i<10 ;i++) sum+=i;
文本與命題組答案不符,故該處答案不予給分。
同時,由於更改了行數,後續程序文本均會受影響,從而影響正常得分。

②關於上文中所謂的「命題組答案」
仍以
int i,j,sum=0;
/**************found********************/
for(i=0; __1__ ;i++) //假設答案應為i<10或其他等價寫法
sum+=i;
為例。

正確答案應該是i<10或其他等價寫法,那麼命題組會將各種「正常的」寫法作為命題組答案編撰以供評分。依舊舉例說明,等價寫法包括:
i<=9
i<9+1
i<=10-1
後續有無數種寫法就不一一例舉了
明顯只有i<10和<=9是正常寫法,後續寫法都過於奇葩,故此處在考試時只有寫入i<10或<=9才會得到正常的分數,其他寫法均不給分。

另外,這里無需擔心,命題組很貼心的將各種常見寫法都納入到」命題組答案「中,只要不是過於特立獨行的答案,均會在考試中得到本該有的分數。

總結:
填空題,在程序能夠「運行出正確的答案」,並且沒有違反①和②所強調的事項,均會得到本該有的分數。
①項通常不會違反,被此項影響得分的人數很少
②項不管是考試還是練習,在」能夠運行處正確的答案「前提下依舊丟分的幾乎全都是因為此項。
例如考試時,答案過於特立獨行,將i=i+1;寫成i=i+3-2;
而市面上絕大多數的等考模擬軟體,鑒於各種原因,都沒有使用」命題組答案「給出的姑且稱為」正確答案庫「的答案范圍,而是每個位置只給出一種在該模擬軟體中可以得分的答案寫法,其他」考試時將會正常得分「的答案寫法,造成考試時能夠得分但是在使用這些模擬軟體時均得不到分數的情況,也就是學生們經常詢問的問題:
」老師,i=i+1;和i+=1;不是一樣嗎?為什麼這道題寫i=i+1;才給分,另一道題只有寫i+=1;才給分?「

2、改錯題:
答題方式和評分准則完全等同與填空題,不再重復敘述

3、程序編寫,即俗稱的編程題:
答題方式:
題目中有明確敘述,要求書寫程序的某一部分,以實現題目要求的功能。通常要求書寫的位置是某個指定函數的函數體,或者部分主函數的函數體,代碼量6-10行左右。

評分准則:
編程題,評分依據是」能夠運行出正確的結果「,即評分依據有兩個關鍵點,一是運行,二是結果正確。
此題評分准則依舊是跟」命題組答案「對照,依舊是對比文本後逐行按比例給分,而命題組答案在此題中將會是唯一的。
編程題的評分依據,是程序編譯運行後得到的一個所謂的」out文件「,該文件在考生文件夾下,由編程運行時產生,文件名中通常帶有」out」字樣,各題具體的文件名,查看編程題中調用fopen函數時所書寫的文件名就可以確認。
例如某題面中存在如下語句:
fopen(fp,"out.dat",w);
那麼該題目對應的評分依據就是對應考生文件夾下的名為「out.dat」的文件。

編程題的評分,是將out文件的內容與命題組答案對比,逐行按比例給分。

影響得分的項目如下:
①程序存在error,無法通過編譯:
無法編譯,就無法運行。沒有運行,就不會產生out文件。沒有out文件,那麼將會得到「指定文件未找到」的錯誤,此題判0分。
另外還有一點要注意,有個別模擬軟體曾經出現過,題目中指定文件名為"out.dat",但是題面程序代碼中創建的卻是"ps35.out",造成「指定文件未找到」判0分的情況。這屬於模擬軟體的bug,不會在考試中發生。

②程序通過編譯且能夠運行,但是代碼本身存在bug。
舉個例子,寫程序找出1-15之間的素數。
命題組給出的out文件內容如下:
2
3
5
7
11
13
一共6行,因為編程題總分24分,所以每行佔4分。
如果考生答題過程中程序書寫沒有錯誤的話,一定會得到跟命題組內容與格式完全一樣的答案(文件的書寫由題面的fprintf函數負責,不允許考生改動,故文件格式是已經被指定的),將會得到滿分24分。
如果代碼有誤,程序判定過程中將7判定為非素數,得到的out文件內容與命題組答案對比及評分細則如下:
2 2 匹配,得4分
3 3 匹配,得4分
5 5 匹配,得4分
7 11 不匹配,得0分
11 13 不匹配,得0分
13 不匹配,得0分
故此題得分僅12分。
如果上述數值均正確判斷,但是錯誤的將1判斷為素數,out文件內容如下:
1
2
3
5
7
11
13
結果可想而知,逐行判定,最終肯定判0分。
額外要說明的是,大部分模擬軟體,不會進行逐行按比例給分,而是一旦out文件內容與命題組答案」不完全匹配「,直接判0分,而考試時一定是逐行按比例給分的,這點無需擔心。

③程序書寫正確無bug,但是改動過程序命令禁止改動的其他部分,例如fprintf函數,請參考②

總結:由於②導致該題丟分的幾率是最高的,一定要小心再小心。代碼出現問題時,別心急。很多時候,將已經書寫完畢的代碼整體刪掉,重新書寫,是最省事省力的解決bug的方案。

最後,補充一點,萬一程序原始結構被破壞,別著急,不要冒險關閉vc6,只要按下ctrl+z組合鍵,就能逐步恢復之前的樣式。因為ctrl+z組合鍵的功能是」撤銷「

Ⅳ 急急急!!!!!考全國計算機二級C語言上機時,可以進行編譯執行嗎

1、在考上機考試時,能不能對已經修改好或已經填好空或是已經編好的程序進行編譯和執行操作?這樣做會不會被扣分?
這是當然的,你必須自己手動完成每個問題。
2、下面這些語句是用來做什麼的?
這是一個void型的函數,用於打開文件,輸入數據,調用函數,輸出數據,關閉文件。
FILE
*rf,
*wf
;
這是證明文件指針。
3、如果編譯沒有錯誤,但是執行時出現錯誤,會不會得分?
沒有語法、邏輯錯誤才不扣分。
孩子,你還沒明白編譯器,那個東西不可靠,OBJ必須連接才能運行(即沒有語法錯誤),編譯、廉潔都是語法的部分,你一定是有語法錯誤,才導致這個現象。一定的,你把代碼發給我,我幫你看看。考試一定扣分。
4、各位建議在clrscr()函數
加上
include,但是考試說明了:只在指定的范圍更改或填空或編程,但clrscr()函數不在指定的范圍,這樣做行嗎?
不行,也很少見到這個情況,反正我幾乎沒見過添clrscr()的。

Ⅵ 在學譚浩強C++時做上機實驗,以下代碼編譯不能通過,該代碼是測試使用函數模板。求解。

正確代碼如下,(錯誤原因主要是符號錯用)
#include <iostream>
using namespace std;
template <class T>
T max(T a,T b,T c)
{
if(b>a) a=b;
if(c>a) a=c;
return a;
}
int main()
{
int i1=8,i2=5,i3=6,i;
double d1=51.26,d2=31.48,d3=77.8654,d;
long g1=68733,g2=-23422,g3=223245,g;
i=max(i1,i2,i3);
d=max(d1,d2,d3);
g=max(g1,g2,g3);
cout <<"i_max="<<i<<endl;
cout <<"d_max="<<d<<endl;
cout <<"g_max="<<g<<endl;
return 0;
}

Ⅶ C語言編譯不能通過

此c程序是正確, 但是c++不支持int days[MONTHS]={31,30,[4]=31,30,31,[1]=29};這種語法。

你需要把 2.cpp改名為2.c

Ⅷ 全國計算機二級c語言上機考試期間能用編譯器運行已經修改好的程序嗎

這個可以啊 不過你好看好程序題目的細節 還有隻有最後一題可以這樣 ,其他的題目是填空和修改 是不能的,還有一般機考把商機一百道題那過去就可以過了! 做為一個二級過了的人給你的建議!希望你考試一切順利哦!

閱讀全文

與上機編譯難能通過嗎相關的資料

熱點內容
web應用安全pdf 瀏覽:47
linuxintel網卡驅動下載 瀏覽:217
資源解壓後怎麼刪除 瀏覽:868
編程之美15種演算法 瀏覽:147
java的圖形用戶界面設計 瀏覽:769
算數游戲源碼 瀏覽:999
壓縮機工作聲音判斷 瀏覽:985
事業單位程序員 瀏覽:506
易語言取相似顏色源碼 瀏覽:773
pyodbclinux 瀏覽:585
vivo為什麼把伺服器沉到深海 瀏覽:460
程序員能為電商做什麼 瀏覽:401
騰訊直充qq號加密碼 瀏覽:140
qt搭建msvc編譯器環境 瀏覽:338
單片機晶振壞了會不會工作不穩定 瀏覽:770
天天影迷APP顯示連接伺服器失敗怎麼回事 瀏覽:961
鋼鐵命令同盟第七關怎麼過 瀏覽:7
android底部控制項彈出 瀏覽:43
為程序員而自豪 瀏覽:583
可以進行c語言編譯的文件名 瀏覽:384