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