評分標準是對比那個out文件,逐行按比例給分。我昨天剛回答了一個,會在答案末尾復(fù)制粘貼過來。
創(chuàng)新互聯(lián)成立于2013年,公司自成立以來始終致力于為企業(yè)提供官網(wǎng)建設(shè)、移動互聯(lián)網(wǎng)業(yè)務(wù)開發(fā)(微信小程序開發(fā)、手機網(wǎng)站建設(shè)、成都app軟件開發(fā)等),并且包含互聯(lián)網(wǎng)基礎(chǔ)服務(wù)(域名、主機服務(wù)、企業(yè)郵箱、網(wǎng)絡(luò)營銷等)應(yīng)用服務(wù);以先進完善的建站體系及不斷開拓創(chuàng)新的精神理念,幫助企業(yè)客戶實現(xiàn)互聯(lián)網(wǎng)業(yè)務(wù),嚴格把控項目進度與質(zhì)量監(jiān)控加上過硬的技術(shù)實力獲得客戶的一致贊譽。
思路和方法不影響得分,只要答案正確就可以。
模擬軟件確實有可能有bug,你用的哪家的軟件?最好把題面和程序都發(fā)上來讓我看看。
下面是編程題具體評分準則:
程序編寫,即俗稱的編程題:
答題方式:
題目中有明確敘述,要求書寫程序的某一部分,以實現(xiàn)題目要求的功能。通常要求書寫的位置是某個指定函數(shù)的函數(shù)體,或者部分主函數(shù)的函數(shù)體,代碼量6-10行左右。
評分準則:
編程題,評分依據(jù)是”能夠運行出正確的結(jié)果“,即評分依據(jù)有兩個關(guān)鍵點,一是運行,二是結(jié)果正確。
此題評分準則依舊是跟”命題組答案“對照,依舊是對比文本后逐行按比例給分,而命題組答案在此題中將會是唯一的。
編程題的評分依據(jù),是程序編譯運行后得到的一個所謂的”out文件“,該文件在考生文件夾下,由編程運行時產(chǎn)生,文件名中通常帶有”out”字樣,各題具體的文件名,查看編程題中調(diào)用fopen函數(shù)時所書寫的文件名就可以確認。
例如某題面中存在如下語句:
fopen(fp,"out.dat",w);
那么該題目對應(yīng)的評分依據(jù)就是對應(yīng)考生文件夾下的名為“out.dat”的文件。
編程題的評分,是將out文件的內(nèi)容與命題組答案對比,逐行按比例給分。
影響得分的項目如下:
①程序存在error,無法通過編譯:
無法編譯,就無法運行。沒有運行,就不會產(chǎn)生out文件。沒有out文件,那么將會得到“指定文件未找到”的錯誤,此題判0分。
另外還有一點要注意,有個別模擬軟件曾經(jīng)出現(xiàn)過,題目中指定文件名為"out.dat",但是題面程序代碼中創(chuàng)建的卻是"ps35.out",造成“指定文件未找到”判0分的情況。這屬于模擬軟件的bug,不會在考試中發(fā)生。
②程序通過編譯且能夠運行,但是代碼本身存在bug。
舉個例子,寫程序找出1-15之間的素數(shù)。
命題組給出的out文件內(nèi)容如下:
2
3
5
7
11
13
一共6行,因為編程題總分24分,所以每行占4分。
如果考生答題過程中程序書寫沒有錯誤的話,一定會得到跟命題組內(nèi)容與格式完全一樣的答案(文件的書寫由題面的fprintf函數(shù)負責,不允許考生改動,故文件格式是已經(jīng)被指定的),將會得到滿分24分。
如果代碼有誤,程序判定過程中將7判定為非素數(shù),得到的out文件內(nèi)容與命題組答案對比及評分細則如下:
2 2 匹配,得4分
3 3 匹配,得4分
5 5 匹配,得4分
7 11 不匹配,得0分
11 13 不匹配,得0分
13 不匹配,得0分
故此題得分僅12分。
如果上述數(shù)值均正確判斷,但是錯誤的將1判斷為素數(shù),out文件內(nèi)容如下:
1
2
3
5
7
11
13
結(jié)果可想而知,逐行判定,最終肯定判0分。
額外要說明的是,大部分模擬軟件,不會進行逐行按比例給分,而是一旦out文件內(nèi)容與命題組答案”不完全匹配“,直接判0分,而考試時一定是逐行按比例給分的,這點無需擔心。
③程序書寫正確無bug,但是改動過程序命令禁止改動的其他部分,例如fprintf函數(shù),請參考②
一.特點和注意事項 1、填空題
(1)上機填空題一般包含2個(或3個)空。 (2)要填空的位置用___、___、___表示。
(3)考生在考試時應(yīng)刪除標識___、___、___后填入相應(yīng)的符號。
特別要注意的是:只能在要填空的位置上進行修改,不要添行、刪除、合并或分解,不要改動程序行的順序,更不要自己另編程序。 2.改錯題
(1)上機改錯題中有2個(或3個)錯誤需要修改。
(2)試題中用“/******found******/”來提示在下一行(或下面第二行)有錯。 (3)錯誤的性質(zhì)基本分為語法錯誤和邏輯錯誤,也有些試題要求把語句添加在下劃線處。
(4)特別要注意的是:只能在出錯的行上進行修 二.做題技巧
以下是對上機考試改錯題的做題方法和總結(jié),改錯題的錯誤主要分為以下幾類:
一般情況,錯誤主要分為語法錯誤和邏輯錯誤。
先檢查語法錯誤,編譯程序后發(fā)現(xiàn)沒有錯誤及警告,說明沒有語法錯誤,只有邏輯錯誤;邏輯錯誤必須根據(jù)程序的功能及預(yù)期結(jié)果來考查。
因此,對于程序改錯題,應(yīng)先編譯查找其中的語法錯誤,通過編譯器的提示容易找到錯誤的地方及原因,然后再尋找邏輯錯誤。修改了語法錯誤后再次編譯,直到修改完所有的語法錯誤。而查找邏輯錯誤時,需要運行程序根據(jù)結(jié)果來檢查。
1、if或while語句
若錯誤行是if或者while語句,則要注意以下點: 1)首先判斷是否正確書寫if或while關(guān)鍵字;
2)然后看有沒有用小括號把整個表達式括起來,若沒有則加上小括號; 3)若條件表達式中有指針變量而且沒有指針運算符時,則加上指針運算符; 4)若if條件表達式中只有一個等于號即數(shù)學(xué)等號(=),則要改寫成兩個等于號即邏輯等號(==);
若if條件表達式為其他的比較運算符,則一般是進行逆轉(zhuǎn)或加一個等于號; 2、for語句
若錯誤行是for語句,則要注意以下幾點: 1)首先判斷for有沒有書寫正確;
2)然后看for中的表達式是不是用分號(;)隔開,若不是則改為分號。 3、記住是分號(;),不是逗號(,)!
再者,分析for中的三個表達式,是否符合題意; 第一個表達式表示起始條件, 第二個表達式表示終止條件,
第三個表達式表示循環(huán)變量的變化。 4、return語句
若錯誤行為return語句,則要注意以下幾點: 1)首先看是不是正確書寫return關(guān)鍵字;
2)然后看是不是缺少分號,若是則加上分號即可;
3)再者判斷return后的變量或表達式是否正確;
這種錯誤需要根據(jù)題意來分析,分析返回變量或表達式的值和類型。 5、賦值語句
若錯誤行是賦值語句,則要看賦值是否正確,然后看賦值運算符是否寫正確。 6、定義語句
若錯誤行是定義語句,則要注意: 1)首先分析變量類型是否符合;
2)然后分析賦初值是否正確,求和初值賦0,求積初值賦1;
3)若以上均不是,則看是不是少定義了某個變量或少了花括號; 7、關(guān)鍵字拼寫錯誤。如:main-mian(錯誤) printf - pirntf (錯誤)
Return- return(錯誤) while- While (錯誤)
8、表達式錯誤問題
表達式錯誤占的份量最多,并且沒有統(tǒng)一的改法,我們只能通過題目要求來分析并修改),
1)若錯誤行中有整數(shù)1除以某個表達式或變量時,必須把整數(shù)1改為1.0;若變量或表達式是整型時,則只能進行強制類型轉(zhuǎn)換。
2)變量必須先賦值,后才參與運算,沒有賦值就不能參與運算;例如,long k;k*=num%10;
3)運算符書寫錯誤,例如,把/寫成\(num\=10);,==寫成=。 4)丟失括號() 9、字符串類問題
1)若錯誤行中有字符串結(jié)束符,則特別要要注意結(jié)束符有沒有寫錯(‘\0’不要寫成"\0”)。
2)新組建的字符串一定要加結(jié)束標識符(‘\0’); 3)要區(qū)分清楚字符‘o’和數(shù)字‘0’。
4)字符串復(fù)制、比較必須使用用字符串處理函數(shù)(strcpy或strcmp)實現(xiàn),不能用賦值語句或關(guān)系運算符。 10、指針類問題
若錯誤行中有指針變量,并且該變量名之前沒有指針運算符,則般都是加上指針運算符;即注意p和*p的區(qū)別; 11、函數(shù)首部類問題:
若錯誤行是函數(shù)首部,則要注意:
1)首先看該行最后有沒有分號,若有則刪掉分號;若中間有分號則要改為逗號;
2)形參和實參類型不一致問題
① 若實參是個地址或數(shù)組名或指針變量名,則對應(yīng)的形參肯定是指針或數(shù)組;
②若實參是二維數(shù)組名,則對應(yīng)的形參應(yīng)該是指針數(shù)組或是二維數(shù)組; ③若后面用到形參時有指針運算符,則該形參應(yīng)為指針類型;
④若形參是二維數(shù)組或指向M 個元素的指針變量,則該二維的長度必須與main中對于數(shù)組的第二維的長度相同。 3)函數(shù)類型不一致問題
①若函數(shù)中沒有return語句,則函數(shù)類型為void;
②若函數(shù)中有ret urn語句,則函數(shù)的類型必須與rerun后的變量類型一致;
記住,調(diào)用函數(shù)的類型與main中的該函數(shù)的類型一致! 12、語法錯誤問題:
1)語句缺少分號。若錯誤號中語句沒有以分號結(jié)束則加上分號;
2)變量名不一致。C語言是區(qū)分大小寫的,若錯誤行中有大寫字母一般都改為小寫字母;
3)若錯誤行中有一條橫線,則必須將橫線刪除再填空。填空題中亦是如此。 13、邏輯錯誤問題:
這種題型主要是表達式錯誤,占的題量比較多而且沒有統(tǒng)一的做題方法,需要我們具體問題具體分析。對于邏輯錯誤,可按下列步驟查找:
①先讀試題,看清題目的功能要求。
②通讀程序,看懂程序中算法的實現(xiàn)方法。 ③細看程序,發(fā)現(xiàn)常見錯誤點。 14、書寫錯誤問題:
特別注意我們的注釋部分,注釋是以/*開始,以*/結(jié)尾,不能有多余的,有也只能在/*和*/里面。注意,比如“/***注釋部分*****/*/”是錯誤的!
二、編程時容易犯的錯誤
1.書寫標識符時,忽略了大小寫的區(qū)別
C語言認為大些字母和小寫字母時兩個不同的字符,如在編譯程序過程中,系統(tǒng)會把a和認為時兩個不同的變量名。習(xí)慣上,符號常量名用大寫表示,變量名用小寫表示,以增加程序的可能性。
2.忽略了變量的類型,進行了不合法的運算
3.忽略了“=”與“= =”的區(qū)別;C語言中,“=”是賦值運算符,“= =”是關(guān)系運算符
4.忘記加分號
考生應(yīng)特別注意這種情況,分號是C語言中不可缺少的一部分,語句末尾必須有分號,但有時候千萬不能加;
5.輸入變量時忘記加地址運算符“”,而在不應(yīng)加“”的位置加了地址運算符
(1)忘記加“”的情況。
如int a,b; scanf(“%d%d”,a,b);
此時,無法正確給a和b讀入數(shù)據(jù)。scanf函數(shù)的作用是:按照a、b在內(nèi)存中所分配的地址將a、b的值存進去?!癮”指a在內(nèi)存中的地址,因此正確的書寫格式為scanf(“%d%d”,a,b);。
(2)多加“”的情況。如int str[ ]; scanf(“%s”,str);
C語言編譯程序?qū)?shù)組名的處理是:數(shù)組名代表數(shù)組的起始地址,scanf函數(shù)中的輸入項是字符數(shù)組名,因此不必再加地址符,應(yīng)該去掉。
6.輸入數(shù)據(jù)的方式余要求格式(通配符)不符。例如:scanf(“%d,%d”,a,b);
C規(guī)定:如果在“格式控制”字符串中,除了格式說明以外還有其他字符,則在輸入數(shù)據(jù)時應(yīng)輸入與這些字符相同的字符。下面輸入是合法的:3,4
此時不用逗號而用空格或其他字符是不對的,如:3 4(中間為空格)3:4(中間為冒號);
三、相關(guān)概念
(1)素數(shù):定義是除了能被1和自身整除外,不存在其他任何能整除該數(shù)的自然數(shù)。因此,在判斷一個數(shù)是否為素數(shù)時,只要有除了1和本身能整除它,還有一個數(shù)能整除它,就判定此數(shù)不是素數(shù)。
(2)判斷一個年份是否為閏年:如果年份能被4 整除但是不能被100整除,或者能被400整除,這兩種情況滿足之一都是閏年。
(3)利用選擇法進行從小到大的排序。選擇法的思路為:把第一個元素與其后面的元素比較,如果比后面的大,則交換,比較完所有的元素后,第一個位置的元素是最小的元素;在把第二個元素與其后面的元素進行比較,結(jié)果是除了第一個元素外,第二個元素是最小的元素;以此類推。
(4)數(shù)的按位分離算法是:對10取模求個位上的數(shù)字,整除10后再對10取模求十位上的數(shù)字,整除100后再對10取模求百位上的數(shù)字。
(5)最大公約數(shù)的算法是:(1)若nm,則用n除以m求余數(shù)r;(2)若r=0,則m為最大公約數(shù),若r≠0,則將r賦值于m,m賦值于n,繼續(xù)用n除以m求余數(shù)r;(3)直到r=0,m為最大公約數(shù)。根據(jù)算法判斷每一條語句是否正確。 (6)求最小公倍數(shù)的算法:等于兩個數(shù)的乘積除以它們的最大公約數(shù)。 (7)矩陣時以行為外循環(huán),列為內(nèi)循環(huán),可以同時計算周邊元素的和。
1、首先我們打開visual studio 2019軟件,新建一個win32控制臺程序。
2、然后在源文件夾下面新建一個C語言文件。
3、接著在C語言中導(dǎo)入stdio和stdlib庫。
4、然后在main函數(shù)中輸入如下圖所示的邏輯代碼。
5、運行程序以后我們就可以看到如下圖所示的CMD界面,這里需要大家輸入10個成績。
6、最后輸完第10個成績的時候,回車就可以得到平均值了。
#include "stdio.h"
float average(float *score)
{
int i;
float sum = 0;
for (i = 0; i 10; i++)
sum += score[i];
return sum / 10.0;
}
int main(void)
{
float score[10];
int i;
float aver;
for (i = 0; i 10; i++)
scanf("%f", score[i]);
aver = average(score);
printf("%f", aver);
return 0;
}