2、j=i+1;jar[j]){tmp=ar[i];ar[i]=ar[j];ar[j]=tmp;}/*for(i=0;i<11;i++)printf("%d",ar[i]);*///此處可以打印出data中的成績排名情況。chuansong(ar);}duqu(n1){inti,paixu[11];FILE*fp;paixu[10]=n1;if((fp=fopen("d:\data.txt","r+"))==NULL){printf("Cannotopenfile");exit(0);}while(!feof(fp)){fo
3、r(i=0;i<10;i++)fscanf(fp,"%d",&paixu[i]);}printf("");fclose(fp);sort(paixu,11);}voidmain(){inti,j,n=0,m=0;intsuiji[5];intcaice[5];intk[3];srand((int)time(NULL));//定義rand的隨機(jī)種子,如果不定義,rand默認(rèn)種子值是1。for(i=0;i<5;i++)//每次運行時刻產(chǎn)生不同的隨機(jī)數(shù)列。suiji[i]=rand()%10;do{k[0]=0;k[1]=0;k[2]=0;printf("Ple
4、aseenteryour5guessnumbers:");for(i=0;i<5;i++)scanf("%d",&caice[i]);for(i=0;i<5;i++){if(suiji[i]==caice[i])k[0]++;}for(i=0;i<5;i++){for(j=0;j<5;j++){if(caice[j]==suiji[i]){k[2]++;break;}}}k[1]=(k[2]-k[0]);printf("Theresultis:")printf("%dY%dN",k[0],k[1]);printf("Therealresultis:
5、");for(i=0;i<5;i++)printf("%d",suiji[i]);//此處用于打印電腦產(chǎn)生的隨機(jī)數(shù)的真實值。n++;m++;}while(m<9&&(k[0]!=5));if(m<9&&(k[0]=5)){printf("Youarewin");duqu(n);}elseprintf("Thegameisover");}五、結(jié)果分析(1)、先調(diào)試主函數(shù),主函數(shù)主要功能是完成電腦產(chǎn)生的隨機(jī)數(shù)與用戶輸入的5個數(shù)進(jìn)行比較,并給出結(jié)果,同時會調(diào)用子函數(shù),調(diào)試主函數(shù)時,先把duqu()子函數(shù)屏蔽掉,僅看輸出的n值來判定主函數(shù)的正誤,從而確保主
6、函數(shù)是正確的,即如果用戶輸入超過9次,屏幕顯示“Thegameisover”n值大于9,如果用戶在9次機(jī)會內(nèi)猜對的話,輸出的n值小于9。(2)、編寫duqu()函數(shù),duqu()的形參值是main()函數(shù)傳遞過來的n值,主要功能讀取d盤下的data文檔中的十個數(shù),定義大小為11的數(shù)組來存放讀取的10個數(shù)和n的值,在編寫duqu()函數(shù)時,最好單獨編寫,至于n的值,先可當(dāng)成已知值給予,然后調(diào)試,看數(shù)組中的數(shù)是否正確,若不正確,則繼續(xù)調(diào)試,直至正確為止。(3)、編寫sort()函數(shù),其編法采用冒泡法對數(shù)組中的11個數(shù)進(jìn)行排序,各位同學(xué)對此已經(jīng)很熟悉,在此不作多講。
7、(4)、編寫chuansong()函數(shù),此函數(shù)通俗點說可以看成是duqu()函數(shù)的逆過程,即把排序好的11個數(shù)前10位送到data文檔中保存起來。(5)、在確保以上四個模塊正確的前提下,把這四個模塊“縫合”到一起,并調(diào)試觀察結(jié)果。(6)、例如某用戶在9次內(nèi)沒有猜對其5個數(shù)的過程如下:例如用戶在第二次就猜對了六、調(diào)試過程中的問題1、在主函數(shù)中首先遇到的問題是產(chǎn)生隨機(jī)數(shù)問題,rand(),srand()的使用,我們先運行兩個程序:(1)#include#includemain(){inti,j;for(i=0;i<10;i+
8、+){j=rand()%10;prin