三级C语言上机考试试题与题解,全国计算机等级三级C语言上机试题逐题解析
三級網(wǎng)絡(luò)技術(shù)和三級數(shù)據(jù)庫技術(shù)的C語言上機試題難度較大,題型多樣,因此頗難掌握,今將這些試題分類解析,希望能幫大家順利通過上機考試。
三級的上機題可以分為十幾個類型,每類中的題目數(shù)量不一,多則十幾道題,少則三四道題,但是每類題都差不多,每類中只要掌握一道題,再理清做題的思路,那就相當于全掌握了。
好了,今天現(xiàn)看幾個題目比較多得類型。
第一類:關(guān)于f(p)=p*11 mod 256字符變換的題型,一般這類題的題目說明如下
函數(shù)ReadDat()實現(xiàn)從文件ENG.IN中讀取一篇英文文章,存入到字符串數(shù)組xx中;請編制函數(shù)encryptChar(),按給定的替代關(guān)系對數(shù)組xx中的所有字符進行替代,仍存入數(shù)組xx的對應(yīng)的位置上,最后調(diào)用函數(shù)WriteDat()把結(jié)果xx輸出到文件PS10.DAT中。
替代關(guān)系:f(p)=p*11 mod 256 (p是數(shù)組中某一個字符的ASCII值,f(p)是計算后新字符的ASCII值[U][I]),如果原字符的ASCII值是偶數(shù)或計算后f(p)值小于等于32,則該字符不變,否則將f(p)所對應(yīng)的字符進行替代[/I][/U]。
void encryptChar()
{
int i,j;
unsigned char fp;
for(i=0;i
for(j=0;xx[i][j]!='\0';j++)
{
fp=xx[i][j]*11 % 256 ;
if(!(xx[i][j]%2==0||fp<=32))
xx[i][j]=fp;
}
}
題解:這類題比較簡單,每道題的不同之處在于,要替換的字符的條件不一樣,但條件中總會說“如果該字符符合什么條件,字符就不變,否則就替換。”解決這個問題最省事的辦法就是把不變的條件寫好,前面加上邏輯非,如 (!(xx[i][j]%2==0||fp<=32)) 。
另一個要注意的問題是把改變后的字符要臨時存放在一個變量中,這個變量,如本題中的fp,必須是unsigned char 類型或int類型的變量,若寫成char類型的會出錯,因為從公式 fp=xx[i][j]*11 % 256 ;中可以看出fp的取值范圍應(yīng)在0~255之間,而char類型的變量范圍僅在-128~+127之間。
在本題中用兩重循環(huán)遍歷字符串數(shù)組,外層循環(huán)遍歷行,maxline中存放的是xx數(shù)組中存放字符串的真實的行數(shù);外層循環(huán)遍歷每行的每個字符,因為在xx中每行是一個字符串,而每個字符串都有一個‘\0'做結(jié)束標致,所以內(nèi)層循環(huán)的表達式2用xx[i][j]!='\0'來控制循環(huán)。
第3題:
函數(shù)readDat()的功能是實現(xiàn)從文件IN.DAT中讀取一篇英文文章
存入到字符串數(shù)組xx中;請編寫函數(shù)StrOR(),該函數(shù)的功能是:以
行為單位把字符串中的所有小寫字母o左邊的字符串內(nèi)容移到該字符
串的右邊存放,然后并把小寫字母o刪除,余下的字符串內(nèi)容移到已
處理字符串的左邊存放.最后把已處理的字符串仍按行重新存入字符
串數(shù)組xx中,最后調(diào)用函數(shù)WriteDat()把結(jié)果xx輸出到文件OUT.DAT
中。
例如:原文:You can create an index on any field.
You have the correct record.
結(jié)果:n any field. Yu can create an index
rd. yu have the crrect rec
原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80個字符,含標
點符號和空格。
注意:部份源程序已在程序PROG1.C中給出。
請勿改動主函數(shù)main()、讀函數(shù)readDat()和寫函數(shù)writeDat()
的內(nèi)容。
解題:本題如果用標準算法實難解釋清楚,這里完全用字符串處理函數(shù)來做,涉及到的函數(shù)有:
(1) char *strchr(char *s,char ch);——從S所指向的字符串中找到打一個ch代表的字符,返回該字符的指針,若找不到返回空指針NULL。
(2)void memset(char *s ,char ch,unsigned count);——將S所指向的數(shù)組的前count個字符全部賦于ch所代表的字符,如果ch為‘\0’,count為字符數(shù)組的長度,則代表清空數(shù)組。
(3)void memcpy(char *s1,char *s2,unsigned count);——將S2字符串的前count個字符拷貝到S1所代表的字符串中。
關(guān)于strcpy()和strcat()兩個函數(shù)就不用說了吧!
好,程序的源碼如下:
void Str0R(void)
{
int i; /*用來遍歷行 */
char *p,t[100];/*p用來指向字符'o',t用來臨時存放待處理的字符串中'o'前面的串*/
for(i=0;i
{
p=strchr(xx[i],'o'); /* 找找看,有沒有字符'o',有的話讓p指向它,若沒有返回NULL*/
while(p!=NULL)/*根據(jù)以上的P值是否為空,判斷是否有'o'字符,有的話做下面處理*/
{
memset(t,'\0',100); /* 清空數(shù)組t*/
memcpy(t,xx[i],p-xx[i]); /*將'o'前面的字符形成一個串拷貝到t中,臨時存放 */
strcpy(xx[i],p+1); /* 刪除'o'連同'o'前面的字符串*/
strcat(xx[i],t); /*將原'o'前面的字符串連接到處理后的字符串的末尾,到次已經(jīng)處理玩
了一個字符'o' */
p=strchr(xx[i],'o'); /* 尋找下一個字符'o'*/
}
}
}
再看一道類型題,本題共出現(xiàn)十道題,題目說明很相似,只是排序的條件不同,所以這種題代碼非常規(guī)則,我們?nèi)坑妹芭莘ㄅ判?#xff0c;只改以下排序的條件即可。我們把這類題稱為“按金額、代碼排序的題”。
全國計算機等級三級C語言上機試題逐題解析.doc
下載Word文檔到電腦,方便收藏和打印[全文共2184字]
編輯推薦:
下載Word文檔
總結(jié)
以上是生活随笔為你收集整理的三级C语言上机考试试题与题解,全国计算机等级三级C语言上机试题逐题解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言测试1到3章,2013计算机等级考
- 下一篇: 数码管时钟程序C语言00到99,[单片机