版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
笫1套上機(jī)考試試題
已知數(shù)據(jù)文件IN.dat中存有200個(gè)四位數(shù),并已調(diào)用讀函數(shù)Rdata()把這些數(shù)存入數(shù)組a
中,請(qǐng)編寫函數(shù)spellNumO,其功能足:把千位數(shù)字和十位數(shù)字重新組成一個(gè)新的二位數(shù)
ab(新二位數(shù)的十位數(shù)字是原四位數(shù)的千位數(shù)寧,新二位數(shù)的個(gè)位數(shù)字是原四位數(shù)的十位數(shù)
字),以及把個(gè)位數(shù)字和百位數(shù)字組成另一個(gè)新的二位數(shù)cd(新二位數(shù)的十位數(shù)字是原四位數(shù)
的個(gè)位數(shù)字,新二位數(shù)的個(gè)位數(shù)字是原四位數(shù)的丙位數(shù)字),如果ab<cd,ab必須是奇數(shù)且
小能被5整除,cd必須是偶數(shù),同時(shí)兩個(gè)新數(shù)的十位數(shù)寧均不為0,則將滿足此條件的四位
數(shù)按從大到小的順序存入數(shù)組b中,并要計(jì)算滿足上述條件的四位數(shù)的個(gè)數(shù)counto最后
main()函數(shù)調(diào)用寫函數(shù)Wdata(),把結(jié)果count以及數(shù)組b中符合條件的四位數(shù)輸出到OUT.dat
注意:部分源程序已經(jīng)給出。程序中已定義數(shù)組:a[200],b[200]:已定義變量count。
請(qǐng)勿改動(dòng)數(shù)據(jù)文件IN.dat中的任何數(shù)據(jù)及主函數(shù)main。、讀函數(shù)Rdata。和寫函數(shù)Wdata()的
內(nèi)容。
1iinclude<stdio.h>
2IdefineMAX200
3intrcount-0;
4voidspeliNum()
5(
6
7?
8voidRdata()
9Iinti;
10FILE*fp;
11fp*fopenCfIN.dat,\Mrn);
12tor(i-0;
13fscanf(fp/"'dj,Ii]);
14fclos?(fp);
15j
16voidWdataO
17<FILE*fp;
18inti;
19fp=fopenPOUT.oaf,3);
20fprxntf(fp,count);
21for(i-0;i<count;if)
22fprintf(fp,b[l));
23fclose(fp);
24]
25voidmainO
26(inti;
27RdataO;
28spellNusnO;
29prints斜蟠做count);
30for(i=0;i<count;
31printf(*W-,b(i]);
32printfC\n");
33WdataO;
34)
第1套試題答案及詳解
【審題分析】分析題目可知,本題只要實(shí)現(xiàn)spellNum。函數(shù)的功能即可。spellNum()要
實(shí)現(xiàn)的功能是:
將個(gè)位數(shù)的每位拆分成單個(gè)數(shù)字,然后將這4個(gè)數(shù)字組合成兩個(gè)二位數(shù)ab和cd。如果
ab<cd,ab必須是奇數(shù)且不能被5整除,cd必須是偶數(shù),同時(shí)兩個(gè)新數(shù)的十位數(shù)字均不為零,
則將滿足此條件的四位數(shù)按從大到小的順序存入數(shù)組b中,并要計(jì)算滿足上述條件的四位數(shù)
的個(gè)數(shù)count。因此解答本題的關(guān)鍵在于如何將一個(gè)四位數(shù)拆分成單個(gè)數(shù)字,如何將兩個(gè)數(shù)
字組合成一個(gè)二位數(shù),以及判斷二位數(shù)的奇偶性。
【解題思路】對(duì)于每一個(gè)四位數(shù),用這個(gè)四位數(shù)除以1000,可得到這個(gè)四位數(shù)千位卜
的數(shù)字輸給變量thou:這個(gè)四位數(shù)對(duì)1000求余然后再除以100,可得到這個(gè)四位數(shù)百位上
的數(shù)字輸給變量hun;這個(gè)四位數(shù)對(duì)?100求余然后再除以10,可得到這個(gè)四位數(shù)的十位上的
數(shù)字輸給變量ten;這個(gè)四位數(shù)對(duì)10求余,可得到這個(gè)四位數(shù)個(gè)位上的數(shù)字輸給變量data。
因?yàn)閠hou和hun作為重新組成新的兩個(gè)二位數(shù)的十位上數(shù)字,所以其值不能為0,因而
在組建兩個(gè)二位數(shù)之前,首先判斷thou和hun這兩個(gè)數(shù)字是否為0。然后用邏輯表達(dá)式
ab<cd&&ab%2==l&&ab%5!=0&&cd%2==0來判斷新組成的兩個(gè)二位數(shù)ab和cd是否
滿足ab<cd,ab必須是奇數(shù)且不能被5整除,并且cd必須是偶數(shù)的條件。如果上述邏輯表
達(dá)式成立,則這個(gè)四位數(shù)是符合題目條件的一個(gè)數(shù)字,把其存入數(shù)組b中,同時(shí)計(jì)數(shù)變量
countilllo最后利用一個(gè)雙重循環(huán)對(duì)數(shù)組b中的數(shù)字進(jìn)行從大到小的排序。
1voidspellNum()
21inti,thourhun,ten,data,j;
3intab,cd;
4for(i-0;i<200;if
5[thou.a[11/1000;
6hun*a(i]%1000/100;
7tena[i]%100/10;
8dataa
9if(thou-??011
10continue;
11ab=10*thou+ten;
12cd-10*data-*-hun;
13If(ab<cd&&ab%2==l4&abt5!?0&&
14(b[count]=a(1];
15count*>;
16}
171
18.tor(i=0;l<count-l;
19for(j=i+l;j<count;j+十)
20if(bli]<b(j])
21(data,b(iJ;
22b[i]-b[j];
23b[j]-data;
24)
251
2套上機(jī)考試試題
在文什IN.dat中有200組數(shù)據(jù),每組有3個(gè)數(shù),每個(gè)數(shù)均是三位數(shù)。函數(shù)Rdata()讀取
這200組數(shù)據(jù)存放到結(jié)構(gòu)數(shù)組aa中,請(qǐng)編寫函數(shù)numSort(),其功能是:要求在200組數(shù)據(jù)
中找出條件為每組中的第2個(gè)數(shù)大于第1個(gè)數(shù)加第3個(gè)數(shù)之和,其中滿足條件的組數(shù)作為函
數(shù)numSort()的返回值,同時(shí)把滿足條件的數(shù)據(jù)存入結(jié)構(gòu)數(shù)組bb中,再對(duì)bb中的數(shù)據(jù)按照
每組數(shù)據(jù)的第2個(gè)數(shù)加第3個(gè)數(shù)之和的大小進(jìn)行降序排列(第2個(gè)數(shù)加第3個(gè)數(shù)的和均不相
等),排序后的結(jié)果仍重新存入結(jié)構(gòu)數(shù)組bb中。最后調(diào)用函數(shù)Wdata(),把結(jié)果bb輸出到文
件OUT.dat中。
注意:部分源程序已經(jīng)給出。請(qǐng)勿改動(dòng)主函數(shù)main。、讀數(shù)據(jù)函數(shù)Rdata()和輸出數(shù)據(jù)
函數(shù)Wdata。的內(nèi)容。
1iinclude<3tdio.h>
2linclude<string.h>
3*include<conio.h>
4typedefstruct
5|intxLx2.x3;
6|data;
7dataaa[200]tbb(200];
8intnumSort()
91
10
n)
12voidRdataO
13(FILE*in;
14inti;
Hw
15in?fcpen<"IN.datrr*);
16for(i=0;i<200;i++)
17fscanf(in,fd,8d,bd",iaalij.xl,&aa[ij.x2,4aa(i).x3);
18fclose(in);
19J
20void陽ata(intcount)
21|FILE*out;
22inti;
23cut=fqpen("CXJT?daL,"一”);
24for(if;i<count;i”)
25{printf第第7MsMd\n",bb(i1.xl,bb(i].x2,
bb(ihx3,bb[i].x2.bb(i].x3);
ww
26fprintf(out,%d%d%d\nrbb(i).xlrbb(i).x2,bb[i].x3);
27I
28fclose(out);
29)
30voidmainO
31\intcount;
32RdataO;
33count-nimSorto;/?7
34Wdata(count);
35)
第2套試題答案及詳解
【審題分析】分析題目可知,本題只要實(shí)現(xiàn)numsort。函數(shù)的功能即可。numSort。要實(shí)
現(xiàn)的功能是:要求在200組數(shù)據(jù)中找出條件為每組中的第2個(gè)數(shù)大于第1個(gè)數(shù)加第3個(gè)數(shù)之
和,其中滿足條件的組數(shù)作為函數(shù)numsort()的返回值,同時(shí)把滿足條件的數(shù)據(jù)存入結(jié)構(gòu)數(shù)
組bb中,再對(duì)bb中的數(shù)據(jù)按照每組數(shù)據(jù)的第2個(gè)數(shù)加第3個(gè)之和的大小進(jìn)行降序排列(第
2個(gè)數(shù)加第3個(gè)數(shù)的和均不相等),排序后的結(jié)果仍重新存入結(jié)構(gòu)數(shù)組bb中。因此解答本題
的關(guān)鍵在于如何將一個(gè)數(shù)拆分出前面的3何數(shù)字成單個(gè)數(shù)字,并比較大小以及排序。
【解題思路】在for循環(huán)語句巾,自變量i從0遞增到200,判斷每組中的第2個(gè)數(shù)大
于第1個(gè)數(shù)加第3數(shù)之和即表達(dá)式aa[i].x2>aa[i].xl+aa[i].x3是否成立,如果表達(dá)式成立,即
把a(bǔ)a|i]賦給數(shù)組變量bb,同時(shí)計(jì)數(shù)變量ent自加。最后用兩重循環(huán)對(duì)數(shù)組bb中的數(shù)據(jù)按照
每組數(shù)據(jù)的第2個(gè)數(shù)加第3個(gè)之和的大小進(jìn)行降序排列。
1intnumSort()
2(intirent=0,j;
3datach;
4for(1-0;i<200;"+)
5if(aa[i].x2>aa(l].xl+aa(ij.x3)
6(bbfcntj-aaril;
7cnt++;
8)
9for(1=0;i<cnt-l;i++)
10forj<ent;j*+)
I】if(bb[i].x2*bb[i].x3<bb[j],x2+bb{jJ,x3)
12(ch?bb(ij;
13bb(i]mbb[j];
14bb[j]*ch;
15)
16returnent;
171
第3套上機(jī)考試試題
已知數(shù)據(jù)文件IN.dat中存有200個(gè)四位數(shù),并已調(diào)用讀函數(shù)rDataO把這些數(shù)存入數(shù)組a
中,清編寫函數(shù)CalVal(),其功能是:把一個(gè)四位數(shù)的千位數(shù)字上的值加上十位數(shù)字上的值
恰好等于百位數(shù)字上的值加上個(gè)位數(shù)字上的值,并且原四位數(shù)是偶數(shù),則統(tǒng)計(jì)出滿足此條件
的四位數(shù)的個(gè)數(shù)counl,并把這些四位數(shù)按從小到大的順序存入數(shù)組b中。最后調(diào)用寫函數(shù)
wData(),把結(jié)果count以及數(shù)組b中符合條件的四位數(shù)輸出到OUT.dat文件中。
注意:部分源程序已經(jīng)給出。程序巾已定義數(shù)組a[200]、b[200],已定義變量count。請(qǐng)
勿改動(dòng)數(shù)據(jù)文件IN.dat中的仟何數(shù)據(jù)及主函數(shù)main。、讀函數(shù)rData()和寫函數(shù)wData()的內(nèi)
容。
1finclude<stdio.h>
2tdefineMMC200
3inta[MAX|,b(MAXhcount-0;
4voidCalValO
5(
6
7I
8voidrDataf)
9Iinti;
10FILE?fp;
11fp-fopen(-IN.dat°,wrw);
12for(i?0;i<MAX;i+,)
13fscanf(fp,"%d,",[i]);
14fclose(fp);
16voidwData()
17{FILE*fp;
18int1;
19fp-fopen(-OUT.daf,3);
20fprintf(fprrd'rT,count);
21for(1=0;i<count;
R
22fprintf(fpr%cl\n**rb[i]);
23fclose(fp);
24}
25voidmain()
26(inti;
27rDataO;
28CalValO;
29printf是條ft的效?*d\rr,count);
30for(i?O;Kcount;
31printf("%d,
32printf("\nw);
33wData();
34)
第3套試題答案及詳解
【審題分析】分析題目可知,本題只要實(shí)現(xiàn)calVal()函數(shù)的功能即可。calVal()要實(shí)現(xiàn)的
功能是:把一個(gè)四位數(shù)的各位數(shù)字拆分成單個(gè)數(shù)字,然后按指定方式相加,如果相等且原四
位數(shù)是偶數(shù),則統(tǒng)計(jì)出滿足此條件的個(gè)數(shù)count并把這些四位數(shù)按從小到大的順序存入數(shù)組
b中。因此解答本題的關(guān)鍵在于如何將一個(gè)四位數(shù)的每位數(shù)拆分成單個(gè)數(shù)字以及如何判斷一
個(gè)四位數(shù)是否為偶數(shù)。
【解題思路】對(duì)于每一個(gè)四位數(shù),用這個(gè)四位數(shù)除以1000,可得到這個(gè)四位數(shù)千位上
的數(shù)字輸給變量thou;這個(gè)四位數(shù)對(duì)1000求余數(shù)然后再除以100,可得到這個(gè)四位數(shù)百位
上的數(shù)字輸給變量hun;這個(gè)四位數(shù)對(duì)?100求余數(shù)然后再除以10,可得到這個(gè)四位數(shù)十位上
的數(shù)字輸給變量ten;這個(gè)四位數(shù)對(duì)10求余數(shù),可得到這個(gè)四位數(shù)個(gè)位上的數(shù)字輸給變量
data。
然后判斷表這式thou+ten=data+hun&&a|i]%2!=1是否成立,如果成立,則把這個(gè)數(shù)
賦給數(shù)組b,同時(shí)計(jì)數(shù)變量count加1。最后對(duì)數(shù)組b中元素進(jìn)行從小到大的排序。
【參考答案】
voidCalValO
(int1.thou,hun,tan,data,j;
for(i-0;i<MAX;if)
q(thou-分⑴八。。。;
5hun,a[i)%1000/100;
6ten,a[i]%100/10;
7data■a(i]%10;
8if(<thou*ten^-hun+data)&aa⑴
9(b(count)Qa[i3;
10count**;
11
12
13for(i-0;i<count-l;i++)
14forj<count;j++)
15if(b[il>b[jj)
16data■b[i];
17blU-b(j];
10bIj]=data;
19
20I
[易錯(cuò)分析】用求余運(yùn)算和除法運(yùn)算得到一個(gè)四位數(shù)
第4套上機(jī)考試試題
已知在文件IN.dat中存有100個(gè)產(chǎn)品銷售記錄,每個(gè)產(chǎn)品銷售記錄由產(chǎn)品代碼code(字
符型4位)、產(chǎn)品名稱name(字符型10位)、朝介uprice(整型)、舞amount(整型)、通sum(長
整型)5部分組成其中:金額=單價(jià)x數(shù)最。函數(shù)ReadDat()是讀取這100個(gè)銷售記錄并存入
結(jié)構(gòu)數(shù)組sell中。請(qǐng)編寫函數(shù)SortDat(),其功能要求:按金額從小到人進(jìn)行排列,若金額相
同,則按產(chǎn)晶代碼從人到小進(jìn)行排列,最終排列結(jié)果仍存入結(jié)構(gòu)數(shù)組sell中。最后調(diào)用函數(shù)
WriteDatO,把結(jié)果輸出到OUT.dat文件中。
注意:部分源程序已經(jīng)給出。請(qǐng)勿改動(dòng)主函數(shù)main。、讀數(shù)據(jù)曬數(shù)ReadDat。和輸出數(shù)
據(jù)兩數(shù)WriteDatO的內(nèi)容。
?include<stdio*h>
Iinclude<string.h>
3Iinclude<conio.h>
q?includbe<stdlib.h>
5?defineMAX100
6typectefstruct
7Ichaicode[51;/*F仲,
8char111;/*,"品名稱”
9int□price:/*單價(jià)?/
10intamount;卜政嫉*/
iilogsum;/?金,/
12JPRO;
13PROsell[MAX];
14voidReadDat0;
15voidWriteDat0;
16voidSortDat0
17
18
19
20voidmain0
21{memset(seli/0,sizeof(sell));
22ReadDat();
23SortDat0;
2AWriceDat();
25)
26voidReadDat(>
27<FILE*fp;
28charstr[80|rchill];
29inti;
30£p=fcpenC4N.dat",wr");
31for(i*0;i<100;if)
32tfgets(str/80,fp);
33memcpy(sell|ij.code,str,4);
34meJncpy(selHi].naire,str+4,10);
35memcpy(ch,str+14,4);
36ch[4J=0;
37selili].uprice?atoi(ch);
38memcpy(chrstr+18,5);
39ch(5]■0;
40sell(i).amount?atoi(ch);?
41sell[i].sum,(long)sell(i).uprice*sell(i}.amount;
421
43fclose(fp);
441
45voidWriteDat(void)
46IFILE*fp;...:;??J?:.-1?,,J??r-.?.?
47Inti;?
48fp-fopen(*OUT.<1A12,nWw);
49for(i*0;i<100;vH)
50{printf(w%s%s*4d%5d$5d\n”,sel!4i].code,soil(i[.naine,
sell(i].upricetselldl.acnount/sellfi).sum);
51fprintf(fp#nt3%sMd電5d%Sd\n-,sell(i].code,wsll[,
sell(i|.uprice,sellfi).amountrsell[i]<sum);
521
53felose(fp);
54
第4套試題答案及詳解
【審題分析】分析題目可知,本題只要實(shí)現(xiàn)SortDat。函數(shù)的功能即可。SortDat。要實(shí)現(xiàn)
的功能是:按金額從小到大進(jìn)行排列,若金額相同,則按產(chǎn)品代碼從人到小進(jìn)行排列,最終
排列結(jié)果仍存入結(jié)構(gòu)數(shù)組sell中。因此解答本題的關(guān)鍵在于如何通過自定義類型讀取‘條銷
售記錄,并交換它的成員以及排序。
【解題思路】在雙重for循環(huán)中首先比較兩個(gè)產(chǎn)晶的金額,如果前一個(gè)產(chǎn)品的金額大于
后一個(gè)產(chǎn)晶的金額,則這兩個(gè)產(chǎn)品進(jìn)行數(shù)據(jù)交換。如果兩個(gè)產(chǎn)品的金額相等,則用字符串比
較函數(shù)strcmp比較兩個(gè)產(chǎn)品的代碼,如果返回的值小于0,則這兩個(gè)產(chǎn)品進(jìn)行數(shù)據(jù)交換。
【參考答案】
1voidSortDat()
inti,j;
3PROtemp;
4for(i?0;i<99;i”)
5for(j<100;:)?+)
6i£(sell(i).sum>selllj).sum)
7(temp=sell(i);
8sell(i)-j];
9sell[j)■temp;
101
11elseif.sum-3?11(j].sum)
121if(strcmp(sell(i).codersell[j).code)<0)
13(temp?selHi]7
143ell(i]?selUjj;
15sellf4)),temp;
16I
17)
18I
第5套上機(jī)考試試題
已知文件IN.dat中存有若干個(gè)(不多于200個(gè))四位數(shù)字的正整數(shù),函數(shù)ReadDat()讀取
這若干個(gè)正整數(shù)并存入數(shù)組number中。請(qǐng)編寫函數(shù)CalValue(),其功能要求是:①求出文
件中所有的正整數(shù)個(gè)數(shù)totNum.(求求這些數(shù)中的各位數(shù)字之和是奇數(shù)的個(gè)數(shù)totCnt,以及
滿足此條件的這些數(shù)的算術(shù)平均值totaveo最后調(diào)用函數(shù)writeDat。把所求的結(jié)果輸出到
OUT.dat文件中。
注意:部分源程序已經(jīng)給出。清勿改動(dòng)主函數(shù)main。、熊|數(shù)ReadDat。和函數(shù)writeDat()
的內(nèi)容。
1#include<stdio.h>
2?include<conio.h>
3tdefineMAXNJM200
4intnumber(MAXNIJMJ;
5inrtotNum=0;/?文件IN.dat中共有的1T.姑數(shù)個(gè)數(shù)?/
6inttotCnt30;.,?符合條fl"川尊數(shù)的Ti*/
7doubletotave-0.0;/*+R舶.”/
8hitReadDat(void);
9voidwtireDat<void);
10voidCalValue(void)
11I
12
13|
14voidmain()
15(inti;
16for(i-0;i<MAXNi則;
17nwfoer⑴=0;
18if(ReadDatO)
19(printfLISA;文件IN.datN恕“l(fā)!\007\n">;
20return;
21\
22CalValueO;
23「n口“(”文件3.31中我書的正碎(個(gè)故=,<1個(gè)\八",
24prinlf/濟(jì)合條fl的il的個(gè)數(shù)M.d個(gè)\爐,tcrCnt);
M
25printf(.2f\n"rstave”
26writeDatO;
27>
28incReadDac(void)
291FILE*fp;
30inti-0;
31if((fp-fopenLiN.cbL,""))-NULL)
32return1;
33while(!feof(fp))
34fscanf(fprfd,",Animber[i-w-j);
35fclose(fp);
36return0;
371
38voidwriteDat(void)
39(FILE*fp;
40fp=fopenLOUT.daL,"w");
41fprintf(fp,w%dl\n%d\n%6.2f\n**,totNum,totCnt,totave);
42fclose(fp);
43?
第5套試題答案及詳解
【審題分析】分析題曰可知,本題只要實(shí)現(xiàn)calValue。函數(shù)的功能即可。calValue。要實(shí)
現(xiàn)的功能是:①求出文件中共有的正整數(shù)個(gè)數(shù)totNum;②求這些數(shù)中的各位數(shù)字之和是奇
數(shù)的個(gè)數(shù)totCnt,以及滿足此條件的這些數(shù)的算術(shù)平均值totave。因此解答本題的關(guān)鍵在于
如何判斷一個(gè)數(shù)是否為正整數(shù)。
【解題思路】在for循環(huán)語句中,自變最i從()遞增到MAXNUM對(duì)數(shù)組number中的
每個(gè)數(shù)進(jìn)行判斷,如果mumber[i]的值大于0,說明number[i]的值為正整數(shù),統(tǒng)計(jì)正整數(shù)個(gè)
數(shù)的變量totNum加1;然后用除法和求余的方法對(duì)numbers的值求出其各個(gè)位上的數(shù)字,
分別記錄到變量thou、hun、ten、data中,這些數(shù)字的和對(duì)2求余數(shù),如果余數(shù)不為零,則
統(tǒng)計(jì)變量totCnt加1,同時(shí)把number|i]的值加到totave上,得到這些數(shù)的和。退出循環(huán)后,
用totave的值除以totCnt,就得到了這些數(shù)的算術(shù)平均值totaveo
【參考答案】
1voidCalVaiue(void)
2Iinti*thouihun,ten,data;
3for(i?0;i<MAXNUM;14+)
4|if(Inumberfil)
5break;
6if(number(1)>0)
7totNum4*;
8thou?nuffiberjil/1000;
9hun?numberji)%1000/100;
10ten,number(1)%100/10;
11data?number|i)^10;
12if((thou+hvn*ten<ddta)
13(totCnt**;
14totave?,number|i];
15》
16)
17totave/=totCnt;
18}
【易錯(cuò)分析】用number[i]除以1000得到number[i]千位上的數(shù)字,用number[i]對(duì)1000
求余然后再除以100得至ljnumber[i]百位上的數(shù)字,用number[i]對(duì)100求余然后再除以10
得至ijnumber[i]十位上的數(shù)字,用numbcr[i]對(duì)10求余數(shù)得到nlll=nber[i]個(gè)位上的數(shù)字。在求
算術(shù)平均值時(shí),要把整型轉(zhuǎn)換成雙精度型數(shù)據(jù)。
第6套上機(jī)考試試題
下列程序的功能是:計(jì)算500?800區(qū)問內(nèi)素?cái)?shù)的個(gè)數(shù)count,并按所求素?cái)?shù)的值從大到
小的順序排序內(nèi).計(jì)算其間隔加、減之和,即第1個(gè)素?cái)?shù).第2個(gè)素?cái)?shù)+第3個(gè)素?cái)?shù).第4
個(gè)素?cái)?shù)+第5個(gè)素?cái)?shù)……的值sumo
請(qǐng)編寫函數(shù)primeValue。實(shí)現(xiàn)程序的要求。最后調(diào)用函數(shù)writeDat。,僻果count和sum
輸出劍OUT.dat文件中。
注意:部分源程序已給出。請(qǐng)勿改動(dòng)豐函數(shù)main()和輸出數(shù)據(jù)函數(shù)writeDat。的內(nèi)容。
1Jinclude<stdio.h>
2intcountsutiu
3voidprimeValue()
4?
5
6I
7voidwnteDat()
8{FI1£*fp;
9fp?topen(',OUT.dat*,;
10fprintf(£p<"%d\n^d\n*#count,sun);
11fclose(fp>;
121
13voidmain。
14{count=sum?0;
15primeValueO;
16printf(■索數(shù)的個(gè)珈*d\n,count);
17printsL按要求sum);
18writeDat();
19)
第6套試題答案及詳解
【審題分析】分析題目可知,本題只要實(shí)現(xiàn)primeValue。函數(shù)的功能即可。primeValue。
要實(shí)現(xiàn)的功能是:計(jì)算指定區(qū)域內(nèi)素?cái)?shù)的個(gè)數(shù)count,并排序,再根據(jù)指定的運(yùn)算關(guān)系計(jì)算
sum值。因此解答本題的關(guān)鍵在于如何判斷一個(gè)數(shù)是否為素?cái)?shù)。
【解題思路】判斷一個(gè)數(shù)是否是素?cái)?shù)的算法是:如果存在一個(gè)從2開始到這個(gè)數(shù)的一半
之間的數(shù)能被這個(gè)數(shù)整除,則這個(gè)數(shù)不是素?cái)?shù);否則這個(gè)數(shù)是素?cái)?shù)。
題中,循環(huán)變量i從800遞減到500,如果存在小于i/2的一個(gè)數(shù)j,使表達(dá)式i%j的
值等丁P,則當(dāng)前數(shù)i不是素?cái)?shù),否則i是素?cái)?shù)。計(jì)數(shù)數(shù)變量count加1,把變量i的值加到
變量數(shù)組yy中。在求這些素?cái)?shù)的間隔加、減之和時(shí),采用了標(biāo)志變最j,每循環(huán)一次變量i
都乘以一1。
【參考答案】
1voidprimeValue()
2(mti,j,half,yyllOO];
3tor(i?800;i>-500;i
4{half=i/2;
5for(3=2;"half:
6if0)
7break;
Bif(j>?half)
91yy(countI-i;
10count**;
111
12I
13for(1-0,j-1;i<count;
14(sum"jeyy11);
15j-ja-l;
161
17,
【易錯(cuò)分析】判斷一個(gè)數(shù)是否是素?cái)?shù)時(shí),自變量循環(huán)變量i從2遞增到i/2
第7套上機(jī)考試試題
下列程序的功能是:選出5000以卜符合條件的自然數(shù)。條件是:千位數(shù)字與百位數(shù)字
之和等于十位數(shù)字與個(gè)位數(shù)字之和,且千位數(shù)字與百位數(shù)字之和等于個(gè)位數(shù)字與千位數(shù)字之
差的10倍。計(jì)算并輸出這些四位自然數(shù)的個(gè)數(shù)count以及這些數(shù)的和sum。請(qǐng)編寫函數(shù)
calValueO實(shí)現(xiàn)程序的要求,最后調(diào)用函數(shù)writeDat(),把結(jié)果count和sum輸出到OUT.dat
文件中。
注意:部分源程序已經(jīng)給出。請(qǐng)勿改動(dòng)主函數(shù)main()和輸出數(shù)據(jù)函數(shù)writeDat()的內(nèi)容。
I?include<stdio.h>
2intcount,sum;
3voidcalValueO
4(
5
6}
7voidwriteDat()
81FILE*fp;
9fp"(open(??OOT.dat**,"***);
10fprintf(fp,"%d\n%d\n”,count,sum);
11fclosetfp);
12)
13voidmain"
14{count=sum=0;
15caXValuef);
16printf("iWi豺i的fl然count);
17printfZ足知的自然加好叼idW,sum);
18wri.teDatO;
191
第7套試題答案及詳解
【審題分析】分析題目可知,本題只要實(shí)現(xiàn)calValue。函數(shù)的功能即可。calValue。要實(shí)
現(xiàn)的功能是:選出5000以下符合條件的自然數(shù)。因此解答本題的關(guān)鍵在于如何將指定的條
件轉(zhuǎn)換成C語言表達(dá)武。
【解題思路】對(duì)于每個(gè)四位數(shù),用這個(gè)四位數(shù)除以1000,可得到這個(gè)四位數(shù)千位上的
數(shù)字輸給變量thou;這個(gè)四位數(shù)對(duì)1000求余然后再除以100,可得到這個(gè)四位數(shù)百位上的
數(shù)字輸給變量hum這個(gè)四位數(shù)對(duì)100求余然后再除以10,可得到這個(gè)四位數(shù)十位卜-的數(shù)
字輸給變量ten;這個(gè)四位數(shù)對(duì)10求余,可得到這個(gè)四位數(shù)個(gè)位卜的數(shù)字輸給變量data。
然后判斷表達(dá)式thou+hun==data+ten&&thou+hun==(data—thou)*10是否成立,如果
成立,則把這個(gè)數(shù)回到變量sum上.得到這些數(shù)的和,同時(shí)計(jì)數(shù)變餐count加1。
【參考答案】
1voidcaXValue()
2<inti,thou,hur?rten,data;
3tor(1=5000;i>-lOOC;i—)
44thou-1/lOCO;
5hun-iliOaO/lCO;
6ten-i1100/20;
7data?i110;
8if(thou+hun?=ten+data&&thou*hun-<data-thou)*10)
9(countff;
10gucn;
11I
121
13I
【易錯(cuò)分析】用求余運(yùn)算和除法運(yùn)算得到一個(gè)四位數(shù)的各個(gè)位上的數(shù)字。
【考點(diǎn)鏈接】求余運(yùn)算、除法運(yùn)算。
第8套上機(jī)考試試題
已知數(shù)據(jù)文件IN.dat中存有200個(gè)四位數(shù),并已淵用讀函數(shù)readDat。把這些數(shù)存入數(shù)
組a中,請(qǐng)編寫函數(shù)primecount(),其功能是:如果四位數(shù)各個(gè)位上的數(shù)字均是奇數(shù),則統(tǒng)
計(jì)出滿足此條件的個(gè)數(shù)count并把這些四位數(shù)按從人到小的順序存入數(shù)組b中。最后main()
函數(shù)調(diào)用寫函數(shù)writeDat(),把結(jié)果count以及數(shù)組b中符合條件的四位數(shù)輸出到OUT.dat
文件中。
注意:部分源程序已經(jīng)給出。程序中已定義數(shù)組a[200]、b[200J,已定義變量count。請(qǐng)
勿改動(dòng)數(shù)據(jù)文件IN.dat中的任何數(shù)據(jù)及主函數(shù)main。、讀函數(shù)readDat()和寫函數(shù)writeDat()
的內(nèi)容。
1linclude<stdio.h>
2tdefineMftX200
3inta[MAX],b]MAX)rcount=0;
4voidprimecountO
5(
6
71
8voidreadDarI)
9{mti;
10FILE*fp;
11fp?fopen(RIH.(iatw,"rn);
12for(i?*0;i*)
13fscant(fp.fd,",&a[i]);
14fclose(fp);
15I
16voidwrxteDat0
17|FILE*fp;
18inti;
19fp=fopenLOOT.&tl=“”);
,,
20fprintf(fpr%d\n**rcount);
21for(i?0;Ivcomt;[?+)
22fprintf(fpr”d\Z,b(i]);
23fclojse(fp);
24|
25voidn?in()
261inti;
27readDat();
28primecount0;
29printf("Wd蝴在做TdVT,count);
30for(i=0;i<count;i++)
31printf(-%db[i]);
32printf(w\n*);
33writeQat0;
34J
第8套試題答案及詳解
【審題分析】分析題目可知,本題只要實(shí)現(xiàn)primeCount。函數(shù)的功能即可。primeCount。
要實(shí)現(xiàn)的功能是:如果四位數(shù)各位上的數(shù)字均是奇數(shù),則統(tǒng)計(jì)出滿足此條件的個(gè)數(shù)count并
把這些四位數(shù)按從大到小的順序存入數(shù)組b中。因此解答本題的關(guān)鍵在于如何將一個(gè)四位數(shù)
拆分成單個(gè)數(shù)字,并判斷這些數(shù)字是否為奇數(shù)。
【解題思路】對(duì)于每一個(gè)四位數(shù),用這個(gè)四位數(shù)除以1000,可得到這個(gè)四位數(shù)千位上
的數(shù)字輸給變量thou;這個(gè)四位數(shù)對(duì)1000求余然后再除以100,可得劍這個(gè)四位數(shù)百位上
的數(shù)字輸給變量hun;這個(gè)四位數(shù)對(duì)100求余然后再除以10,可得到這個(gè)四位數(shù)十位上的數(shù)
寧輸給變量ten;這個(gè)四位數(shù)對(duì)10求余,可得到這個(gè)四位數(shù)個(gè)位上的數(shù)寧輸給變量data。
然后判斷表達(dá)式thou%2!=0&&hun%2l=0&&ten%2!=0&&data%2!=0是否成立,
如果成立,則把這個(gè)數(shù)賦給數(shù)組b,同時(shí)計(jì)數(shù)變最count加1。最后用雙重循環(huán)對(duì)數(shù)組b進(jìn)
行從大到小的排序。
【參考答案】
voidpri/necount()
inti.thou,hue,ten,data,j;
3for(i-0;i<200;
4Chou=a(i]/1000;
5hun=a(i)%1000/100;
6ten=a(i]%100/10;
7data-a|i]%10;
8if(thou%?ahun%2!=0&&ten%21?0&&data%2!-0)
9(b(count]=a[i];
10count";
111
12
13for(i-0;i<count-l;i+4)
14for(j=i*l;j<count;
15if(b[i]<b[jj)
16{data=b[i];
17b[i]-blj];
18b[j]-data;
19}
20)
【易錯(cuò)分析】用求余運(yùn)算和除法運(yùn)算得到一個(gè)四位數(shù)的各個(gè)位上的數(shù)字。
第9套上機(jī)考試試題
函數(shù)RData()實(shí)現(xiàn)從文件IN.dat中讀取一篇英文文章,存入到字符串?dāng)?shù)組original中:
請(qǐng)編寫函數(shù)encryptChar(),其功能是:按給定的替代關(guān)系對(duì)數(shù)組original中的所有字符進(jìn)行
替代后,仍存入數(shù)組original的對(duì)麻的位置上。最后調(diào)用函數(shù)WData(),把結(jié)果original輸出
到OUT.dat文件中。
替代關(guān)系:f(p)=p*llmod256(p是數(shù)組中某一個(gè)字符的ASCH值,f(p)是計(jì)算后新字符
的ASCII值),如果原字符的ASCII值是偶數(shù)或計(jì)算后f(p)值小于等于32,則該字符不變,
否則將f(p)所對(duì)應(yīng)的字符進(jìn)行替代。
原始數(shù)據(jù)義件存放的格式是:每行的寬度均小于80個(gè)字符。
注意:部分程序已給出。請(qǐng)勿改動(dòng)主函數(shù)main()、讀數(shù)據(jù)函數(shù)RData()和輸出數(shù)據(jù)函數(shù)
WData()的內(nèi)容。
第9套試題答案及詳解
【審題分析】分析題目可知,題中需要解決的問題就是實(shí)現(xiàn)encryptChar函數(shù)的功能問
題,而encryptChar函數(shù)的功能是:按給定的替代關(guān)系對(duì)數(shù)組original中的所有字符進(jìn)行替
代后,仍存入數(shù)組original的對(duì)應(yīng)的位置上。因此本題的關(guān)鍵在于如何用C程序?qū)崿F(xiàn)替代關(guān)
系的運(yùn)算。
【解題思路】題13中的“如果原字符的ASCII值是偶數(shù)或計(jì)算后f(p)值小于等于32,
則該字符不變,否則將f(p)所對(duì)應(yīng)的字符進(jìn)行替代”,可轉(zhuǎn)化為:如果原字符的ASCI值是奇
數(shù)且計(jì)算后f(p)值大于32,則該字符用f(p)所對(duì)應(yīng)的字符進(jìn)行替代,否則不變。在程序中的
語句是:if(*pf%2&&*pf*11%256>32)*pf=*pf*11%256。
【參考答案】
1voidencryptChar()
21inti;
3chait*pf;
4for(i=0;KmaxLine;i++)
5pf=original[iJ;
6while(*pf!0)
7(if<*pf%2“*pfll%256>32)
8,pf-*p£*ll%256;
9pf
10)
11
121
【易錯(cuò)分析】在“if(*pP/o2&&*pPMl%256>32)*pf=*pf*ll%256;”這句中表達(dá)式*pf%
2和表達(dá)式“*p/11%256>32”是與的關(guān)系,而不是或的關(guān)系
1Iinclude<stdio.h>
2tinclude《string.h)
3Sinclude<conio.h>
4linclude<etype.h>
5unsignedcharoriginal[50][80|;
6intmaxline=0;/?文草1Kli6打數(shù)?/
7intRData(void);
8voidWl^ta(void);
9voidencryptChar()
101
11
12)
13voidmain()
14{if(RDataO)
15{prints”數(shù)抑;文件IN.dat不能JPf!\n\007”):
16return;
17]
18encryptChar();
19WDataO;
20|
21intRData(void)
22(FILE*fp;
23inti-0;
24unsignedchar*p;
2Sif((fp?fopenClN.dat-r)—MULL)
第10套上機(jī)考試試題
已知數(shù)據(jù)文件lN.dat中存有200個(gè)四位數(shù),并已調(diào)用讀函數(shù)起adDat()把這些數(shù)存入數(shù)
組a中,請(qǐng)編寫函數(shù)diffVal(),其功能是:把一個(gè)四位數(shù)的千位數(shù)字上的值,減去百位數(shù)字
上的值,再減去十位數(shù)字上的值,最后減去個(gè)位數(shù)字上的值,如果得出的值大于等于0且原
四位數(shù)是奇數(shù),則統(tǒng)計(jì)出滿足此條件的個(gè)數(shù)count并把這些四位數(shù)按從小到大的順序存入數(shù)
組b中。最后調(diào)用寫函數(shù)writeDat(),把締果count以及數(shù)組b中符合條件的四位數(shù)輸出到
OUT.dat文件中。
注意:部分源程序已經(jīng)給出。程序中己定義數(shù)組a[200]、b|2001,已定義變量count。
請(qǐng)勿改動(dòng)數(shù)據(jù)文件IN.dat中的任何數(shù)據(jù)及主函數(shù)main。、闔數(shù)readDat。和寫函數(shù)writeDat。
的內(nèi)容。
?include?<stdio.h>
2fdefineMAX200
3inta(MAX)tbfMAXJ,count?0;
4voiddiffValO
5
6
7
8voidreadDdt()
9(inti;
10FILE*fp;
11fp■fopenriN.dat*,
12for(i?0;i<MAX;"?)
13fscanf(fp,"d,”,ia(i]);
14fclose(fp);
15]
16voidwriteDa^O
17(FILE.fp;
18int1;
19fp-fopenLOUT.dat,"w");
R
20fprint1(fpr%d\n"rcount);
21for(i=-0;i<count;i")
22fprintf(fpr"%d\n*rb[i]);
23fclose(fp);
24I
25voidMin()
26Iinti;
27ceadDatO;
28diXfValO;
29printf(嘴是條fl的數(shù)-*d\n”,count);
30for(i?0;i<count;i*+)
31printf(M%d,b(i|);
32printf(*\nw);
33writeDatO;
34)
26return1;
27while(fgets(original[ih80.fp)!口HULL)
28(p*strehr(original[i]r'\n');
29iffp>
30*p?0;
31i+1
32)
33maxline7;
34fclose(fp);
35return0;
36I
37voidWESata(void)
38{FILE*£p;
39mti;
40£p=fopen("OUT.dar*/%”;
42for(i-0;i<fnaxline;i*+)
42(prints(*is\n*,originalfil);
43fprintf(fp,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 獲得性肥胖癥的臨床護(hù)理
- 《支付寶產(chǎn)品介紹》課件
- 【培訓(xùn)課件】藥品安全性監(jiān)測與風(fēng)險(xiǎn)管理
- 銷售技能與知識(shí)的持續(xù)學(xué)習(xí)培訓(xùn)
- 競爭對(duì)手分析與發(fā)展方向計(jì)劃
- 私人銀行服務(wù)協(xié)議三篇
- 《銷售培訓(xùn)公司》課件
- 新浪微博生態(tài)相關(guān)行業(yè)投資規(guī)劃報(bào)告
- 工程和技術(shù)研究與試驗(yàn)發(fā)展服務(wù)行業(yè)相關(guān)投資計(jì)劃提議
- 風(fēng)險(xiǎn)投資回報(bào)預(yù)測計(jì)劃
- 《基于Halbach分布的初級(jí)永磁直線電機(jī)的電磁設(shè)計(jì)與分析》
- 光伏發(fā)電項(xiàng)目管理述職報(bào)告
- 2024年辦公室檔案管理工作總結(jié)模版(3篇)
- 2024-2025學(xué)年高一【數(shù)學(xué)(人教A版)】數(shù)學(xué)建?;顒?dòng)(1)-教學(xué)設(shè)計(jì)
- 2025年小學(xué)五年級(jí)數(shù)學(xué)(北京版)-分?jǐn)?shù)的意義(三)-3學(xué)習(xí)任務(wù)單
- 網(wǎng)絡(luò)信息安全工程師招聘面試題及回答建議(某大型央企)2025年
- 生物人教版(2024版)生物七年級(jí)上冊復(fù)習(xí)材料
- 公共體育民族操舞(廣西科技大學(xué))知到智慧樹章節(jié)答案
- 2024年煤礦個(gè)人工作總結(jié)例文(4篇)
- 兒童青少年肥胖食養(yǎng)指南(2024年版)
- 24秋國家開放大學(xué)《經(jīng)濟(jì)法學(xué)》形考任務(wù)(記分作業(yè))1-4參考答案
評(píng)論
0/150
提交評(píng)論