欢迎来到天天文库
浏览记录
ID:35109951
大小:118.50 KB
页数:10页
时间:2019-03-18
《四、设计源程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、四、设计源程序#include#include#includevoidchuansong(intar[]){inti;FILE*fp;if((fp=fopen("d:\data.txt","w+"))==NULL){printf("Cannotopenfile");exit(0);}for(i=0;i<10;i++)fprintf(fp,"%4d",ar[i]);fclose(fp);}voidsort(intar[],intsz){inti,j,tmp;for(i=0;i2、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)){fo3、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("Ple4、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的值,先可当成已知值给予,然后调试,看数组中的数是否正确,若不正确,则继续调试,直至正确为止。(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
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的值,先可当成已知值给予,然后调试,看数组中的数是否正确,若不正确,则继续调试,直至正确为止。(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
此文档下载收益归作者所有