- 相關(guān)推薦
全國計算機等級考試三級信息、網(wǎng)絡(luò)、數(shù)據(jù)庫上機編程題15道
1、下列程序的功能是:把s字符串中的所有字母改寫成該字母的下一個字符,字母z改寫成字母a。要求大寫字母仍為大寫字母,小寫字母仍為小寫字母,其他字符不做改變。請編寫函數(shù)chg(char *s)實現(xiàn)程序的要求,最后調(diào)用函數(shù)readwriteDat()把結(jié)果輸出到文件out.dat中。
??例如:s字符串中原有的內(nèi)容為:Mn.123Zxy,則調(diào)用該函數(shù)后,結(jié)果為No.123Ayz。
??
??注:該題的思路比較明顯,先判斷是否是#39;z#39;或#39;Z#39;,若是則轉(zhuǎn)成相應(yīng)的#39;a#39;或#39;A#39;,否則再判斷是不是字母(已除#39;z#39;或#39;Z#39;)。
??void chg(char *s)
??{
??int i,j,k;
??k=strlen(s);
??for(i=0;i??{if(s[i]==#39;z#39;//s[i]==#39;Z#39; )
??s[i]-=25;
??else
??if(isalpha(s[i]))
??s[i]+=1;
??}}
??
??2、現(xiàn)有一個10個人100行的選票數(shù)據(jù)文件IN.DAT,其數(shù)據(jù)存放的格式是每條記錄的長度均為10位,第一位表示第一個人的選中情況,第二位表示第二個人的選中情況,依此類推 :內(nèi)容均為字符0和1,1表示此人被選中,0表示此人未被選中,若一張選票人數(shù)小于等于5個人時被認(rèn)為無效的選票。給定函數(shù)ReadDat()的功能是把選票數(shù)據(jù)讀入到字符串?dāng)?shù)組xx中。請編制函數(shù)CountRs()來統(tǒng)計每個人的選票數(shù)并把得票數(shù)依次存入yy[0]到y(tǒng)y[9]中。把結(jié)果yy輸出到文件OUT.DAT中。
??
??/*注:題目要求將那些選了不超過5人的選票視為無效票,即一張選票中如果‘1’不超過5個則為無效選票。該題先用for()循環(huán)對100行選票進行循環(huán),在循環(huán)內(nèi)先進行用for()循環(huán)數(shù)出這張選票中選中的人數(shù)(count)再用if()判斷,如果選中人數(shù)小于等于5則continue即判斷下一張選票,否則用內(nèi)嵌的for()對行內(nèi)的數(shù)據(jù)進行判斷,注意如果數(shù)據(jù)為‘1’時才對對應(yīng)的人增加1。*/
??void countrs(void)
??{
??int i,j,count;
??for(i=0;i<300;i++)
??{count=0;
??for(j=0;j<10;j++)
??if(xx[i][j]==#39;1#39;)
??count++;
??if(count<=5)
??continue;
??for(j=0;xx[i][j];j++)
??if(xx[i][j]==#39;1#39;) yy[j]++;
??}}
??3、函數(shù)READDAT()實現(xiàn)從文件IN.DAT中讀取一篇英文文章存入到字符串?dāng)?shù)組XX中;請
??編制函數(shù)STROR(),其函數(shù)功能是:以行為單位把字符串中的所有小寫字母O左邊的字符串
??內(nèi)容移到該串的右邊存放,然后并把小寫字母O刪除,余下的字符串內(nèi)容移到已處理字符串
??的左邊存放.最后把已處理的字符串仍按行重新存入字符串?dāng)?shù)組XX中,最后調(diào)用函數(shù)WRIT
??EDAT()把結(jié)果XX輸出到文件OUT5.DAT中.
??例如:原文:You can create an index on any field.
??you have the correct record.
??結(jié)果:n any field.You can create an index
??rd.yu have the crrect rec
??原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80個字符,含標(biāo)點符號和空格.
??
??/* 注:題目要求的字符串中所有小寫字母o左邊的字符串內(nèi)容移到該串的右邊存放,即將串中“最后”一個字母o左右兩側(cè)的內(nèi)容互換。題中第一個while()特環(huán)的作用是讓p1指向最后一個字母#39;o#39;。第一個ctrcat()函數(shù)的作用是將p1以后的字符都放到新串t中,第二個strcat()函數(shù)的作用是將p1以前的字符連接到新串t的后面(注意:在些之前要讓p1所指的單元成為p1前面字符串的結(jié)束位置*p1=#39;0#39;)。這時完成左右互換。最后一個while()循環(huán)的作用是刪除新串中的所有小寫字母#39;o#39;,采用的刪除方法是不是#39;
??o#39;的字母一律留下,否則不留(即相當(dāng)于刪除。*/
??void StrOR(void)
??{
??int i;
??char *p1,*p2,t[80];
??for(i=0;i??{t[0]=#39;0#39;;
??p2=xx[i];
??while(*p2)
??{if(*p2==#39;o#39;) p1=p2;
??p2++;
??}
??strcat(t,p1+1);
??*p1=#39;0#39;;
??strcat(t,xx[i]);
??p1=xx[i];
??p2=t;
??while(*p2)
??{if(*p2!=#39;o#39;) *p1++=*p2;
??p2++;
??}
??*p1=#39;0#39;;
??}
??}
??
??4、函數(shù)READDAT()實現(xiàn)從文件IN.DAT中讀取一篇英文文章存入到字符串?dāng)?shù)組XX中;請編制函數(shù)CONVERTCHARA(),其函數(shù)功能是:以行為單位把字符串中的所有小寫字母改寫成該字母的下一個字母,如果是字母Z,則改寫成字母A.大寫字母仍為大寫字母,小寫字母仍為小寫字母,其他字符不變.把已處理的字符串仍按行重新存入字符串?dāng)?shù)組XX中,最后調(diào)用函數(shù)WRITEDAT()把結(jié)果XX輸出到文件OUT.DAT中.
??例:原文:Adb.Bcdza
??abck.LLhj
??結(jié)果:Aec.Bdeab
??bcdl.LLik
??/* 注:注意本題中不能將第一個if()的else去掉,若不用else則經(jīng)過第一個if()后原來字符#39;z#39;變成了#39;a#39;,當(dāng)再經(jīng)過第二個if()時又將已變成#39;a#39;的字符改成了#39;b#39;,即實際上字母#39;z#39;變成了字母#39;b#39;,這是不行的。*/
??void ConvertCharA(void)
?? {int I,j,str;
?? for(I=0;I?? {str =strlen(xx[I]);
??for(j=0;j??if(xx[I][j]==#39;z#39;)xx[I][j]=#39;a#39;;
??else if(xx[I][j]>=#39;a#39;&&xx[I][j]<=#39;y#39;) xx[I][j]+=1;
?? }
?? }
??}
??5、已知在文件IN.DAT中存有100個產(chǎn)品銷售記錄,每個產(chǎn)品銷售記錄由產(chǎn)品代碼dm(字符型4位),產(chǎn)品名稱mc(字符型10位),單價dj(整型),數(shù)量sl(整型),金額je(長整型)四部分組成。其中:金額=單價*數(shù)量計算得出。函數(shù)ReadDat()是讀取這100個銷售記錄并存入結(jié)構(gòu)數(shù)組sell中。請編制函數(shù)SortDat(),其功能要求:按產(chǎn)品名稱從大到小進行排列,若產(chǎn)品名稱相等,則按金額從大到小進行排列,最終排列結(jié)果仍存入結(jié)構(gòu)數(shù)組sell中,最后調(diào)用函數(shù)WriteDat()把結(jié)果輸出到文件OUT7.DAT中。
??請勿改動主函數(shù)main()、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDat()的內(nèi)容。 #include
??#define MAX 100
??typedef struct{
??char dm[5]; /*產(chǎn)品代碼*/
??char mc[11]; /*產(chǎn)品名稱*/
??int dj; /*單價*/
??int sl; /*數(shù)量*/
??long je; /*金額*/
??}PRO;
??PRO sell[MAX];
??
??void SortDat( )
?? {int I,j;
?? PRO xy;
?? 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,sell[j].dm)==0)
?? if(sell[I].je?? {xy=sell[I];
?? sell[I]=sell[j];
?? sell[j]=xy;}
??}
??
??6、編寫函數(shù),功能是以行為單位對行中的以空格或標(biāo)點符號為分隔的單詞倒排,最后把已經(jīng)處理的字符串(不含標(biāo)點符號)仍按行從新存入字符串?dāng)?shù)組中,例如:
??原文:You He Me
??結(jié)果:Me He You
??void StrOL(void)
??{int I,j,k,strl,l;char c;
??for(I=0;I?? for(j=0;j?? {c=xx[I][j];
?? if ((c>=#39;A#39;&&c<=#39;Z#39;)||(c>=#39;a#39;&&c<=#39;z#39;)||c==#39; #39;)
?? ;
?? else xx[I][j]=#39; #39;;
?? }
?? for(l=0;l??{char ch[80]={0};
?? char pp[80]={0};
?? strl=strlen(xx[l]);
?? I=strl-1;
?? k=1;
?? while(1)
?? {while (((xx[l][I]>=#39;a#39;&&xx[l][I]<=#39;z#39;)||(xx[l][I]>=#39;A#39;&&xx[l][I]<=#39;z#39;))&&I>=0)
??{for(j=k;j>=0;j--)
?? pp[j+1]=pp[j];
?? pp[0]=xx[l][I];
?? k++;I--;
?? }
??strcat(ch,pp);
??strcpy(pp, "");
??k=1;
??if(I==-1)break;
?? while((xx[l][I]<#39;A#39;||xx[l][I]>#39;z#39;)&&I>=0)
?? {for(j=k;j>=0;j--)
?? pp[j+1]=pp[j];
?? pp[0]=xx[l][I];
?? k++;
?? I--;}
?? strcat(ch,pp);
?? strcpy(pp,"");
?? k=0;
?? if(I==-1)break;}
?? strcpy(xx[l],ch);
?? }
??}
????
??7、
??有200個正整數(shù)已經(jīng)存入數(shù)組a,他們都是1000—9999的正整數(shù),編寫函數(shù),功能是如果四位數(shù)各位上的數(shù)字均為0/2/4/6/8,則統(tǒng)計滿足條件的個數(shù)cnt,并且把這些四位數(shù)按從大到小的順序存入數(shù)組b。注意a,b數(shù)組已經(jīng)定義。cnt已經(jīng)定義并已經(jīng)賦值為0
??void jsVal()
??{
??int bb[4];
??int I,j,k,flag;
??for (I=0;I<200;I++)
?? {bb[0]=a[I]/1000;
?? bb[1]=a[I]%1000/100;
?? bb[2]=a[I]%100/10;
?? bb[3]=a[I]%10;
?? for (j=0;j<4;j++)
?? {if (bb[j]%2= =0)
?? flag=1;
?? else
?? {flag=0;break;}
?? }
?? if (flag= =1)
?? { b[cnt]=a[I];
?? cnt ++;}
?? }
??for(I=0;I?? for(j=I+1;j?? if (b[I]?? {k=b[I];
?? b[I]=b[j];
?? b[j]=k;}
??}
??
??8、有200個正整數(shù)已經(jīng)存入數(shù)組aa,他們都是1000—9999的正整數(shù),編寫函數(shù),功能是按照每個數(shù)的后三位的大小進行升序排列,將排序后的前10個數(shù)存入數(shù)組bb。如果數(shù)組bb中出現(xiàn)后三位相等的數(shù)值,則按照原值降序排列。注意aa,bb數(shù)組已經(jīng)定義。
??例如: 前 :6012 5099 9012 7025 8088
?? 后:9012 6012 7025 8088 5099
?? void jsSort()
??{
??int I,j,data;
??for(I=0;I<199;I++)
?? for(j=I+1;j<200;j++)
?? {if (aa[I]%1000>aa[j]%1000)
?? {data=aa[I];
?? aa[I]=aa[j];
?? aa[j]=data;}
?? else if(aa[I]%1000==aa[j]%1000)
?? if(aa[I]?? {data=aa[I];
?? aa[I]=aa[j];
?? aa[j]=data;}
?? }
?? for(I=0;I<10;I++)
?? bb[I]=aa[I];
??}
??
??
??9、左降序,右升序的程序:
??void jsSort()
??{int I,j,k,strl,half;
?? char ch;
?? for(I=0;I<20;I++)
?? {strl=strlen(xx[I]);
?? half=strl/2;
?? for(j=0;j?? for(k=j+1;k?? if (xx[I][j]?? {ch=xx[I][j];
??xx[I][j]=xx[I][k];
??xx[I][k]=ch;}
??if (strl%2) half++; /* 判斷奇數(shù)
?? for(j=half;j?? for(k=j+1;k?? if (xx[I][j]>xx[I][k])
?? {ch=xx[I][j];
?? xx[I][j]=xx[I][k];
?? xx[I][k]=ch;}
?? }
??(注意此處加half=strl/2;)
??for(j=half-1,k=strl-1;j>=0;j--,k--)
?? {ch=xx[I][j];
?? xx[I][j]=xx[I][k];
?? xx[I][k]=ch;}
??}
??
??10、從文件中讀入200個整數(shù)放入XX數(shù)組中,求數(shù)組中的奇數(shù)個數(shù)cnt1和偶數(shù)個數(shù)cnt2以及XX下標(biāo)為奇數(shù)的元素值的算術(shù)平均值PJ(保留2位小數(shù))
??void main()
??{int cnt1,cnt2,xx[N];
?? float pj;
?? FILE *fw;
?? int I,k=0,j=0;
?? cnt1=0;cnt2=0;pj=0.0;
?? fw=fopen("out.dat", " w");
?? clrscr();
?? read_dat(xx);
?? for(I=0;I?? { if (xx[I]%2) cnt1++;
?? else cnt2++;
?? if (I%2) {k+=xx[I];j++;}
?? }
?? pj=(float)(k*100/j)/100;
?? printf("ncnt1=%d,cnt2=%d,pj=%6.2fn",cnt1,cnt2,pj);
?? fprintf(fw, "%dn%dn%6.2fn",cnt1,cnt2,pj);
?? fclose(fw);
??}
??
??11、從文件中讀入200個整數(shù)放入XX數(shù)組中,求數(shù)組中的最大數(shù)max和最大數(shù)個數(shù)cnt和XX數(shù)組中能被3或7整除的元素值的算術(shù)平均值PJ(保留2位小數(shù))
??
??
??void main()
??{
?? int cnt, xx[N], max ;
?? float pj ;
?? FILE *fw ;
?? long j=0;
?? clrscr();
?? fw=fopen("out.dat","w");
?? read_dat(xx);
?? max=xx[0];
?? for(I=1,k=0;I?? {if (xx[I]>max) max=xx[I];
?? if (xx[I]%3==0||xx[I]%7==0)
?? {j+=xx[I];k++;}
?? }
?? for(I=0,cnt=0;I?? if (xx[I]==max) cnt++;
?? pj=(float)(j*100/k)/100;
?? printf("nnmax=%d,cnt=%d,pj=%6.2fn", max, cnt, pj) ;
?? fprintf(fw, "%dn%dn%6.2fn", max, cnt, pj) ;
?? fclose(fw) ;
??}
??
??12、下列函數(shù)的功能是在三位整數(shù)(100至999)中尋找符合條件的整數(shù)并依次從小到大存入數(shù)組[]中;它既是完全平方數(shù),又有兩位數(shù)字相同,例如144、676等。
??
??int jsValue(int bb[])
??{int I,j,k=0;
??int hun,ten,data;
??for(I=100;I<=999;I++)
??{j=10;
??while(j*j<=I)
??{if (I==j*j)
??{hun=I/100;
??data=I-hun*100;
??ten=data/10;
??data=data-ten*10;
??if(hun==ten||hun==data||ten==data)
??{bb[k]=I;k++;}
??}
??j++;
??}
??}
??return k;
??}
??
??13、
??已知在文件IN.DAT中存有100個產(chǎn)品銷售記錄,每個產(chǎn)品銷售記錄由產(chǎn)品代碼dm(字符型4位)、產(chǎn)品名稱mc(字符型10位)、單價dj(整型)、數(shù)量sl(整型)、金額je(長整型)幾部分組成。其中:金額=單價*數(shù)量可計算得出。函數(shù)ReadDat()的功能是讀取這100個銷售記錄并存入結(jié)構(gòu)數(shù)組sell中。請編制函數(shù)SortDat(),其功能要求:按產(chǎn)品代碼從大到小進行排列,若產(chǎn)品代碼相同,則按金額從大到小進行排列,最終排列結(jié)果仍存入結(jié)構(gòu)數(shù)組sell中,最后調(diào)用函數(shù)WriteDat()把結(jié)果輸出到文件OUT10.DAT中。資料來源:東方教育http://www.eastedu.com.cn
??
??注意:部分源程序已給出。
??#define MAX 100
??typedef struct{
??char dm[5]; /*產(chǎn)品代碼*/
??char mc[11]; /*產(chǎn)品名稱*/
??int dj; /*單價*/
??int sl; /*數(shù)量*/
??long je; /*金額*/
??}PRO;
??PRO sell[MAX];
??
??void SortDat( )
??{int I,j;
??PRO xy;
??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,sell[j].dm)==0)
??if(sell[I].je??{xy=sell[I];
??sell[I]=sell[j];
??sell[j]=xy;}
??}
??
??14、函數(shù)ReadDat()的功能是實現(xiàn)從文件IN.DAT中讀取一篇英文文章存入到字符串?dāng)?shù)組xx中;請編制函數(shù)StrOL(),該函數(shù)的功能是:以行為單位對行中以空格或標(biāo)點符號或標(biāo)點符號為分隔的所有單詞進行倒排。最后把已處理的字符串(應(yīng)不含標(biāo)點符號)仍按行重新存入字符串?dāng)?shù)組xx中,最后調(diào)用函數(shù)WriteDat()把結(jié)果xx輸出到文件OUT6.DAT中。
??例如:原文:You He Me
?? I am a student.
??結(jié)果:Me He You
?? student a am I
??試題程序:
??char xx[50][80];
??int maxline=0;/*文章的總行數(shù)*/
??int ReadDat(void);
??_______________________________
??
??void StrOL(void)
??{int I,j,k,strl,l;char c;
??for(I=0;I??for(j=0;j??{c=xx[I][j];
??if ((c>=#39;A#39;&&c<=#39;Z#39;)||(c>=#39;a#39;&&c<=#39;z#39;)||c==#39; #39;)
??;
??else xx[I][j]=#39; #39;;
??}
??for(l=0;l??{char ch[80]={0};
??char pp[80]={0};
??strl=strlen(xx[l]);
??I=strl-1;
??k=1;
??while(1)
??{while (((xx[l][I]>=#39;a#39;&&xx[l][I]<=#39;z#39;)||(xx[l][I]>=#39;A#39;&&xx[l][I]<=#39;z#39;))&&I>=0)
??{for(j=k;j>=0;j--)
??pp[j+1]=pp[j];
??pp[0]=xx[l][I];
??k++;I--;
??}
??strcat(ch,pp);
??strcpy(pp, "");
??k=1;
??if(I==-1)break;
??while((xx[l][I]<#39;A#39;||xx[l][I]>#39;z#39;)&&I>=0)
??{for(j=k;j>=0;j--)
??pp[j+1]=pp[j];
??pp[0]=xx[l][I];
??k++;
??I--;}
??strcat(ch,pp);
??strcpy(pp,"");
??k=0;
??if(I==-1)break;}
??strcpy(xx[l],ch);
??}}
??
??
??15、函數(shù)ReadDat()的功能是實現(xiàn)從文件IN.DAT中讀取一篇英文文章存入到字符串?dāng)?shù)組xx中;請編制函數(shù)StrOR(),該函數(shù)的功能是:以行為單位把字符串中所有小寫字母o左邊的字符串內(nèi)容移到該串的右邊存放,然后并把小寫字母o刪除,余下的字符串內(nèi)容移到已處理字符串的左邊存放。最后把已處理的字符串仍按行重新存入字符串?dāng)?shù)組xx中,最后調(diào)用函數(shù)WriteDat()把結(jié)果xx輸出到文件OUT5.DAT中。資料來源:東方教育http://www.eastedu.com.cn
??例如:原文:You can creat an index on any field.
??you have the correct record.
??
??
??結(jié)果:n any field. Yu can creat an index
??rd.yu have the crrect rec
??
??char xx[50][80];
??int maxline=0;/*文章的總行數(shù)*/
??int ReadDat(void);
??void WriteDat(void);
??________________________
??void StrOR(void)
??{int I,j,k,index,strl;
??char ch;
??for(I=0;I??{strl=strlen(xx[I]);
??index=strl;
??for(j=0;j??if(xx[I][j]==#39;o#39;)
??{for(k=j;k??xx[I][k]=xx[I][k+1];
??xx[I][strl-1]= #39; #39;;
??index=j;}
??for(j=strl-1;j>=index;j--)
??{ch=xx[I][strl-1];
??for(k=strl-1;k>0;k--)
??xx[I][k]=xx[I][k-1];
??xx[I][0]=ch;}
??}
??}
http://www.ardmore-hotel.com/
【全國計算機等級考試三級信息、網(wǎng)絡(luò)、數(shù)據(jù)庫上機編程題15道】相關(guān)文章:
2006年9月全國計算機等級考試三級數(shù)據(jù)庫上機試題07-23
計算機等級考試三級網(wǎng)絡(luò)技術(shù)上機模擬試題08-02
計算機等級考試三級(C語言)上機考試試題總結(jié)08-10
2004年全國計算機等級考試三級C語言全真上機試題解析08-10
2006年9月全國計算機等級考試三級PC技術(shù)上機試題07-23
2007年4月全國計算機等級考試三級PC技術(shù)上機試題07-23