版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
家三級(jí)信息管理技術(shù)機(jī)試模擬試卷3
(共9套)
(共9題)
明家三級(jí)信息管理技術(shù)機(jī)試模擬試卷第
1套
一、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)
1、已知IN7.DAT中存有200個(gè)4位數(shù),并已調(diào)用讀函數(shù)readDat。把這些數(shù)存入數(shù)
組a中,請(qǐng)編制一函數(shù)jsVal(),其功能是:依次從數(shù)組a中取出一個(gè)數(shù),如果該4
位數(shù)連續(xù)大丁該4位數(shù)以后的5個(gè)數(shù)且該數(shù)是奇數(shù),則統(tǒng)訂出滿足此條件的數(shù)的個(gè)
數(shù)ent,并把這些4位數(shù)按從小到大的順序存入數(shù)組b中,最后調(diào)用寫函數(shù)
writeDat()把結(jié)果ent及數(shù)組b中符合條件的4位數(shù)輸出到OUT7.DAT文件中。注
意:部分源程序已給出。程序中已定義數(shù)組:al200],”200],已定義變量:ent。
請(qǐng)勿改動(dòng)主函數(shù)main。、讀函數(shù)readDat。和寫函數(shù)writeDat。的內(nèi)容。試題程序:
#include<stdio.h>#defineMAX200inta[MAX],b[MAX],cn(=0;voidwriteDat();
voidjsVal(){voidreadDat(){inti;FILE*fp;fp=fopen("IN7.DAT","r");for(i=0;i
<MAX;i++)fscanf(fp,"%d",&a[i]);close(fp);)main(){inti;readDat();jsVal();
printf("滿足條件的數(shù)二%d\n\ent);for(i=0;i<ent;i++)printf("%d",b[i]);printf
("\n");writeDat();}voidwriteDat(){FILE*fp;inti;fp=fopcn("OUT7.DAT'\"w");
fprintf(fp,"%d\n",ent);for(i=0;i<ent;i++)fprintf(fp,"%d\n",bfi]);fclose(fp);)
標(biāo)準(zhǔn)答案:voidjsVal(){inti,j,flag=O;intk;for(i=0;i<MAX-5;i++){for(j=i+l;j
V=i+5;j++)/*如果當(dāng)前數(shù)比后面的5個(gè)數(shù)都大,則給標(biāo)志變量flag賦值1*/{if
(a[i]>afjl)flag=l;else{flag=O;break;}/*否則給標(biāo)志變量ilag賦值0并退出循環(huán)*/
if(a[i]%2=0)/*如果該數(shù)是偶數(shù),也給標(biāo)志變量flag賦值0*/flag=0;}if(flag==l>
/*將滿足條件的數(shù)存入數(shù)組b中,并統(tǒng)計(jì)滿足條件的數(shù)的個(gè)數(shù)*/
{b[cnt]=a[i];cnt++;}}for(i=0;i<cnt-l;i++)/*利用選擇法對(duì)b數(shù)組中的元素進(jìn)行
從小到大的排序*/for(j=i+l;jVcnt;j++)if(b[i]>b[j]){k=b[i];b[i]=b[j];b[j]=k;))
知識(shí)點(diǎn)解析:根據(jù)題意可知,要編制函數(shù)的功能有兩部分:一是找出滿足條件的4
位數(shù),二是對(duì)找出的數(shù)進(jìn)行從小到大排序。首先利用一個(gè)for循環(huán)來依次從數(shù)組中
取得4位數(shù),接著用當(dāng)前得到的4位數(shù)與該數(shù)后面的5個(gè)數(shù)依次進(jìn)行比較,如果該
數(shù)比后面的5個(gè)數(shù)都大,則給標(biāo)志變量flag賦值1,接著對(duì)flag進(jìn)行判斷,如果不
為I,則該數(shù)肯定不符合條件,直接去取下一個(gè)數(shù)。若flag值為1,再來判斷該數(shù)
是否是奇數(shù),如果該數(shù)又是奇數(shù),則把該數(shù)加入到數(shù)組b中。這樣就可以依次取出
符合條件的數(shù)。然后利用選擇法對(duì)b數(shù)組中的元素進(jìn)行從小到大的排序。
國家三級(jí)信息管理技術(shù)機(jī)試模擬試卷第
2套
一、程序設(shè)計(jì)題(本題共7題,每題7.0分,共I分。)
1、已知數(shù)據(jù)文件IN87.DAT中存有300個(gè)4位數(shù),并已調(diào)用函數(shù)readDal。把這些
數(shù)存入數(shù)組a中,請(qǐng)編制一函數(shù)jsVakie。,其功能是:求出千位數(shù).卜.的數(shù)加個(gè)位數(shù)
上的數(shù)等于百位數(shù)上的數(shù)加十位數(shù)上的數(shù)的個(gè)數(shù)cnl,再求出所有滿足此條件的4
位數(shù)平均值pjzl,以及所有不滿足此條件的4位數(shù)的平均值pjz2,最后調(diào)用函數(shù)
wrileDat。把結(jié)果ent,pjzl,pjz2,輸出到oul87.dat文件中。例如:6712,
6+2=7+1,則該數(shù)滿足條件,計(jì)算平均值pjzl,且個(gè)數(shù)cr」=cnl+l。8129,
8+9/1+2,則該數(shù)不滿足條件,計(jì)算平均值pjz2。注意:部分源程序己給出。程
序中已定義數(shù)組:a[300],b[300b已定義變量:ent,pjzl,pjz2.請(qǐng)勿改動(dòng)主函
數(shù)main。、讀函數(shù)readDatQ和寫函數(shù)writedat。的內(nèi)容。試題程序:#include<
stdio.h>inta[300],cnt=O;doublepjz1=0.0,pjz2=0.0;voidjsValue(){}main(){inti;
readDatO;jsValue();writeDat();printf("cnt=%(.l\n滿足條件的平均值pjzl=%7.21f\n不
n
滿足條件的平均值pjz2=%7521f\n,ent,pjzl,pjz2);}readDat(){FILE*fp;inti;
fp=fopen("in87.dat","r");for(i=0;i<300;i++)fscanf(fp,"%d,'\&a[i]);fclose(fp);}
writcDat(){FILE*fp;inti;fp=fopcn("out87.dat,',"wH);
fprintf(fp,"%d\n%7.2IAn%7.21f\n",cnt.pjzl,pjz2);fclosc(fp);}
標(biāo)準(zhǔn)答奈:voidjsValue(){inti,thou,hun,ten,data,n=0;for(i=0;i<300;i++)
{thou=a[i]/1000;/*求四位數(shù)的T?位數(shù)字*/hun=a[i]%1000/l00;/*求四位數(shù)的百位數(shù)
字*/ten=a[i]%100/10:/*求四位數(shù)的十位數(shù)字*/data=a[i]%10:/*求四位數(shù)的個(gè)位數(shù)字
*/if(lhou+da[a==hun+len)/*如果千位數(shù)加個(gè)位數(shù)等于百位數(shù)加十位數(shù)*/(cnl++;/*
則統(tǒng)計(jì)滿足條件的數(shù)的個(gè)數(shù)*/pjzl+=a[i];/*將滿足條件的數(shù)求和*/}else{n++;/*否
則統(tǒng)計(jì)不滿足條件的數(shù)的個(gè)數(shù)*/pjz2+=a[i];/*將不滿足條件的數(shù)求和*/}}
pizl/=cm;/*求滿足條件的數(shù)的平均值*/pjz2/=n;/*求不滿足條件的數(shù)的平均值*/}
知識(shí)點(diǎn)解析:本題考查的知識(shí)點(diǎn)如下:⑴運(yùn)算符"%''及個(gè)的使用。(2)循環(huán)結(jié)構(gòu)
及選擇結(jié)構(gòu)的使用。在本題中,首先要將一個(gè)4位數(shù)的千位、百位、十位、個(gè)位
拆成獨(dú)立的數(shù)字。這里借助特殊運(yùn)算符號(hào)“%”(取余)和“尸(整除),拆分方法略。然
后判斷符合千位數(shù)十個(gè)位數(shù)二百位數(shù)+十位數(shù)的數(shù)的個(gè)數(shù)。依次求得符合各種條件的
數(shù)的和及其平均值。
國家三級(jí)信息管理技術(shù)機(jī)試模擬試卷第
3套
一、程序設(shè)計(jì)題(本題共[題,每題7.0分,共7分。)
1、已知數(shù)據(jù)文件INI4.DAT中存有200個(gè)4位數(shù),并已調(diào)用讀函數(shù)readDal()把
這些數(shù)存入數(shù)組a中,請(qǐng)編制?個(gè)函數(shù)jsVal(),其功能是:把千位數(shù)字和卜位數(shù)
字重新組成一個(gè)新的十位數(shù)ab(新十位數(shù)的十位數(shù)字是原4位數(shù)的千位數(shù)字,新十
位數(shù)的個(gè)位數(shù)字是原4位數(shù)的十位數(shù)字),以及把個(gè)位數(shù)字和百位數(shù)字組成另一個(gè)
新的十位數(shù)cd(新十位數(shù)的十位數(shù)字是原4位數(shù)的個(gè)位數(shù)字,新十位數(shù)的個(gè)位數(shù)字
是原4位數(shù)的百位數(shù)字),如果新組成兩個(gè)十位數(shù)ab-cd>=0且ab-cd<=10且兩個(gè)
數(shù)均是奇數(shù),同時(shí)兩個(gè)新十位數(shù)字均不為零,則將滿足此條件的4位數(shù)按從大到小
的順序存入數(shù)組b中,并要計(jì)算滿足上述條件的4位數(shù)的個(gè)數(shù)ent,最后調(diào)用寫函
數(shù)writeDat。把結(jié)果ent及數(shù)組b中符合條件的4位數(shù)輸出到OUT14.DAT文件
中。注意:部分源程序已給出。程序中己定義數(shù)組:a[200],hf200],已定義變
fi::onto請(qǐng)勿改動(dòng)主函數(shù)main。、讀函數(shù)readDat。和寫函數(shù)writeDat。的內(nèi)容。
試題程序:#include<stdio.h>#defineMAX200intalMAXJ,b[MAX],ent=0;
voidjsVal(){}voidreadDati){inti;FILE*fp;ip=fopen("lN14.DAT”,T);ior(i=0;
i<MAX;i++)fscanf(fp,"%d",&a[i]);fclosc(fp);}main(){inti;readDat();jsVal();
printf("滿足條件的數(shù)二%(1\11",ent);for(i=0;i<ent;i++)printf("%d",b[i]);
printf("\n");writeDatO;}writeDat(){FILE*fp;inti;fp=fopen("OUT14.DAT","w");
fprintf(fp,"%d\nH,ent);for(i=0;i<ent;i++)fprintf(fp,"%d\n",b[i]);fclose(fp);}
標(biāo)準(zhǔn)答菱:voidjsVal(){inti,thou,hun,ten,data,j;intab,cd;for(i=0;i<200;i++)
{thou=a[i]/1000:/*求四位數(shù)的千位數(shù)字為hun=a[i]%1000/100;/*求四位數(shù)的百位
數(shù)字*/ten=a[i]%i00/10:/*求四位數(shù)的十位數(shù)字*/data=a|i]%10;/*求四位數(shù)的個(gè)位
數(shù)字*/ab=10*thou+ten;/*把千位數(shù)字和十位數(shù)字重新組成一個(gè)新的十位數(shù)ab*/
cd=10*data+hun;/*把個(gè)位數(shù)字和百位數(shù)字組成另一個(gè)新的十位數(shù)cd*/if((ab-cd)>
=0&&(ab-cd)<=10&&ab%2==1&&cd%2==1&&ab!=0&&cd!=0)/*如果ab-cd
>=0且ab-cd<=10且兩個(gè)數(shù)均是奇數(shù)同時(shí)兩個(gè)新十位數(shù)字均不為零*/{b[ent]=a
用;/*則把滿足條件的數(shù)存入數(shù)組b中*/cnl++;/*統(tǒng)計(jì)滿足條件的數(shù)的個(gè)數(shù)*/}}for
(i=0;i<cnt-l;i++)/*將數(shù)組b中的數(shù)按從大到小的順序排列*/for(j=i+i;jVent;j++)
if(b[i]<b[j]){data=b[i];b[i]=b[j];b[j]:data;})
知識(shí)點(diǎn)解析:本題看起來似乎比較煩瑣,但只要仔細(xì)分析,把思路理清,還是不難
解決的。由題意可以列出解題步驟如下:(1)求得當(dāng)前所取得的整數(shù)的千位、百
位、十位、個(gè)位上的數(shù)字值,可以借助使用(除法)與"%''(取余)兩個(gè)運(yùn)算符。
(2)按照要求(第一個(gè)十位數(shù);新十位數(shù)的十位數(shù)字是原4位數(shù)的千位數(shù)字,新十位
數(shù)的個(gè)位數(shù)字是原4位數(shù)的十位數(shù);第二個(gè)十位數(shù):新十位數(shù)的十位數(shù)字是原4位
數(shù)的個(gè)位數(shù)字,新十位數(shù)的個(gè)位數(shù)字是原4位數(shù)的百位數(shù)字)把求得的各個(gè)位上的
數(shù)字值組成兩個(gè)新的十位數(shù)。(3)對(duì)新組成的兩個(gè)十位數(shù)進(jìn)行條件判斷(判斷條件的
語句是“if((ab-cd)>=0&&(ab-cd)<=10&&ab%2==1&&cd%2==1&&ab!=O&&
cd!=O)"),如果滿足條件,則把原來的4位數(shù)放到數(shù)組b中,同時(shí)用一個(gè)計(jì)數(shù)器變
量ent求出滿足條件的4位數(shù)的個(gè)數(shù)。(4)對(duì)數(shù)組b中的4位數(shù)用選擇法進(jìn)行從大到
小排序。
盟家三級(jí)信息管理技術(shù)機(jī)試模擬試卷第
4套
一、程序設(shè)計(jì)題(本題共[題,每題7.0分,共7分。)
1、已知在文件IN.DAT中存有100個(gè)產(chǎn)品銷售記錄,每個(gè)產(chǎn)品銷售記錄由產(chǎn)品代
碼dm(字符型4位)、產(chǎn)品名稱me(字符型10位)、單價(jià)dj(整型)、數(shù)量si(整型)、
金額je(長整型)5部分組成。其中:金額=單價(jià)x數(shù)量。函數(shù)ReadDatO讀取這100個(gè)
銷售記錄并存入結(jié)構(gòu)數(shù)組sell中。請(qǐng)編制函數(shù)SoriDatO,其功能要求:按產(chǎn)品代碼
從大到小進(jìn)行排列,若產(chǎn)品代碼相同,則按金額從大到小進(jìn)行排列,最終排列結(jié)果
仍存入結(jié)構(gòu)數(shù)組sell中,最后調(diào)用函數(shù)WriteDatO把結(jié)果輸出到文件OUT10.DAT
中。部分程序已經(jīng)給出。請(qǐng)勿改動(dòng)主函數(shù)main。、讀數(shù)據(jù)函數(shù)ReadDat。和輸出數(shù)
據(jù)函數(shù)WriteDat。的內(nèi)容。#inckide<stdio.h>#include<mem.h>#include<
string.h>#include<conio.h>#include<s(dlib.h>#definsMAX100typedef
struct)chardm[5];/*產(chǎn)品代碼*/char/*產(chǎn)品名稱*/intdj;/*單價(jià)*/intsi;/*數(shù)
量*/longje;/*金額*/}PRO;PROsell[MAX];voidReadDat();voidWriteDatO;void
SortDat(){}voidmain(){memset(sell,0,sizeof(sell));ReadDat();SortDat();
WriteDatO;)voidRcadDat(){FILE*fp;charstr[80],ch[l1];inti;fp=fopcn
("IN.DAT",''r");for(i=0;i<100;i++){fgets(str,80,fp);memcpy(sell[i].dm,str,4);
memcpy(sell[i].mc,str+4,10);memepy(ch,str+14,4);ch[4]=0;sell[i].dj=atoi(ch);
memcpy(ch,str+18,5);ch[5]=0;sell[i].sl=atoi(ch);sell[i].je=(long)sell[i].dj*sell[i].sl;}
fclose(fp);}voidWriteDat(void){FILE*fp;inti;fp=fopen("OUT10.DAT","w");
for(i=0;i<IOO:i++)
{printf("%s%s%4d%5d%5d\n,',sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i],je);
fprintf(fp,"%s%s%4d%5d%5d\n",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);}
fclose(fp);}
標(biāo)準(zhǔn)答案:voidSortDat(){inti,j;PROxy;for(i=0;i<99;i++)for(j=i+1;j<100;j++)
if(strcmp(sell[i].dm,sell[j].dm)<0){xy=sell[i];sell[i]=sell[j];sell[j]=xy;)else
if(strcmp(sell[i].dm,sei1[j].dm)==0)if(sell[i].je<sell[j].je){\y=sell[i];sell[i]=sell[j];
sell|j]=xy;}}
知識(shí)點(diǎn)解析:該程序?qū)儆诮Y(jié)構(gòu)體數(shù)據(jù)的應(yīng)用,考核的知識(shí)點(diǎn)為:(1)結(jié)構(gòu)體類型成
員變量的基本概念;(2)比較排序的算法。本題的解題思路是;先按產(chǎn)品代碼進(jìn)行
降序排列,若代碼相同則按金額進(jìn)行降序排列。排序的算法為:每次選定一個(gè)位置
的元素的代碼和它后面所有.元.索的代碼相比較,如果前者小于?后者則兩者交換,
如果兩者代碼相等則按金額比較。完成比較i趟后,此位置元素的代碼就不小于其
后面所有元素的代碼。比較一直進(jìn)行到所有元素均被訪問后結(jié)束,一共需,要比較
100趟,每趟需要比較100-j次。在C語言中字符串比較不能直接通過“V”或者
實(shí)現(xiàn),必須調(diào)用strcmpO函數(shù)來實(shí)現(xiàn)。此類題目都涉及結(jié)構(gòu)體變量的分量預(yù)算
符號(hào)’…。關(guān)于結(jié)構(gòu)體變量與分量的概念是三級(jí)考試的一個(gè)重點(diǎn),考生在編寫程序
的時(shí)候一定要留心此處。程序的流程是:首先調(diào)用mcmset。函數(shù),該函數(shù)的功能
是將sell數(shù)組的前sizeof(sell)個(gè)字節(jié)的值賦為0。然后調(diào)用ReadDat。函數(shù)讀入數(shù)
據(jù)。由SorlDal。函數(shù)處理后,再由WriieDat()函數(shù)寫回文件OUT.DAT中。答案解
析如下:voidSoitDat(){inti,j;PROxy;/*定義結(jié)構(gòu)體變量xy*/for(i=0;i<99;i++)
產(chǎn)雙重tor循環(huán)將sell數(shù)組元素中的dm兩兩進(jìn)行比較,進(jìn)行降序排列學(xué)tor(j=i+l;j
<100;j++)if(strcmp(sen[i].dm,sell(j]dm)VO){/*判斷前者產(chǎn)品代碼是否小于后者*/
xy=sell[i];/*若小于兩條記錄交換位置*/sell[i]=seH[j];seH[j]=xy;}else
if(strcmp(sell[il.dm,sell[j].dm)=0)/*否則再判斷前者產(chǎn)品代碼是否等于后者列
if(sell|i].jeVse川j].je)/*若相等,則判斷前者的金額是否小于后者*/(xy=seH[i];/*若
小于兩彖記錄位置*/sell[i]:seH[j];二xy;}}
家三級(jí)信息管理技術(shù)機(jī)試模擬試卷第
5套
一、程序設(shè)計(jì)題(本題共7題,每題7.0分,共7分。)
1、請(qǐng)編制程序,要求:將文件IN92.DAT中的200個(gè)整數(shù)讀入數(shù)組xx中,求出數(shù)
組xx中最大數(shù)max及最大數(shù)的個(gè)數(shù)ent和數(shù)組xx中值能被3整除或能被7整除的
數(shù)的算術(shù)平均值pj(保留兩位小數(shù)),結(jié)果max,cnl,pj輸出到out92.dar中。部分
程序、讀函數(shù)read_dal(inlxx[200])及輸出格式已給出。試題程序:#include<
conio.h>#includestdio.h>#defineN200voidread_dat(intxx[N]){inti,j;FILE
*fp;fp=fopen("IN92.DAT",,,r");for(i=0;i<20;i++){for(j=0:j<10;j++)
{fscanf(f]3,"%d,",&xx[i*10+j]);printf("%d",xx[i*10+j]);}printf("\n");}fclose(fp);}
voidmain(){inti,k,cnt,xx[N],max:floatpj;FILE*fw;longj=0;clrscr();
fw=fopen("out92.dat","w");read_dat(xx);
printf("\n\nmax=%d,cnt=%d,pj=%6.2f/n",max,cnt,pj);
fprintf(fw,"%d\n%d\n%6.2f\n",max,cnt,pj);fclose(fw);)
標(biāo)準(zhǔn)答案:voidmain(){inti,k,cnt,xx[N],max;floatpj;FILE*fw;longj=0;clrscr();
fw=fopen(,,out92.dar,\"w");read_dar(xx);max=xx[0];for(i=l,k=0;i<N;i++){if(xx[i]>
max)max=xx[i];求出數(shù)組xx中最大數(shù)max*/if(xx[i]%3==0||xx[i]%7==0)
{j+=xx[i];/*求出數(shù)組xx中值能被3整除或能被7整除的數(shù)的總和*/k++;}}
for(i=0,cnt=0;i<N;i++)if(xx[i]==max)cnt++;/*求出數(shù)組xx中最大數(shù)max的個(gè)數(shù)*/
pj=(float)0*IOO/k)/iOO;尸求出數(shù)組xx中值能被3整除或衩7整除的數(shù)的平均值列
printf("\n\nmax=%d,cnt=%d,pj=%6.2f\n'\max,cnt,pj);
fprin(f(fw,,'%d\n%d\n%6.2i\n",max,cn(,pj);fclose(fw);}
知以點(diǎn)解析:本題考杳的知識(shí)點(diǎn)如下:⑴運(yùn)算符“%”的使用。(2)判斷結(jié)構(gòu)中多個(gè)
條件的布爾運(yùn)算。首先,要找出數(shù)組中最大的元素。先定義第1個(gè)元素為最大的
元素,然后依次和后面的元素比較,若后面的數(shù)中有大于第1個(gè)元素的,則將這個(gè)
數(shù)定義為最大的元素。再和后面的數(shù)進(jìn)行比較。一個(gè)數(shù)a除以b取余所得的數(shù)為
0,則a能被b整除。根據(jù)題意可知,被3整除和被7整除兩個(gè)條件滿足一個(gè)即
可,所以兩個(gè)條件之間用“或”運(yùn)算。在本題中,要求算術(shù)平均值保留兩位小數(shù)。使
用的方法是:將和乘以100除以個(gè)數(shù)強(qiáng)制類型轉(zhuǎn)換后再除以100。為了保證和有
效,我們定義了一個(gè)長整型變量來記錄和。因?yàn)閭€(gè)數(shù)也為整型,運(yùn)算符“二在這里
的含義是整除,而我們要保留小數(shù),所以要使用強(qiáng)制類型轉(zhuǎn)換將和乘以100的結(jié)果
轉(zhuǎn)換為浮點(diǎn)類型,這樣就可以實(shí)現(xiàn)保留兩位小數(shù)。
家三級(jí)信息管理技術(shù)機(jī)試模擬試卷第
6套
一、程序設(shè)計(jì)題(本題共7題,每題7.0分,共7分。)
1、函數(shù)ReadDatO的功能是實(shí)現(xiàn)從文件ENG95.IN中讀取一篇英文文章,存入到字
符串?dāng)?shù)組xx中。請(qǐng)編制函數(shù)encryChar(),按給定的替代關(guān)系對(duì)數(shù)組xx中所有字符
進(jìn)行替代,仍存入數(shù)組xx的對(duì)應(yīng)的位置上,最后調(diào)用函數(shù)WriteDat。把結(jié)果xx輸
出到文件PS95.DAT中。替代關(guān)系:f(p)=p*llmod256(p是數(shù)組xx中某一個(gè)字符
的ASCCH,f(p)是計(jì)算后新字符的ASCH值),如果計(jì)算后f(p)的值小于等于32或
f(p)對(duì)應(yīng)的字符是大寫字母,則該字符不變,否則將f(p)所對(duì)應(yīng)的字符進(jìn)行替代。
注意;部分源程序已給出。原始數(shù)據(jù)文件的存放格式是每行的寬度均小于80個(gè)字
符。請(qǐng)勿改動(dòng)主函數(shù)main。、讀函數(shù)ReadDatO和寫函數(shù)WriteDaK)的內(nèi)容。試題
程序:#include<conio.h>#include<sldio.h>#include<string.h>#include<
ctypc.h>unsignedcharxx[50][80];intmaxline=0;intRcadDat(void);void
WriteDat(void);voidencryChar(){}voidmain(){clrscr();if(ReadDat()){printf("數(shù)據(jù)
文件ENG95.IN不能打開!\n'007");return;)encryChar();WriteDatO;)int
ReadDat(void){FILE*fp;inti=0;unsignedchar*p;
if((fp=fopen("ENG95.IN","r"))==NULL)return1;while(fgets(xx[i],80,fp)!=NULL)
{p=strchr(xx[i],,\n,);if(p)*p=0;i++;}maxline=i;fclose(fp);return0;}voidWriteDat()
{FILE*fp;inti;fp=fopen(Hps95.dat","\v");for(i=0;i<maxline;i++)
{printf(n%s\n",xx[i]);fprintf(fp,"%s\n",xx[i]);}fclose(fp);}
標(biāo)準(zhǔn)答案:voidcncryChar(){inti;char*pf;for(i=0;i<maxline;i++){pf=xx[i];/*指
針pf指向該行第一個(gè)字符*,while(*pf!=0){1%256>=,A,&&*pf*ll%256
<=N,)||*pf*ll%256<=32)產(chǎn)如果計(jì)算的值小丁?等于32或刈成的字符是大寫字母
*/{pf++;/則不做改變,指向下一個(gè)字符*/continue;/*退出本次循環(huán)*/}
*pf=*p#ll%256;/*否則用新字符取代原有字符*/pf++;/*指向下一個(gè)字符*/}}}
知識(shí)點(diǎn)解析:本題考杳的知識(shí)點(diǎn)如卜;(1)字符對(duì)應(yīng)的ASCII碼。(2)判斷結(jié)構(gòu)中多
個(gè)條件的“或”運(yùn)算。(3)退出一次循環(huán)。(4)二維數(shù)組的訪問。本題中,將數(shù)據(jù)存放
在一個(gè)二維數(shù)組中,可以定義一個(gè)指向數(shù)組每一行的指針。初始時(shí),指針指向該行
的第一個(gè)元素,隨著地址增加,指針指向后面的元素。在C語言中,字符可參與
任何整數(shù)運(yùn)算。實(shí)際上,是字符的ASCH碼參與了運(yùn)算。所以可以直接用字符代
入f(p)的關(guān)系式中求出替換字符。若f(p)對(duì)應(yīng)的字符是大寫字母或f(p)W32,則該字
符不變。只有當(dāng)字符大于等于A小于等于Z時(shí),才是大寫字母,所以這兩個(gè)條件
之間用''與"運(yùn)算。而字符是大寫字母與t(p)W32兩條件滿足一個(gè)即可,所以這兩個(gè)
條件之間用“或”運(yùn)算。若字符不變,則可不必計(jì)算替換字符,使用continue跳出本
次循環(huán),進(jìn)入下一次循環(huán)的條件判斷中。因?yàn)檫@里不是直接退出循環(huán)結(jié)構(gòu),所以不
能使用break語句。
國家三級(jí)信息管理技術(shù)機(jī)試模擬試卷第
7套
一、程序設(shè)計(jì)題(本題共7題,每題7.0分,共7分。)
1、已知數(shù)據(jù)文件IN86.DAT中存有200個(gè)4位數(shù),并己調(diào)用讀函數(shù)readDat。把這
些數(shù)存入數(shù)組a中,請(qǐng)編制一函數(shù)jsVal(),其功能是;把千位數(shù)字和十位數(shù)字重新
組合成一個(gè)新的十位數(shù)ab(新十位數(shù)的H立數(shù)字是原4位數(shù)的千位數(shù)字,新十位數(shù)
的個(gè)位數(shù)字是原4位數(shù)的十位數(shù)字),以及把個(gè)位數(shù)字和百位數(shù)字組成另一個(gè)新的
十位數(shù)cd(新十位數(shù)的十位數(shù)字是原4位數(shù)的個(gè)位數(shù)字,新十位數(shù)的個(gè)位數(shù)字是原
4位數(shù)的百位數(shù)字),如果新組成的兩個(gè)十位數(shù)ab>cd,a5必須是偶數(shù)且能被5整
除,cd必須是奇數(shù),同時(shí)兩個(gè)新十位數(shù)字均不為0,則將滿足此條件的4位數(shù)按從
大到小的順序存入數(shù)組b中,并要計(jì)算滿足上述條件的4位數(shù)的個(gè)數(shù)ent,最后調(diào)
用寫函數(shù)writeDat。把結(jié)果ent及數(shù)組b中符合條件的4位數(shù)輸出到OUT86.DAT文
件中。注意:部分源程序已給出。程序中已定義數(shù)組:a[200],b[200],已定義變
量:cnl。請(qǐng)勿改動(dòng)主函main。、讀函數(shù)readDal。和寫函數(shù)wrileDat。的內(nèi)容。試
題程序:#include<stdio.h>#defineMAX200inta[MAX],b[MAX],cnt=0;void
jsVal(){}voidreadDat(){inti;FILE*fp;fp=fopen("IN86DAT","r'')for(i=0;i<
MAX;i++)fscanf(fp,"%d",&a[i]);fclose(fp);}main(){inti;readDat();jsval();printf("
滿足條件的數(shù)=%d\n”,ent);for(i=0;i<cnt;i++)prinlf("%d"<b[i]);prin(f("\n");
writeDat();}writeDat(){FILE*fp:inti;fp=fopen("OUT86.DAT";,w");
fprintf(fp."%d\n".cnt):for(i=0:i<cnt:i++)fprintf(fp,"%d\n".b[i]):fclose(fp):}
標(biāo)準(zhǔn)答案:voidjsVal(){inii,thou,hun,ten,data,j;intab,cd;for(i=0;i<200;i++)
{thou=a[i]/1000;/*求四位數(shù)的千位數(shù)字*/hun=a[i]%1000/100;/*求四位數(shù)的百位數(shù)
字*/ten=a[i]%100/10;/*求四位數(shù)的十位數(shù)字*/data=a[i]%10;/*求四位數(shù)的個(gè)位數(shù)字
*/ab=chou*IO+ten;/*把千位數(shù)和十位數(shù)重新組合成一個(gè)新的十位數(shù)ab*/
cd=data*10+hun;/*把個(gè)位數(shù)和百位數(shù)組成另一個(gè)新的十位數(shù)cd*/if((ab-cd>
0)&&(ab%2!=l&&ab%5==0)&&cd%2==l&&ab!=0&&cd!=0)/*如果ab>cd,ab是
偶數(shù)且能被5整除,cd是變數(shù),且兩個(gè)數(shù)均不為0*/{b〔cnt]=a[i];/*將滿足條件的
數(shù)存入數(shù)組b中*/cnt++;/*統(tǒng)計(jì)滿足條件的數(shù)的個(gè)數(shù)}}for(i=0;iVcnt-l;i++)/*將
數(shù)組b中的數(shù)按從大到小的順序排列*/for(j=i+l;j〈cni;j++)if(b[i]〈b[j]){data=b[i];
b[i]=b[j];b[j]=data;})
知識(shí)點(diǎn)解析:本題考查的知識(shí)點(diǎn)如下:(1)將一個(gè)4位整數(shù)各位上的數(shù)轉(zhuǎn)變成單獨(dú)
的個(gè)位數(shù)。(2)判斷結(jié)構(gòu)中多個(gè)條件的布爾運(yùn)算。(3)循環(huán)的使用.(4)數(shù)據(jù)的排
序。在本題中,首先要將一4位數(shù)的千位、百位、十位、個(gè)位拆成獨(dú)立的數(shù)字。
這里借助特殊運(yùn)算符號(hào)“%”——取余和一整除.將1個(gè)4位數(shù)整除1000則可
得到其千位上的數(shù)字,將其除以1000取余再整除100則可得百位上的數(shù)字,除以
100取余再整除10則可得十位上的數(shù)字,除以10取余則得個(gè)位上的數(shù)字。若一個(gè)
數(shù)除以2取余為0,則這個(gè)數(shù)是偶數(shù)。由題意可知,各個(gè)條件必須同時(shí)滿足,所以
各條件之間用"與''運(yùn)算。先將符合條件的數(shù)存入數(shù)組b中,再對(duì)b中的數(shù)據(jù)進(jìn)行排
序。排序采用“選擇排序法
國家三級(jí)信息管理技術(shù)機(jī)試模擬試卷第
8套
一、程序設(shè)計(jì)題(本題共1題,每題].0分,共I分。)
1、函數(shù)ReadDat。實(shí)現(xiàn)從文件ENG.IN中讀取一篇英文文章,存入到字符串?dāng)?shù)組xx
中:請(qǐng)編制函數(shù)encryp〔Char(),按給定的替代關(guān)系對(duì)數(shù)組xx中的所有字符進(jìn)行替
代,仍存入數(shù)組xx的對(duì)應(yīng)的位置上,最后調(diào)用函數(shù)WritcDal()把結(jié)果xx輸出到文
件PS1.DAT中。替代關(guān)系:f(p)=p*llmod256(p是數(shù)組中某一個(gè)字符的ASCII
值,f(p)是計(jì)算后新字符的ASCII值),如果計(jì)算后即)值小于等于32或大于130,
則該字符不變,否則將f(p)所對(duì)應(yīng)的字符進(jìn)行替代。原始數(shù)據(jù)文件存放的格式是:
每行的寬度均小于80個(gè)字符。部分程序已經(jīng)給出。請(qǐng)勿改動(dòng)主函數(shù)main。、讀數(shù)
據(jù)函數(shù)ReadDal。和輸出數(shù)據(jù)函數(shù)WriteDat。的內(nèi)容。#include<stdio.h>#include
<string.h>#include<conio.h>#include<ctype.h>unsignedcharxx[50][80];int
maxline=0;/*文章的總行數(shù)intReadDat(void);voidWriteDat(void);void
cncryptChar(){}voidmain(i{clrscr();if(RcadDat()){printf("數(shù)據(jù)文件ENG.IN不能
打開!\n\007");return;}encryptChar();WriteDat();}intReadDat(void){FILE*fp;int
i=0;unsignedchar*p;if((fp=fopcn(,,cng.in","r"))==NULL)return1;
while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],'\n');if(p)*p=O;i+十;}maxline=i;
fclose(fp);return0;}voidWriteDat(void){FILE*fp;inti;fp=fopen("psl.dat",,"w");
for(i=0;i<maxline;i++){printf("%s\n",xx[i]);fprintf(fp,"%s\n",xx[i]);}fclose(fp);}
標(biāo)準(zhǔn)答案:voidcncryptChar(){inti;char*pf;for(i=0;i<maxline;i++){pf=xx[i];
while(*pr!=0){if(*pPll%256>130||*pf*l1%256<=32);else*pf=*pfH1%256;
pf++;})}
知識(shí)點(diǎn)解析:該程序?qū)儆趯?duì)字符串處理類型的題目,考核的知識(shí)點(diǎn)為:(1)按給定
關(guān)系計(jì)算字符的新ASCH值;(2)根據(jù)條件進(jìn)行判斷;(3)根據(jù)判斷的結(jié)果進(jìn)行替
換。本題的解題思路是:先將數(shù)組中的元素逐個(gè)進(jìn)行計(jì)算,若計(jì)算后的結(jié)果滿足
題目中的條件則不進(jìn)行替換,直接對(duì)下一個(gè)元素進(jìn)行判斷,否則按給定的替換關(guān)系
進(jìn)行替換,替換關(guān)系在題目中已經(jīng)給出“程序的流程是:首先調(diào)用ReadDat()函
數(shù),把數(shù)據(jù)讀入到數(shù)組xx中,然后調(diào)用函數(shù)encryplChar。對(duì)數(shù)據(jù)進(jìn)行處理后,由
WriieDat。函數(shù)寫回文件ps1.dat中去。答案解析如卜.:voidencryptChar(){inti;
char*pf;/*定義字符型指針pf*/for(i=0;iVmaxline;i++){/*遍歷文章的所有行*/
pf=xx[i];/*將二維數(shù)組第i行首地址賦給指針變量*/while(*pf!=0){/*pf的內(nèi)容不
為0時(shí)進(jìn)入循環(huán)*/if(*pf*l1%256>l30||*pf*l1%256V=32);/*判斷如果
*pf*U%256大于130或不大于32時(shí),就執(zhí)行一條空語句*/else*pf=*p或11%256;/*
否則就將pf所指的字符改為*pf*ll%256后的值*/pf++;/*指向下一個(gè)字符*/}}}
國家三級(jí)信息管
溫馨提示
- 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ù)理原則
- 初中【責(zé)任感培養(yǎng)】如何培養(yǎng)學(xué)生責(zé)任感主題班會(huì)《責(zé)任與擔(dān)當(dāng)》
- 2025年編程比賽執(zhí)行協(xié)議
- 基于深度學(xué)習(xí)的視覺缺陷識(shí)別系統(tǒng)
- 腦室引流管的護(hù)理培訓(xùn)
- 房地產(chǎn) -2025年第三季度法國生活數(shù)據(jù) France Living Figures Q3 2025
- 盤點(diǎn)高考最??荚~之 attitude 課件
- 愛因斯坦心目中的宇宙
- 第三單元 第16課時(shí) 二次函數(shù)的實(shí)際應(yīng)用
- 基于安全隔離的進(jìn)程調(diào)度優(yōu)化
- 2025年度河北省機(jī)關(guān)事業(yè)單位技術(shù)工人晉升高級(jí)工考試練習(xí)題附正確答案
- 交通運(yùn)輸布局及其對(duì)區(qū)域發(fā)展的影響課時(shí)教案
- 2025年中醫(yī)院護(hù)理核心制度理論知識(shí)考核試題及答案
- GB/T 17981-2025空氣調(diào)節(jié)系統(tǒng)經(jīng)濟(jì)運(yùn)行
- 比亞迪儲(chǔ)能項(xiàng)目介紹
- 學(xué)堂在線 大數(shù)據(jù)與城市規(guī)劃 期末考試答案
- 中國歷史地理智慧樹知到期末考試答案章節(jié)答案2024年北京大學(xué)
- MOOC 跨文化交際通識(shí)通論-揚(yáng)州大學(xué) 中國大學(xué)慕課答案
- GB/T 1048-2019管道元件公稱壓力的定義和選用
- 凱石量化對(duì)沖2號(hào)基金合同
- 電力現(xiàn)貨市場基本原理課件
評(píng)論
0/150
提交評(píng)論