計算機等級考試上機
單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,*,計算機等級考試,上機指導,上機考試評分原理分析,上機考試是由計算機對考生的答題結(jié)果進行判斷的,而不是人為閱卷,即計算機評分!,等級考試的上機考試是分批進行的,在相鄰兩批考次之間,由監(jiān)考人員做該批考次結(jié)束前的“收分”工作(實際上是由計算機完成的)。也就是說,當你考完機試后,你的上機成績就已經(jīng)出來了,只是我們不知道結(jié)果罷了。當然,監(jiān)考人員也不知道,因為最后分數(shù)是加密的!,評分程序在評改你的上機成績,先從對應(yīng)的考生文件夾中讀取考生的答題文件,再對這些文件按照評分程序進行對比,然后給出相應(yīng)的分數(shù),最后,系統(tǒng)自動將你的考生文件中的所有文件全部刪除!,上機考試評分原理分析,對于題空題和改錯題,評分程序先是讀取考生文件夾下的BLAN.C和MODI.C文件,再找到其中需要填空和改錯的代碼所在的行數(shù),最后與評分程序中的提供的數(shù)據(jù)進行對比。需要提醒考生注意的是,填空題和改錯題的要求中明確聲明:不得刪減或增加程序行,就是這個道理;,對于編程題,評分程序先是讀取考生文件夾下的擴展名為.DAT的文件,再其中的數(shù)據(jù)與評分程序中的提供的數(shù)據(jù)進行對比,因此,考生在編程后,一定要運行程序,以生成擴展名為.DAT的輸出文件!,上機考試評分原理分析,評分程序是按照最終生成的文件給分的!由上述結(jié)論可以推出如下事實:,1.只要考生能生成最終答案文件,均可得分!,2.很多最終答案文件只有少數(shù)若干行數(shù)據(jù),分數(shù)由正確答案的行數(shù)決定!例如,真考題庫中有這樣一道題,要求用迭代方法計算cos(x)-x=0的一個近似根,其答案是0.739085,最終要求生成的文件OUT.DAT中只有一行數(shù)據(jù)。有這個文件,并且該文件只有一行數(shù)據(jù)0.739085的話,就可以得到100分!無所謂你是否編寫了程序!當然,有多行答案的文件的格式是由程序中的輸出部分決定的(而這個部分是不允許考生修改的!),考生必須能夠看懂輸出程序段的輸出格式,否則會適得其反!,上機考試兩點重要注意事項,注意事項1:,大家做上機的填空、改錯、編程題的時候請務(wù)必做到兩件事情:,一是編譯運行確認無誤!,二是切記一定要保存!,特別提醒:,a、如果沒有保存,無論是填空、改錯還是編程題你都不能得分,相當于沒有做。,b、如果編程題沒有運行即使保存了都有可能不得分,所以“編譯并運行”和“保存”兩件事情請大家都務(wù)必辦到。,c、萬一有些同學不能完整的做完某一個題目無論是填空、改錯還是編程,也就是說你根本無法運行這個程序,也請你把你會做的那部分填上去并保存,或許運氣好會有步驟分,就當“死馬當活馬醫(yī)”嘛,因為上機考試的評分是以機器評分為主、人工評分為輔結(jié)合進行的),上機考試兩點重要注意事項,注意事項2:,很多同學在做完了前一題(例如填空BLANK1.C或改錯MODI1.C等)沒有關(guān)閉工作區(qū)就直接打開下面的題目做(即使你點擊blank1.c文件右上角的叉叉關(guān)閉了這個文件也不行,必須關(guān)閉整個工作區(qū)),這樣你運行的時候永遠不會正確,所以大家做完了前一題后務(wù)必關(guān)閉工作區(qū)再做下一題(操作步驟為:打開主菜單:文件-關(guān)閉工作區(qū),很簡單的),當然,如果你萬一不會關(guān)閉工作區(qū),干脆做完一題就把整個VC6.0關(guān)閉,然后重新啟動VC6.0再打開下一題做也行的。,1、填空題,請補充函數(shù)fun(),該函數(shù)的功能是:把從主函數(shù)中輸入的字符串str2接在字符串str1的后面。,例如:str1=“How do”,str2=“you do?”,結(jié)果輸出:How do you do?,注意:部分源程序給出如下。,請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的橫線上填入所編寫的若干表達式或語句。,試題程序:,#include,#include,#define N 40,void fun(char*str1,char*str2),int i=0;,char*p1=str1;,char*p2=str2;,while(【1】),i+;,for(;【2】;i+),*(p1+i)=【3】;,*(p1+i)=0;,main(),char str1N,str2N;,clrscr();,printf(*Input the string str1&,str2*n);,printf(nstr1:);,gets(str1);,printf(nstr2:);,gets(str2);,printf(*The string str1,puts(str1);,puts(str2);,fun(str1,str2);,printf(*The new string*n);,puts(str1);,答案及評析:,【1】*(p1+i),【2】*p2,【3】*p2+,【解析】填空1:變量i用來記錄字符串str1的長度,當指針指到字符串str1結(jié)束標志符0時,while循環(huán)結(jié)束,變量i停止累加。,填空2:指針p2指向字符串str2,通過for循環(huán)將字符串str2接在str1后面,循環(huán)結(jié)束的條件是指針p2所指的字符是字符串結(jié)束標志符0。,填空3:指針p2最初指向字符串str2的首字符,通過自加1,使指針p2依次向后移動,指向str2的各個字符,實現(xiàn)將字符串str2接在str1后面的功能。,請補充函數(shù)fun(),該函數(shù)的功能是求一維數(shù)組xN的平均值,并對所得結(jié)果進行四舍五入(保留兩位小數(shù))。例如:當x10=15.6,19.9,16.7,15.2,18.3,12.1,15.5,11.0,10.0,16.0,結(jié)果為:avg=15.030000。,注意:部分源程序給出如下。,請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的橫線上填入所編寫的若干表達式或語句。,試題程序:,#include,#include,double fun(double x10),int i;,long t;,double avg=0.0;,double sum=0.0;,for(i=0;i10;i+),【1】;,avg=sum/10;,avg=【2】;,t=【3】;,avg=(double)t/100;,return avg;,main(),double avg,x10=15.6,19.9,16.7,15.2,18.3,12.1,15.5,11.0,10.0,16.0;,int i;,clrscr();,printf(nThe original data is:n);,for(i=0;i10;i+),printf(%6.1f,xi);,printf(nn);,avg=fun(x);,printf(average=%fnn,avg);,答案及評析:,【1】sum+=xi,【2】avg*1000,【3】(avg+5)/10,【解析】填空1:通過for循環(huán)求出10個數(shù)的累加和,存于變量sum中。填空2:為了實現(xiàn)四舍五入保留兩位小數(shù)的功能,應(yīng)將平均值先擴大1000倍。填空3:將平均值加上5,再除以10,實現(xiàn)四舍五入的功能。,請補充函數(shù)fun(),該函數(shù)的功能是:從a到z統(tǒng)計一個字符串中所有字母字符各自出現(xiàn)的次數(shù),結(jié)果保存在數(shù)組alf中。注意:不區(qū)分大小寫,不能使用字符串庫函數(shù)。,例如,輸入:“A=abc+5*c”,結(jié)果為:a=2,b=1,c=2。,注意:部分源程序給出如下。,請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的橫線上填入所編寫的若干表達式或語句。,試題程序:,#include “stdio.h”,#include “,#define N 100,void fun(char*tt,int alf),int i;char*p=tt;,for(i=0;i=A&*p=a&*p=z),alf*p-a+;,【3】;,main(),char strN;,char a=a;,int alf26,k;,clrscr();,printf(nPlease enter a char string:);,scanf(%s,str);,printf(n*The original string*n);,puts(str);,fun(str,alf);,printf(n*The number of letter*n);,for(k=0;k26;k+),if(k%5=0),printf(n);,printf(%c=%d,a+k,alfk);,printf(n);,答案及評析:,【1】alfi=0,【2】*p+=32,【3】p+,【解析】填空1:數(shù)組alf26用來存放字母字符出現(xiàn)的次數(shù),在使用之前需要清零。填空2:題目要求不區(qū)分大小寫,所以可以先將所有的大寫字母都轉(zhuǎn)換為對應(yīng)的小寫字母,然后一并記錄出現(xiàn)的次數(shù)。將大寫字母轉(zhuǎn)換為對應(yīng)的小寫字母,只需將ASCII碼加上32就可以了。填空3:指針p指向字符串tt,通過p自加1來移動指針,訪問字符串中的所有字符。,請補充函數(shù)fun(),該函數(shù)的功能是:分類統(tǒng)計一個字符串中元音字母和其他字符的個數(shù)(不區(qū)分大小寫)。,例如,輸入aeiouAOUpqrt,結(jié)果為A:2 E:1 I:1 O:2 U:2 other:4。,注意:部分源程序給出如下。,請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的橫線上填入所編寫的若干表達式或語句。,試題程序:,#include,#include,#define N 100,void fun(char*str,int bb),char*p=str;,int i=0;,for(i=0;i6;i+),【1】;,while(*p),switch(*p),case A:,case a:bb0+;break;,case E:,case e:bb1+;break;,case I:,case i:bb2+;break;,case O:,case o:bb3+;break;,case U:,case u:bb4+;break;,default:【2】;,【3】,main(),char strN,ss6=AEIOU;,int i;,int bb6;,clrscr();,printf(Input a string:n);,gets(str);,printf(the string is:n);,puts(str);,fun(str,bb);,for(i=0;i=A)&(tti=A)&(tti=a)&(tti=z),【解析】錯誤1:函數(shù)的返回值是字符串的首地址,是指針類型,所以在函數(shù)名前要加*號。,錯誤2:題目要求將小寫字母改為大寫字母,所以if語句的判斷條件是小寫字母。,下列給定程序中,函數(shù)fun()的功能是:先從鍵盤上輸入一個3行3列的矩陣的各個元素的值,然后輸出主對角線元素之積。,請改正函數(shù)fun()中的錯誤,使它能得出正確的結(jié)果。,注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。,試題程序:,#include,int fun(),int a33,mul;,int i,j;,mul=1;,for(i=0;i3;i+),/*found*/,for(i=0;j3;j+),scanf(%d,for(i=0;i3;i+),/*found*/,mul=mul*aij;,printf(Mul=%dn,mul);,main(),fun();,答案及評析:,(1)錯誤:for(i=0;j3;j+),正確:for(j=0;j0),/*found*/,s=s%100;,*t=s%10*s1+*t;,s1=s1*10;,main(),long s,t;,clrscr();,printf(nPlease enter s:);,scanf(%ld,fun(s,printf(The result is:%ldn,t);,答案及評析:,(1)錯誤:int fun(long s,long*t),正確:void fun(long s,long*t),(2)錯誤:s=s%100;,正確:s=s/100;,【解析】錯誤1:函數(shù)由指針來完成參數(shù)的傳遞,所以沒有返回值,應(yīng)定義函數(shù)的類型為void。,錯誤2