國家三級(數(shù)據(jù)庫技術(shù))機(jī)試模擬試卷8(共9題)_第1頁
國家三級(數(shù)據(jù)庫技術(shù))機(jī)試模擬試卷8(共9題)_第2頁
國家三級(數(shù)據(jù)庫技術(shù))機(jī)試模擬試卷8(共9題)_第3頁
國家三級(數(shù)據(jù)庫技術(shù))機(jī)試模擬試卷8(共9題)_第4頁
國家三級(數(shù)據(jù)庫技術(shù))機(jī)試模擬試卷8(共9題)_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

國家三級(數(shù)據(jù)庫技術(shù))機(jī)試模擬試卷8(共9套)(共9題)國家三級(數(shù)據(jù)庫技術(shù))機(jī)試模擬試卷第1套一、程序設(shè)計題(本題共1題,每題1.0分,共1分。)1、已知數(shù)據(jù)文件IN.dat中存有300個四位數(shù),并已調(diào)用讀函數(shù)Rdata()把這些數(shù)存入數(shù)組a中,請編寫函數(shù)NumCal(),其功能是:求出千位上的數(shù)加個位上的數(shù)等于百位上的數(shù)加十位上的數(shù)的四位數(shù)的個數(shù)count,再求出所有滿足此條件的四位數(shù)的平均值A(chǔ)ve1,以及不滿足此條件的四位數(shù)的平均值A(chǔ)ve2。最后調(diào)用寫函數(shù)Wdata(),把結(jié)果輸出到OUT.dat文件中。例如:6712,6+2=7+1,則該數(shù)滿足條件,計算平均值A(chǔ)ve1,且個數(shù)count=count+1。8129,8+9!=1+2,則該數(shù)不滿足條件,計算平均值A(chǔ)ve2。注意:部分源程序已經(jīng)給出。程序中已定義數(shù)組a[300],已定義變量count、Ave1、Ave2。請勿改動主函數(shù)main()、讀函數(shù)Rdata()和寫函數(shù)Wdata()的內(nèi)容。#include<stdio.h>inta[300],count=0;doubleAve1=0.0,Ave2=0.0;voidNumCal(){}voidRdata(){FILE*fp;inti;fp=fopen("IN.dat","r");for(i=0;i<300;i++)fscanf(fp,"%d,",&a[i];fclose(fp);}voidWdata(){FILE*fp;fp=fopen("OUT.dat","w");fprintf(fp,"%d\n%7.2f\n%7.2f\n",count,Ave1,Ave2);fclose(fp);}main(){Rdata();NumCal();Wdata();printf("count=%d\n滿足條件的平均值A(chǔ)ve1=%7.2f\n不滿足條件的平均值A(chǔ)ve2=%7.2f\n",count,Ave1,Ave2);}標(biāo)準(zhǔn)答案:voidNumCal(){inti,n=0,thou,hun,ten,data;for(i=0;i<300;i++){thou=a[i]/1000;hun=a[i]%1000/100;ten=a[i]%100/10;data=a[i]%10;if(thou+data==hun+ten){count++;Ave1+=a[i];}else{n++;Ave2+=a[i];}}Ave1/=count;Ave2/=n;}[解題思路]對于每一個四位數(shù),用這個四位數(shù)除以1000,可得到這個四位數(shù)千位上的數(shù)字輸給變量thou;這個四位數(shù)對1000求余數(shù)然后再除以100,可得到這個四位數(shù)百位上的數(shù)字輸給變量hun;這個四位數(shù)對100求余數(shù)然后再除以10,可得到這個四位數(shù)十位上的數(shù)字輸給變量ten;這個四位數(shù)對10求余數(shù),可得到這個四位數(shù)個位上的數(shù)字輸給變量data。然后判斷表達(dá)式thou+data==hun+ten是否成立,如果成立,則計數(shù)變量count加1,同時把這個數(shù)加到變量Ave1上;否則計數(shù)變量n加1,同時把這個數(shù)加到變量Ave2上。循環(huán)結(jié)束后,變量Ave1的值除以count,就得到所有滿足此條件的四位數(shù)的平均值A(chǔ)ve1;變量Ave2的值除以n,就得到有不滿足此條件的四位數(shù)的平均值A(chǔ)ve2。知識點解析:暫無解析國家三級(數(shù)據(jù)庫技術(shù))機(jī)試模擬試卷第2套一、程序設(shè)計題(本題共1題,每題1.0分,共1分。)1、下列程序的功能是:計算500~800之間素數(shù)的個數(shù)cnt,并按所求素數(shù)的值從小到大的順序,再計算其間隔加、減之和,即第1個素數(shù)-第2個素數(shù)+第3個素數(shù)-第4個素數(shù)+第5個素數(shù)……的值sum。請編寫函數(shù)countValue()實現(xiàn)程序的要求,最后調(diào)用函數(shù)writeDat()把結(jié)果cnt和sum輸出到文件OUT66.DAT中。注意:部分源程序己給出。請勿改動主函數(shù)main()和寫函數(shù)writeDAT()的內(nèi)容。試題程序:include<stdio.h>intcnt,sum;voidcountValue(){}voidmain(){cnt=sum=0;countValue();printf("素數(shù)的個數(shù)=%d\n",cnt);printf("按要求計算機(jī)得值=%d\n",sum);writeDAT();}writeDAT(){FILE*fp;fp=fopen("OUT66.DAT","w");fprintf(fp,"%d\n%d\n",cnt,sum);fclose(fp);}標(biāo)準(zhǔn)答案:voidcountValue(){inti,j,half,yy[100];for(i=500;i<800;i++){half=i/2;for(j=2;j<=half;j++)if(i%j==0)break;/*如果該數(shù)不是素數(shù),則退出此層循環(huán)*/if(j>=half)/*如果該數(shù)是素數(shù),則將該數(shù)存入數(shù)組yy中*/{yy[cnt]=i;cnt++;/*統(tǒng)計素數(shù)的個數(shù)*/}}for(i=0,j=-1;i<cnt;i++)/*計算這些素數(shù)的間隔加、減之和*/{i=j*-1;sum+=j*yy[i];}}知識點解析:本題考查的知識點如下:(1)利用循環(huán)和“%”進(jìn)行素數(shù)的判斷。(2)間隔加、減的實現(xiàn)。在本題中,首先要找出判斷素數(shù)的方法。若一個數(shù)a依次除以從2到a/2的數(shù)所得的余數(shù)都不是0,則這個數(shù)是素數(shù)。用此方法依次判斷出從500到800區(qū)間內(nèi)的素數(shù)。由題意可知,第1,3,5…個素數(shù)計算加法,第2,4,6…個素數(shù)計算減法。減去1個正整數(shù)就是加上負(fù)的這個正整數(shù),所以可以將這個正整數(shù)乘以-1進(jìn)行加法。使用循環(huán)實現(xiàn)求和,在奇數(shù)次的循環(huán)中,每個素數(shù)乘以1,偶數(shù)次的循環(huán)中,素數(shù)乘以-1,就可實現(xiàn)間隔加、減。國家三級(數(shù)據(jù)庫技術(shù))機(jī)試模擬試卷第3套一、程序設(shè)計題(本題共1題,每題1.0分,共1分。)1、函數(shù)ReadDat()實現(xiàn)從文件IN.dat中讀取1000個十進(jìn)制整數(shù)到數(shù)組xx中;請編寫函數(shù)Compute()分別計算出數(shù)組xx中奇數(shù)的個數(shù)odd、偶數(shù)的個數(shù)even,以及所有數(shù)的平均值aver和方差totfc的值。最后調(diào)用函數(shù)WriteDat(),把結(jié)果輸出到OUT.dat文件中。計算方差的公式如下:原始數(shù)據(jù)文件存放的格式是:每行存放10個數(shù)(每個數(shù)均大于0且小于等于2000),并用逗號隔開。注意:部分源程序已經(jīng)給出。請勿改動主函數(shù)main()、讀函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDat()的內(nèi)容。#include<stdio.h>#include<stdlib.h>#include<string.h>#defineMAX1000intxx[MAX],odd=0,even=0;doubleaver=0.0,totfc=0.0;voidWriteDat(void);intReadDat(void){FILE*fp;inti,j;if((fp=fopen("IN.dat","r"))==NULL)return1;for(i=0;i<100;i++){for(j=0;j<10;j++)fscanf(fp,"%d,",&xx[i*10+j]);fscanf(fp,"\n");if(feof(fp))break;}fclose(fp);return0;}voidCompute(void){}voidmain(){inti;for(i=0;i<MAX;i++)xx[i]=0;if(ReadDat()){printf("數(shù)據(jù)文件IN.dar不能打開!\007\n");return;}Compute();printf("odd=%d\neven=%d\naver=%f\ntotfc=%f\n",odd,even,aver,totfc);WriteDat();}voidWriteDat(void){FILE*fp;fp=fopen("OUT.dat","w");fprintf(fp,"%d\n%d\n%f\n%f\n",odd,even,aver,totfc);fclose(fp);}標(biāo)準(zhǔn)答案:voidCompute(void){inti;for(i=0;i<1000;i++){if(xx[i]%2)odd++;elseeven++;aver=aver+xx[i];}aver/=MAX;for(i=0;i<1000;i++)totfc+=(xx[i]-aver)*(xx[i]-aver)/MAX;}[解題思路]對數(shù)組xx[i]中的1000個整數(shù)逐個進(jìn)行掃描處理,如果xx[i]對2的余數(shù)為1,則xx[i]為奇數(shù),變量odd加1;否則xx[i]為偶數(shù),變量even加1。把xx[i]的值與變量aver相加存入變量aver中。退出循環(huán)時,變量aver的值除以MAX就得到平均值。最后在for循環(huán)語句中根據(jù)方差的公式求出所有數(shù)的方差。知識點解析:暫無解析國家三級(數(shù)據(jù)庫技術(shù))機(jī)試模擬試卷第4套一、程序設(shè)計題(本題共1題,每題1.0分,共1分。)1、已知在文件IN2.DAT中存有100個產(chǎn)品銷售記錄,每個產(chǎn)品銷售記錄由產(chǎn)品代碼dm(字符型4位)、產(chǎn)品名稱mc(字符型10位)、單價dj(整型)、數(shù)量s1(整型)、金額je(長整型)五部分組成。其中:金額=單價×數(shù)量。函數(shù)ReadDat()的功能是讀取這100個銷售記錄并存入結(jié)構(gòu)數(shù)組sell中。請編制函數(shù)SortDat(),其功能要求:按產(chǎn)品名稱從大到小進(jìn)行排列,若產(chǎn)品名稱相同,則按金額從小到大進(jìn)行排列,最終排列結(jié)果仍存入結(jié)構(gòu)數(shù)組sell中,最后調(diào)用函數(shù)WriteDat()把結(jié)果輸出到文件OUT2.DAT中。注意:部分源程序已給出。請勿改動主函數(shù)main()、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDat()的內(nèi)容?!驹囶}程序】#include<stdio.h>#include<memory.h>#include<string.h>#include<conio.h>#include<stdlib.h>#defineMAX100typedefstruct{chardm[5];/*產(chǎn)品代碼*/charmc[11];/*產(chǎn)品名稱*/intdj;/*單價*/intsl;/*數(shù)量*/longje;/*金額*/}PRO;ROsell[MAXI;voidReadDat();voidWriteDat();voidSortDat(){}voidmain(){memset(sell,0sizeof(sell))ReadDat();SortDat();WriteDat();}voidReadDat({FILE*fp;charstr[80],ch[11];inti;fp=fopen("IN2.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);memcpy(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("OUT2.DAT","w");for(i=0;i<100;i++)fprintf(fp,"%s%s%4d%5d%101d\n",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].slsell[i].je);fclose(fp);}標(biāo)準(zhǔn)答案:voidSortDat(){inti,j;PROxy;for(i=0;i<MAX-1;i++)for(j=i+l;j<MAX;j++){if(strcmp(sell[i].mc,sell[j].mc)<0)/*按產(chǎn)品名稱從大到小進(jìn)行排列*/{xy=sell[i];sell[i]=sell[j];sell[j]=xy;elseif(strcmp(sell[i].mc,sell[j].mc)==0)/*若產(chǎn)品名稱相同*/if(sell[i].je>sell[j].je)/*則按金額從小到大進(jìn)行排列*/{xy=sell[i];sell[i]=sell[j];sell[j]=xy;}}知識點解析:按產(chǎn)品名稱從大到小進(jìn)行排列,若產(chǎn)品名稱相同,則按金額從小到大進(jìn)行排列,相應(yīng)語句為:if((strcmp(sell[i].mc,sell[j].mc)<0)‖(strcmp(sell[i].mc,sell[j].mc)==0)&&(sell[i].je>sell[j].je))國家三級(數(shù)據(jù)庫技術(shù))機(jī)試模擬試卷第5套一、程序設(shè)計題(本題共1題,每題1.0分,共1分。)1、已知在文件IN65.DAT中存有若干個(個數(shù)<200)4位數(shù)字的正整數(shù),函數(shù)ReadDat()是讀取這若干個正整數(shù)并存入數(shù)組xx中。請編制函數(shù)CalValue(),其功能要求是:(1)求出這個文件中共有多少個正整數(shù)totNum。(2)求出這些數(shù)中的各位數(shù)字之和是奇數(shù)的個數(shù)totCnt,以及滿足此條件的這些數(shù)的算術(shù)平均值totPjz。最后調(diào)用函數(shù)WriteDat()把所有結(jié)果輸出到文件OUT65.DAT中。注意:部分源程序已給出。請勿改動主函數(shù)main()、讀函數(shù)ReadDat()和寫函數(shù)WriteDat()的內(nèi)容。試題程序:#include<stdio.h>#include<conio.h>#defineMAXNUM200intxx[MAXNUM];inttotNum=0;inttotCnt=0;doubletotPjz=0.0;intReadDat(void);voidWriteDat(void);voidCalValue(void){}voidmain(){inti;clrscr();for(i=0;i<MAXNUM;i++)xx[i]=0;if(ReadDat()){printf("數(shù)據(jù)文件IN65.DAT不能打開!\007\n");return;}CalValue();printf("文件IN65.DAT中共有正整數(shù)=%d個\n",totNum);printf("符合條件的正整數(shù)的個數(shù)=%d個\n",totCnt);printf("平均值=%.21f\n",totPjz);WriteDat();}intReadDat(void){FILE*fp;inti=0;if((fp=fopen("IN65.DAT","r"))==NULL)return1;while(!feof(fp)){fscanf(fp,"%d",&xx[i++]}fclose(fp);return0;}voidWriteDat(void){FILE*fp;fp=fopen("OUT65.DAT","w");fprintf(fp,"%d\n%d\n%.21fkn",totNum,totCnt,totPjz);fclose(fp);}標(biāo)準(zhǔn)答案:voidCalValue(void){inti,thou,hun,ten,data;for(i=0;i<MAXNUM;i++){if{!xx[i])break;if(xx[i]>0)totNum++;/*求正整數(shù)的個數(shù)*/thou=xx[i]/1000;/*求四位數(shù)的千位數(shù)字*/hun=xx[i]%1000/100;/*求四位數(shù)的百位數(shù)字*/ten=xx[i]%100/10;/*求四位數(shù)的十位數(shù)字*/data=xx[i]%10;/*求四位數(shù)的個位數(shù)字*/if((thou+hun+ten+data)%2){totCnt++;/*求各位數(shù)字之和是奇數(shù)的個數(shù)*/totPjz+=xx[i];/*求滿足條件的數(shù)的總和*/}}totPjz/=totCnt;/*求滿足條件的數(shù)的平均值*/}知識點解析:本題考查的知識點如下;(1)“%”與“/”的使用。(2)數(shù)組結(jié)束的判斷和強(qiáng)行退出一層循環(huán)結(jié)構(gòu)。在本題中,并沒有給出確切的數(shù)據(jù)個數(shù),是以數(shù)據(jù)的最大個數(shù)定義的數(shù)組。在主函數(shù)中,給所有的數(shù)組成員賦初值為0,而從文件中讀取的數(shù)據(jù)是正整數(shù),所以只要數(shù)組的某個元素為0,則說明數(shù)組存的數(shù)據(jù)已經(jīng)結(jié)束。此時就可以結(jié)束循環(huán)結(jié)構(gòu)。這里要借助運算符“%”與“/”將4位數(shù)的各位上的數(shù)拆成獨立的數(shù)字,然后就可以根據(jù)題意要求判斷。國家三級(數(shù)據(jù)庫技術(shù))機(jī)試模擬試卷第6套一、程序設(shè)計題(本題共1題,每題1.0分,共1分。)1、編寫函數(shù)jsValue,它的功能是:求Hofstadter數(shù)列中的第m項H(m)(m<1000),結(jié)果由函數(shù)返回。其中數(shù)列H(n)的定義為:H(1)=H(2)=1H(n)=H(n-H(n-1))+H(n-H(n-2))(n>2)最后調(diào)用函數(shù)writeDat()讀取50個數(shù)據(jù)m,分別得出結(jié)果且把結(jié)果輸出到文件out.dat中。例如:當(dāng)t=997時,函數(shù)值為605。部分源程序已給出。請勿改動主函數(shù)main()和寫函數(shù)writeDat()的內(nèi)容。#include<stdio.h>intjsValue(intm){main(){intm;m=300;printf("m=%d,k-%d\n",m,jsValue(m));writeDat();writeDat(){FILE*in,*out;inti,m,s;in=fopen("in.dar","r");out=fopen("out.dar","w");for(i=0;i<50;i++){fscanf(in,"%d",&m);s=jsValue(m);printf("%d\n",s);fprintf(out,"%d\n",s);}fclose(in);fclose(out);標(biāo)準(zhǔn)答案:intjsVelue(intm){if(m<0)return-1;/*參數(shù)錯誤,正常運行不會出現(xiàn)*/if(m==1||m==2)return1;/*初值H[1]:H[2]=1*/elsereturnjsValue(m-jsValue(m-1))+jsValue(m-jsValue(m-2));/*調(diào)用jsValue遞歸計算H[k]*/}/*解法二,遞推*/intjsValue(intm){intH[1000],i;H[1]=1;H[2]=1;/*初值H[1]=H[2]=1*/for(i=3;i<=m;i++){H[i]=H[i-H[i-1)]+H[i-H[i-2]];/*H(k)(k<i)的值都己計算完成,直接使用*/}returnH[m];/*返回所求的值*/}知識點解析:類型:序列計算。關(guān)鍵點:分析序列定義,選擇合適的方法生成和存儲序列或序列中的特定值。此題有兩種解法:1.按照定義編寫遞歸函數(shù);(計算量大,容易超時,慎用)。2.保存所有值,從小到大遞推求解。國家三級(數(shù)據(jù)庫技術(shù))機(jī)試模擬試卷第7套一、程序設(shè)計題(本題共1題,每題1.0分,共1分。)1、請編制程序,要求:將文件IN92.DAT中的200個整數(shù)讀入數(shù)組xx中,求出數(shù)組xx中最大數(shù)max及最大數(shù)的個數(shù)ont和數(shù)組xx中值能被3整除或能被7整除的數(shù)的算術(shù)平均值pj(保留兩位小數(shù)),結(jié)果max,cnt,pj輸出到out92.dar中。部分程序、讀函數(shù)read_dat(intxx[200])及輸出格式已給出。試題程序:#include<conio.h>#include<stdi0.h>#defineN200voidread_dar(intxx[N]){inti,j;FILE*fp;fp=fopen("IN92.DAT","r");for(i=0;i<20;i++){for(j=0;j<10;j++){fscanf(fp,"%d,",&xx[i*10+j]);printf("%d",xx[i*10+j]);}printf("\n");}fclosefp);}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,pjfprintf(fw,"%d\n%d\n%6.2f\n",max,cnt,pj);fclose(fw);printf("\n");}fclosefp);}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,pjfprintf(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.dat","w");read_dat(xx);max=xx[0];for(i=1,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的個數(shù)*/pj=(float)(j*100/k)/100;/*求出數(shù)組xx中值能被3整除或能被7整除的數(shù)的平均值*/printf("\n\nmax=%d,cnt=%d,pj=%6.2f\n",max,cnt,pj);fprintf(fw,"%d\n%dkn%6.2fin",max,cnt,pj);fclose(fw);知識點解析:本題考查的知識點如下:(1)運算符“%”的使用。(2)判斷結(jié)構(gòu)中多個條件的布爾運算。首先,要找出數(shù)組中最大的元素。先定義第1個元素為最大的元素,然后依次和后面的元素比較,若后面的數(shù)中有大于第1個元素的,則將這個數(shù)定義為最大的元素。再和后面的數(shù)進(jìn)行比較。一個數(shù)a除以b取余所得的數(shù)為0,則a能被b整除。根據(jù)題意可知,被3整除和被7整除兩個條件滿足一個即可,所以兩個條件之間用“或”運算。在本題中,要求算術(shù)平均值保留兩位小數(shù)。使用的方法是:將和乘以100除以個數(shù)強(qiáng)制類型轉(zhuǎn)換后再除以100。為了保證和有效,我們定義了一個長整型變量來記錄和。因為個數(shù)也為整型,運算符“/”在這里的含義是整除,而我們要保留小數(shù),所以要使用強(qiáng)制類型轉(zhuǎn)換將和乘以100的結(jié)果轉(zhuǎn)換為浮點類型,這樣就可以實現(xiàn)保留兩位小數(shù)。國家三級(數(shù)據(jù)庫技術(shù))機(jī)試模擬試卷第8套一、程序設(shè)計題(本題共1題,每題1.0分,共1分。)1、下列程序的功能是:將一正整數(shù)序列{K1,K2,…,K91重新排成一個新的序列。新序列中,比K1小的數(shù)都在K1的左面(后續(xù)的再向左存放),比KI大的數(shù)都在K1的右面(后續(xù)的再向右存放),從K1向右掃描。要求編寫函數(shù)JsValue()實現(xiàn)此功能,最后調(diào)用函數(shù)writeDat()把新序列輸出到文件out90.dat中。說明:在程序中已給出了.10個序列,每個序列中有9個正整數(shù),并存入數(shù)組a[10][9]中,分別求出這10個新序列。例如:序列排序前{6,8,9,1,2,5,4,7,3}序列排序后{3,4,5,2,1,6,8,9,7}注意:部分源程序已給出。請勿改動主函數(shù)main()和寫函數(shù)writeDat()的內(nèi)容。試題程序:#includejsValue(inta[lO][9]){}main(){inta[10][9]={{6,8,9,1,2,5,4,7,3},{3,5,8,9,1,2,6,4,7},{8,2,1,9,3,5,4,6,7},{3,5,1,2,9,8,6,7,4},{4,7,8,9,1,2,5,3,6},{4,7,3,5,1,2,6,8,9},{9,1,3,5,8,62,4,7}{2,6,1,9,8,35,7,4}{5,3,7,9,1,82,6,4}{7,1,3,2,5,89,4,6}};inti,j;jsValue(a);for(i=0;i<10;i++){for(j=0;j<9;j++){printf("%d",a[i][j]);if(j<=7)printf(",");}printf("\n");}writeDat(a);}writeDat(intail0][9]){FILE*fp;inti,j;fp=fopen("outg0.dat","w");for(i=0;i<10;i++){for(j=0;j<9;j++){fprintf(fp,"%d",a[i][j]);if(j<=7)fprintf(fp,",");}fprintf(fp,"\n");}fclose(fp);}標(biāo)準(zhǔn)答案:voidjsValue(inta[10][9]){intvalue,i,j,k,hum;for(i=0;i<10;i++){value=a[i][0]);/*將一行的第一個元素賦給value*/for{j=0;j<9;j++)if(a[i][j]<value)/*若后面的數(shù)中有比第土個數(shù)據(jù)小的數(shù)*/{num=a[i][j];/*則把這個數(shù)取出,賦給num*/for(k=j;k>0;k--)/*將這個數(shù)據(jù)左側(cè)的數(shù)依次向右移動*/{a[i][k]=a[i][k-1];}a[i][0]=num;/*再將這個數(shù)放在最左側(cè)*/}}}知識點解析:本題考查的知識點如下:(1)二維數(shù)組的訪問和數(shù)組元素的移動。(2)循環(huán)結(jié)構(gòu)和判斷結(jié)構(gòu)的嵌套使用。數(shù)據(jù)存放在一個二維數(shù)組中,每一行數(shù)為數(shù)據(jù)處理的基本單位。將第1個數(shù)取出依次和后面的數(shù)比較,若后面的數(shù)中有比第1個數(shù)據(jù)小的數(shù),則將這個數(shù)取出。將這個數(shù)據(jù)左側(cè)的數(shù)依次向右移動(包括第1個數(shù)),然后將這個數(shù)放在最左側(cè)。掃描完一行后,比第1個數(shù)小的數(shù)就都在第1個數(shù)的左側(cè),而比它大的就在它的右側(cè)。對數(shù)的掃描和移動均可以使用循環(huán)實現(xiàn)。再使用循環(huán)實現(xiàn)對每一行數(shù)據(jù)的訪問。國家三級(數(shù)據(jù)庫技術(shù))機(jī)試模擬試卷第9套一、程序設(shè)計題(本題共1題,每題1.0分,共1分。)1、已知在文件IN4.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)品名稱從大到小進(jìn)行排列,若產(chǎn)品名稱相同,則按金額從大到小進(jìn)行排列,最終排列結(jié)果仍存入結(jié)構(gòu)數(shù)組sell中,最后調(diào)用函數(shù)WriteDat()把結(jié)果輸出到文件OUT4.DAT中。注意:部分源程序已給出。請勿改動主函數(shù)main()、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDat(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論