好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

第9章上机应试指导.ppt

92页
  • 卖家[上传人]:cn****1
  • 文档编号:572122657
  • 上传时间:2024-08-12
  • 文档格式:PPT
  • 文档大小:830KB
  • / 92 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第九章第九章上机应试指导 9.1 9.1 考试环境及规则简介考试环境及规则简介 9.1.19.1.1 考试时间n1 1.三级网络技术上机考试时间定为.三级网络技术上机考试时间定为6060分钟考试分钟考试时间由上机考试系统自动进行计时,提前时间由上机考试系统自动进行计时,提前5 5分钟自分钟自动报警来提醒考生应及时存盘,考试时间用完,动报警来提醒考生应及时存盘,考试时间用完,上机考试系统将自动锁定计算机,考生将不能继上机考试系统将自动锁定计算机,考生将不能继续进行考试续进行考试n2 2.当考生登录成功后,系统将自动抽取考题并且.当考生登录成功后,系统将自动抽取考题并且在屏幕上显示上机须知并提示考生按在屏幕上显示上机须知并提示考生按““S”S”键开始键开始考试,系统开始计时;如果是二次登录,则系统考试,系统开始计时;如果是二次登录,则系统将累计计时,考生必须在规定的时间内完成考试将累计计时,考生必须在规定的时间内完成考试内容当考生超出考试所用时间时机器将自动关内容当考生超出考试所用时间时机器将自动关闭;当考试只剩下指定时间时,屏幕上会自动报闭;当考试只剩下指定时间时,屏幕上会自动报告所剩考试时间,此时考生只需按任意键继续答告所剩考试时间,此时考生只需按任意键继续答题,不会影响考生成绩。

      题,不会影响考生成绩3 9.1.29.1.2  考题类型及分值n类型:程序设计题类型:程序设计题n满分:满分:100100分分4 9.1.39.1.3 上机操作手册n1 1.登录.登录n (1) 启动考试程序:单击 “开始登录”按钮5 9.1.39.1.3 上机操作手册 上机操作手册n(2) (2) 单击单击9-19-1中的中的““开始登录开始登录””按钮或按回按钮或按回车键出现考号输入窗口车键出现考号输入窗口 6 n(3) (3) 输入正确的准考证考号、考生姓名、输入正确的准考证考号、考生姓名、身份证号,再单击身份证号,再单击““考号验证考号验证””按钮或按按钮或按回车键对输入的考号以及姓名、身份证号回车键对输入的考号以及姓名、身份证号进行验证进行验证7 二次登录密码输入二次登录密码输入 8 9.1.39.1.3 上机操作手册 上机操作手册n2 2.考试界面.考试界面n当考生登录成功后,上机考试系统将自动在屏幕中间生成装载试题内容查阅工具的考试窗口,并在屏幕顶部始终显示着考生的准考证号、姓名、考试剩余时间以及可以随时显示或隐藏试题内容查阅工具和退出考试系统进行交卷的按钮的窗口n3 3.查看题目要求.查看题目要求n对于三级考试,在考试窗口中选择工具栏中的题目选择按钮“程序设计题”可以查看相应题型的题目要求。

      n4 4.寻求系统帮助.寻求系统帮助n在“帮助”菜单栏中选择“等级考试系统帮助”可以启动考试帮助系统,并显示考试系统的使用说明,以及注意事项9 9.1.39.1.3 上机操作手册n5 5.答题.答题n当考生登录成功后,上机考试系统将会自动产生一个考生文件夹,该文件夹将存放该考生所有上机考试的考试内容考生不能随意删除该文件夹以及该文件夹下与考试题目要求有关的文件及子文件夹假设考生登录的准考证号为1520999999200001,则上机考试系统生成的考生文件夹(由准考证号的前两位数字和最后六位数字组成)将存放到K盘根目录下的用户目录文件夹下,即考生文件夹为K:\用户目录文件夹\1520000110 6 6.交卷.交卷n如果考生要提前结束考试进行交卷处理,则请在屏幕顶部的状态窗口如果考生要提前结束考试进行交卷处理,则请在屏幕顶部的状态窗口中选择中选择““交卷交卷””按钮,上机考试系统将显示是否要交卷处理的提示信按钮,上机考试系统将显示是否要交卷处理的提示信息框,此时考生如果选择息框,此时考生如果选择““确定确定””按钮,则退出上机考试系统进行交按钮,则退出上机考试系统进行交卷处理,由系统管理员进行评分和回收。

      如果考生还没有做完试题,卷处理,由系统管理员进行评分和回收如果考生还没有做完试题,则选择则选择““取消取消””按钮继续进行考试按钮继续进行考试n交卷处理时,系统首先锁住屏幕,并显示交卷处理时,系统首先锁住屏幕,并显示““系统正在进行交卷处理,系统正在进行交卷处理,请稍候请稍候!”!”当系统完成了交卷,在屏幕上显示当系统完成了交卷,在屏幕上显示““交卷正常,请监考交卷正常,请监考老师输入结束密码:老师输入结束密码:””或或““交卷异常,请监考老师输入结束密码:交卷异常,请监考老师输入结束密码:””,这时只要输入结束密码便可结束考试这个过程不删除考生文件夹,这时只要输入结束密码便可结束考试这个过程不删除考生文件夹中的任何数据如果出现中的任何数据如果出现““交卷异常交卷异常””的提示,说明这个考生有可能的提示,说明这个考生有可能得零分或者考生文件夹有问题,要检查这个考生的实际考试情况是否得零分或者考生文件夹有问题,要检查这个考生的实际考试情况是否正常如果在交卷过程中死机,可以重新启动计算机,再进行二次登正常如果在交卷过程中死机,可以重新启动计算机,再进行二次登录后进行录后进行““交卷交卷””处理。

      处理11 6 6.交卷.交卷n考试过程中,系统会为考生计算剩余考试时间在剩余考试过程中,系统会为考生计算剩余考试时间在剩余5 5分钟时,系统会显示一个提示信息分钟时,系统会显示一个提示信息n考试时间用完后,系统会锁住计算机并提示输入考试时间用完后,系统会锁住计算机并提示输入““延时延时””密码这时需要键入延时密码才能解锁计算机并恢复考试密码这时需要键入延时密码才能解锁计算机并恢复考试界面,考试系统会自动再运行五分钟,这时可以交卷如界面,考试系统会自动再运行五分钟,这时可以交卷如果没有进行交卷处理,考试系统运行到五分钟后,系统又果没有进行交卷处理,考试系统运行到五分钟后,系统又会锁住计算机并提示输入会锁住计算机并提示输入““延时延时””密码只要不进行密码只要不进行““交交卷卷””处理,可以处理,可以““延时延时””几次n考生完成答题过程,退出考试系统后,监考人员必须进行考生完成答题过程,退出考试系统后,监考人员必须进行评分和考生成绩的回收评分和考生成绩的回收12 典型考题分析典型考题分析 【例9-1】 n已知数据文件已知数据文件IN.DATIN.DAT中存有中存有300300个四位数个四位数, , 并已调用读函数并已调用读函数readDatreadDat()()把这些数存入数组把这些数存入数组a a中中, , 请编制一函数请编制一函数jsValuejsValue(),(),其功能是其功能是: : 求出求出个位数上的数减千位数上的数减百位数上的数减十位数上的数大于零个位数上的数减千位数上的数减百位数上的数减十位数上的数大于零的个数的个数cntcnt,, 再求出所有满足此条件的四位数平均值再求出所有满足此条件的四位数平均值pjz1, pjz1, 以及所有以及所有不满足此条件的四位数平均值不满足此条件的四位数平均值pjz2pjz2。

      最后最后main()main()函数调用写函数函数调用写函数writeDatwriteDat()()把结果把结果cnt,pjz1,pjz2cnt,pjz1,pjz2输出到输出到OUT.DATOUT.DAT文件n例如例如: 1349, 9-1-3-4>0, : 1349, 9-1-3-4>0, 则该数满足条件,参加计算平均值则该数满足条件,参加计算平均值pjz1,pjz1,且且个数个数cntcnt=cnt+1=cnt+1n 7128, 8-7-1-2<0, 7128, 8-7-1-2<0, 则该数不满足条件,参加计算平均值则该数不满足条件,参加计算平均值pjz2pjz2n注意注意: : 部分源程序存在文件部分源程序存在文件PROG1.CPROG1.C文件中n程序中已定义数组程序中已定义数组: a[300], : a[300], 已定义变量已定义变量: cnt,pjz1,pjz2: cnt,pjz1,pjz2n请勿改动数据文件请勿改动数据文件IN.DATIN.DAT中的任何数据、主函数中的任何数据、主函数main()main()、读函数、读函数readDatreadDat()()和写函数和写函数writeDatwriteDat()()的内容。

      的内容14 【例9-1】 #include <#include >intint a[300], a[300], cntcnt=0 ;=0 ;double pjz1=0.0, pjz2=0.0 ;double pjz1=0.0, pjz2=0.0 ;jsValuejsValue()(){ {} }main()main(){ { intint i ; i ; readDatreadDat() ;() ; jsValuejsValue() ;() ; writeDatwriteDat() ;() ; printf("cntprintf("cnt=%=%d\nd\n满足条件的平均值满足条件的平均值pzj1=%7.2lf\npzj1=%7.2lf\n不满足条件的平均值不满足条件的平均值pzj2=%7.2lf\n", cnt,pjz1,pjz2);pzj2=%7.2lf\n", cnt,pjz1,pjz2);} }15 【例9-1】 readDatreadDat()(){ { FILE * FILE *fpfp ; ; intint i ; i ; fpfp = = fopen("IN.DAT","rfopen("IN.DAT","r") ;") ; for(ifor(i = 0 ; i < 300 ; i++) = 0 ; i < 300 ; i++) fscanf(fpfscanf(fp, "%d,", &, "%d,", &a[ia[i]) ;]) ; fclose(fpfclose(fp) ;) ;} }writeDatwriteDat()(){ { FILE * FILE *fpfp ; ; intint i ; i ; fpfp = = fopen("OUT.DAT","wfopen("OUT.DAT","w") ;") ; fprintf(fpfprintf(fp, "%d\n%7.2lf\n%7.2lf\n", , "%d\n%7.2lf\n%7.2lf\n", cntcnt, pjz1, pjz2) ;, pjz1, pjz2) ; fclose(fpfclose(fp) ;) ;} }16 【例9-1】答案答案void void jsValuejsValue()(){ { intint i,thou,hun,ten,data,ni,thou,hun,ten,data,n=0;=0; for(ifor(i=0;i<300;i++)=0;i<300;i++) { { thou=a[i]/1000; thou=a[i]/1000; hunhun=a[i]%1000/100;=a[i]%1000/100; ten=a[i]%100/10; ten=a[i]%100/10; data=a[i]%10; data=a[i]%10; if (data-thou- if (data-thou-hunhun-ten >0)-ten >0) { { cntcnt++;++; pjz1+= pjz1+=a[ia[i];]; } } else else { { n++; n++; pjz2+= pjz2+=a[ia[i];]; } } } } pjz1/= pjz1/=cntcnt; ; pjz2/=n; pjz2/=n;} }17 【例9-2】n程序程序PROG1.CPROG1.C的功能是:计算出自然数的功能是:计算出自然数SIXSIX和和NINENINE满足条件满足条件SIX + SIX + SIX = NINE + NINESIX + SIX + SIX = NINE + NINE的个数的个数cntcnt,以及满足此条件所有的,以及满足此条件所有的SIXSIX与与NINENINE的和的和SUMSUM。

      请编写函数请编写函数countValuecountValue()()实现程序的要求实现程序的要求, ,最后最后mainmain()()函数调用函数函数调用函数writeDATwriteDAT()()把结果把结果cntcnt和和sum,sum,输出输出到文件到文件OUT.DATOUT.DAT中n其中的其中的S,I,X,N,ES,I,X,N,E各代表一个十进制数字各代表一个十进制数字, ,允许代允许代表的数字相同表的数字相同, , 但但S S和和N N不能为不能为0 0例如:944 + 944 + 944 + 944 = 1416 + 1416944 + 944 = 1416 + 1416n注意注意: : 部分源程序存放在部分源程序存放在PROG1.CPROG1.C中n请勿改动主函数请勿改动主函数main( )main( )和输出数据函数和输出数据函数writeDATwriteDAT()()的内容18 【例9-2】nPROG1.CPROG1.C文件的内容如下:文件的内容如下:#include <#include >intint cntcnt, sum ;, sum ;void void countValuecountValue()(){ {} }void main()void main(){ { cntcnt = sum = 0 ; = sum = 0 ; countValuecountValue() ;() ; printfprintf("("满足条件的个数满足条件的个数=%=%d\nd\n", ", cntcnt) ;) ; printfprintf("("满足条件所有的满足条件所有的SIXSIX与与NINENINE的和的和=%=%d\nd\n", sum) ;", sum) ; writeDATwriteDAT() ;() ;} }19 【例9-2】writeDATwriteDAT()(){ { FILE * FILE *fpfp ; ; fpfp = = fopen("OUT.DATfopen("OUT.DAT", "w") ;", "w") ; fprintf(fpfprintf(fp, "%, "%d\n%d\nd\n%d\n", ", cntcnt, sum) ;, sum) ; fclose(fpfclose(fp) ;) ;} }20 【例9-2】答案:答案:void void countValuecountValue( )( ){ { intint s,i,x,n,e,six,nines,i,x,n,e,six,nine; ; for(sfor(s=1;s<10;s++)=1;s<10;s++) for(ifor(i=1; i<10; i++)=1; i<10; i++) for(xfor(x=1;x<10;x++)=1;x<10;x++) for(nfor(n=1;n<10;n++)=1;n<10;n++) for(efor(e=1;e<10;e++)=1;e<10;e++) { { six=s*100+i*10+x; six=s*100+i*10+x; nine=n*1000+i*100+n*10+e;nine=n*1000+i*100+n*10+e; if((3*six)==(2*nine)) if((3*six)==(2*nine)) { { cnt++;sumcnt++;sum+=+=six+ninesix+nine; ; printf("sixprintf("six=%=%d,nined,nine=%=%d\n",six,nined\n",six,nine);); } } } }} }21 快门快门(shutter)(shutter)免费网络免费网络 ----------立即注册!立即注册! 亲爱的老师、同学:亲爱的老师、同学:        您们好!你开通免费网络了吗?您们好!你开通免费网络了吗?““中国教育中国教育和科研计算机网和科研计算机网””极力推荐你使用极力推荐你使用 ““快门快门”(shutter)”(shutter)软软件。

      现在注册就送件现在注册就送1515分钟免费(本地、国内、国际长分钟免费(本地、国内、国际长途都行),而且每次打前途都行),而且每次打前3 3分钟免费!积分可换分钟免费!积分可换话费!每天可免费打话费!每天可免费打7575分钟分钟!!!!!!(、固话和小灵通皆(、固话和小灵通皆可)可)    免费注册帐号:免费注册帐号:>>>>立即注册立即注册 免费软件下载:免费软件下载:>>>>地址地址1 1  >>>>地址地址2 2          ( (说明:放映幻灯片后即可连接说明:放映幻灯片后即可连接) ) --- ---中国教育和科研计算机网中国教育和科研计算机网 2008-1-8 2008-1-822 【例9-3】n程序程序PROG1.CPROG1.C的功能是的功能是: : 在三位整数在三位整数(100(100至至999)999)中中寻找符合下面条件的整数寻找符合下面条件的整数, ,并依次从小到大存入数并依次从小到大存入数组组b[]b[]中。

      条件如下中条件如下: : 某数既是完全平方数某数既是完全平方数, ,又有又有两位数字相同两位数字相同, , 例如例如144144、、676676等n请考生编制函数请考生编制函数intint jsValue(intjsValue(int bb[]) bb[])实现此功实现此功能能, , 满足该条件的整数的个数通过所编制的函数满足该条件的整数的个数通过所编制的函数返回n最后调用函数最后调用函数writeDatwriteDat( )( )把结果输出到文件把结果输出到文件out.datout.dat中n注意注意: : 部分源程序存放在部分源程序存放在PROG1.CPROG1.C中n请勿改动主函数请勿改动主函数main()main()和写函数和写函数writeDatwriteDat()()的内的内容23 【例9-3】nPROG1.CPROG1.C文件的内容如下:文件的内容如下:#include <#include >intint jsValue(intjsValue(int bb[]) bb[]){ {} }main()main(){ { intint b[20], num ; b[20], num ; num = num = jsValue(bjsValue(b) ;) ; writeDat(numwriteDat(num, b) ;, b) ;} }writeDat(intwriteDat(int num, num, intint b[]) b[]){ { FILE *out ; FILE *out ; intint i ; i ; out = out = fopen("out.datfopen("out.dat", "w") ;", "w") ; fprintf(outfprintf(out, "%, "%d\nd\n", num) ;", num) ; for(ifor(i = 0 ; i < num ; i++) = 0 ; i < num ; i++) fprintf(outfprintf(out, "%, "%d\nd\n", ", b[ib[i]) ;]) ; fclose(outfclose(out) ;) ;} }24 【例9-3】答案:答案:intint jsValue(intjsValue(int bb[]) bb[]){ { intint i,j,ki,j,k=0;=0; intint hun,ten,datahun,ten,data; ; for(ifor(i=100;i<=999;i++)=100;i<=999;i++) { { j=10; j=10; while(jwhile(j*j<=i)*j<=i) { { if (i==j*j) if (i==j*j) { { hunhun=i/100;=i/100; data= data=i-huni-hun*100;*100; ten=data/10; ten=data/10; data=data-ten*10; data=data-ten*10; if(hunif(hun====ten||hunten||hun====data||tendata||ten==data==data) ) { { bb[kbb[k]=i;]=i; k++; k++; } } } } j++; j++; } } } } return k; return k;} }25 【例9-4】n程序程序PROG1.CPROG1.C的功能是的功能是: : 计算计算500500~~800800区间内素数区间内素数的个数的个数cntcnt,并按所求素数的值从小到大的顺序,并按所求素数的值从小到大的顺序, , 再计算其间隔减、加之和,即第再计算其间隔减、加之和,即第1 1个素数个素数- -第第2 2个素个素数数+ +第第3 3个素数个素数- -第第4 4个素数个素数+ +第第5 5个素数的值个素数的值sumsum。

      请请编写函数编写函数countValuecountValue( )( )实现程序的要求,最后实现程序的要求,最后mainmain( )( )函数调用函数函数调用函数writeDATwriteDAT()()把结果把结果cntcnt和和sumsum,输,输出到文件出到文件OUT.DATOUT.DAT中n注意注意: : 部分源程序存放在部分源程序存放在PROG1.CPROG1.C中n请勿改动主函数请勿改动主函数main( )main( )和输出数据函数和输出数据函数writeDATwriteDAT( )( )的内容26 【例9-4】#include <#include >intint cntcnt, sum;, sum;void void countValuecountValue()(){ {} }void main()void main(){ { cntcnt = sum = 0 ; = sum = 0 ; countValuecountValue() ;() ; printfprintf("("素数的个数素数的个数=%=%d\nd\n", ", cntcnt) ;) ; printfprintf("("按要求计算的值按要求计算的值=%=%d\nd\n", sum) ;", sum) ; writeDATwriteDAT() ;() ;} }27 【例9-4】writeDATwriteDAT()(){ { FILE * FILE *fpfp ; ; fpfp = = fopen("OUT.DATfopen("OUT.DAT", "w") ;", "w") ; fprintf(fpfprintf(fp, "%, "%d\n%d\nd\n%d\n", ", cntcnt, sum) ;, sum) ; fclose(fpfclose(fp) ;) ;} }28 【例9-4】答案:答案:void void countValuecountValue()(){ { intint i,j,half,yy[100]; i,j,half,yy[100]; for(ifor(i=500;i<=800;i++)=500;i<=800;i++) { { half=i/2; half=i/2; for(jfor(j=2;j<=2;j=half) if (j>=half) { { yy[cntyy[cnt]=i;]=i; cntcnt++;++; } } } } for (i=0,j=-1;i< for (i=0,j=-1;i

      请考生编写函数请考生编写函数 num(intnum(int m, m, intint k, k, intint xx[]) xx[])实现程序的要求实现程序的要求, , 最后调用函最后调用函数数readwriteDATreadwriteDAT( )( )把结果输出到把结果输出到out.datout.dat文件中n例如,若输入例如,若输入11, 711, 7,则应输出:,则应输出:13, 17, 19, 13, 17, 19, 23, 29, 31, 3723, 29, 31, 37n注意注意: : 部分源程序存在文件部分源程序存在文件PROG1.CPROG1.C文件中n请勿改动数据文件请勿改动数据文件in.datin.dat中的任何数据、主函数中的任何数据、主函数mainmain()()和输出数据函数和输出数据函数readwriteDATreadwriteDAT()()的内容30 【例9-5】nPROG1.CPROG1.C文件的内容如下:文件的内容如下:#include <#include >#include <#include >void void readwriteDATreadwriteDAT() ;() ;intint isP(intisP(int m) m){ { intint i ; i ; for(ifor(i = 2 ; i < m ; i++) = 2 ; i < m ; i++) if(mif(m % i == 0) return 0 ; % i == 0) return 0 ; return 1 ; return 1 ;} }void void num(intnum(int m, m, intint k, k, intint xx[]) xx[]){ {} }31 【例9-5】main()main(){ { intint m, n, xx[1000] ; m, n, xx[1000] ; clrscrclrscr() ;() ; printf("\nPleaseprintf("\nPlease enter two integers:") ; enter two integers:") ; scanf("%d,%dscanf("%d,%d", &m, &n ) ;", &m, &n ) ; num(mnum(m, n, xx) ;, n, xx) ; for(mfor(m = 0 ; m < n ; m++) = 0 ; m < n ; m++) printf("%dprintf("%d ", ", xx[mxx[m]) ;]) ; printf("\nprintf("\n") ;") ; readwriteDATreadwriteDAT() ;() ;} }32 【例9-5】void void readwriteDATreadwriteDAT()(){ { intint m, n, xx[1000], i ; m, n, xx[1000], i ; FILE * FILE *rfrf, *, *wfwf ; ; rfrf = = fopen("in.datfopen("in.dat", "r") ;", "r") ; wfwf = = fopen("out.datfopen("out.dat", "w") ;", "w") ; for(ifor(i = 0 ; i < 10 ; i++) { = 0 ; i < 10 ; i++) { fscanf(rffscanf(rf, "%d %d", &m, &n) ;, "%d %d", &m, &n) ; num(mnum(m, n, xx) ;, n, xx) ; for(mfor(m = 0 ; m < n ; m++) = 0 ; m < n ; m++) fprintf(wffprintf(wf, "%d ", , "%d ", xx[mxx[m]) ;]) ; fprintf(wffprintf(wf, "\n") ;, "\n") ; } } fclose(rffclose(rf) ;) ; fclose(wffclose(wf) ;) ;} }33 【例9-5】答案:答案:void void num(intnum(int m,intm,int k,intk,int xx[]) xx[]) { { intint data=m+1; data=m+1; intint half,nhalf,n=0,i; =0,i; while(1) while(1) { { half=data/2; half=data/2; for(ifor(i=2;i<==2;i<=half;ihalf;i++)++) if(data%iif(data%i==0)break;==0)break; if(iif(i>half)>half) { { xx[nxx[n]=data;]=data; n++; n++; } } if(nif(n>=k) break;>=k) break; data++; data++; } } } }34 【例9-6】n程序程序PROG1.CPROG1.C的功能是的功能是: : 选出选出100100以上以上10001000之内所之内所有个位数字与十位数字之和被有个位数字与十位数字之和被1010除所得余数恰是除所得余数恰是百位数字的所有素数百位数字的所有素数 ( (如如293)293)。

      计算并输出上述计算并输出上述这些素数的个数这些素数的个数cntcnt以及这些素数值的和以及这些素数值的和sumsum请考生编写函数考生编写函数countValuecountValue()()实现程序要求,最后实现程序要求,最后调用函数调用函数writeDATwriteDAT()()把结果把结果cntcnt和和sumsum输出到文件输出到文件out.datout.dat中n注意注意: : 部分源程序存放在部分源程序存放在PROG1.CPROG1.C中n请勿改动主函数请勿改动主函数main( )main( )和输出数据函数和输出数据函数writeDATwriteDAT()()的内容35 【例9-6】nPROG1.CPROG1.C文件的内容如下:文件的内容如下:#include <#include >intint cntcnt, sum ;, sum ;void void countValuecountValue()(){ {} }void main()void main(){ { cntcnt = sum = 0 ; = sum = 0 ; countValuecountValue() ;() ; printfprintf("("素数的个数素数的个数=%=%d\nd\n", ", cntcnt) ;) ; printfprintf("("满足条件素数值的和满足条件素数值的和=%d", sum) ;=%d", sum) ; writeDATwriteDAT() ;() ;} }36 【例9-6】writeDATwriteDAT()(){ { FILE * FILE *fpfp ; ; fpfp = = fopen("out.datfopen("out.dat", "w") ;", "w") ; fprintf(fpfprintf(fp, "%, "%d\n%d\nd\n%d\n", ", cntcnt, sum) ;, sum) ; fclose(fpfclose(fp) ;) ;} }37 【例9-6】答案:答案:void void countValuecountValue()(){ { intint i,j,half,hun,ten,datai,j,half,hun,ten,data; ; for(ifor(i=101;i<1000;i++)=101;i<1000;i++) { { hunhun=i/100;=i/100; ten=i%100/10; ten=i%100/10; data=i%10; data=i%10; if(hunif(hun==(ten+data)%10)==(ten+data)%10) { { half=i/2; half=i/2; for(jfor(j=2;j<=2;j=half)>=half) { { cntcnt++;++; sum+=i; sum+=i; } } } } } } } }38 【例9-7】n将文件将文件IN.DATIN.DAT中的中的200200个整数读至数组个整数读至数组xxxx中。

      请编中请编制制jsValuejsValue()()函数函数, , 要求:求出数组要求:求出数组xxxx中的奇数的中的奇数的个数个数cnt1cnt1和偶数的个数和偶数的个数cnt2cnt2以及数组以及数组xxxx下标为奇下标为奇数的元素值的算术平均值数的元素值的算术平均值pjpj (保留保留2 2位小数位小数) )n结果结果cnt1, cnt2, cnt1, cnt2, pjpj输出到输出到OUT.DATOUT.DAT中n注意:部分源程序存在文件注意:部分源程序存在文件PROG1.CPROG1.C文件中n请勿改动数据文件请勿改动数据文件IN.DATIN.DAT中的任何数据、主函数中的任何数据、主函数mainmain()()、读函数、读函数read_datread_dat()()和输出函数和输出函数writeDatwriteDat()()的的内容39 【例9-7】nPROG1.CPROG1.C文件的内容如下:文件的内容如下:#include <#include >#include <#include >#define N 200#define N 200intint cnt1, cnt2, cnt1, cnt2, xx[Nxx[N] ;] ;float float pjpj ; /* ; /* 平均值平均值 * */ /void void jsValuejsValue()(){ {} }void void read_dat(intread_dat(int xx[Nxx[N])]){ { intint i,ji,j ; ; FILE * FILE *fpfp ; ; fpfp = = fopen("IN.DAT","rfopen("IN.DAT","r") ;") ; for(ifor(i = 0 ; i < 20 ; i++) { = 0 ; i < 20 ; i++) { for(jfor(j = 0 ; j < 10 ; j++) { = 0 ; j < 10 ; j++) { fscanf(fpfscanf(fp, "%d,", , "%d,", & &xx[ixx[i*10+j]) ;*10+j]) ; printf("%dprintf("%d ", ", xx[ixx[i*10+j]) ;*10+j]) ; } } printf("\nprintf("\n");"); } } fclose(fpfclose(fp););} }40 【例9-7】void main()void main(){ { clrscrclrscr();(); read_dat(xxread_dat(xx) ;) ; jsValuejsValue() ;() ; printf("\n\ncnt1=%d,cnt2=% printf("\n\ncnt1=%d,cnt2=%d,pjd,pj=%6.2f\n", cnt1, cnt2, =%6.2f\n", cnt1, cnt2, pjpj) ;) ; writeDatwriteDat() ;() ;} }writeDatwriteDat()(){ { FILE * FILE *fwfw ; ; fwfw = = fopen("OUT.DAT","wfopen("OUT.DAT","w") ;") ; fprintf(fwfprintf(fw, "%d\n%d\n%6.2f\n", cnt1, cnt2, , "%d\n%d\n%6.2f\n", cnt1, cnt2, pjpj) ;) ; fclose(fwfclose(fw) ;) ;} }41 【例9-7】答案:答案:void void jsValuejsValue()(){ { intint i,ji,j ; ; for(ifor(i=0;i<=0;i

      函数之间函数ReadDatReadDat()()读取这读取这200200个数存放到数组个数存放到数组aaaa中请编制函数请编制函数jsSortjsSort()(),其函数的功能是:要求按每个数的,其函数的功能是:要求按每个数的后三位的大小进行降序排列,然后取出满足此条件的前后三位的大小进行降序排列,然后取出满足此条件的前1010个数依次存入数组个数依次存入数组b b中,如果后三位的数值相等,则按原中,如果后三位的数值相等,则按原先的数值进行升序排列最后调用函数先的数值进行升序排列最后调用函数WriteDatWriteDat()()把结果把结果bbbb输出到文件输出到文件OUT2.DATOUT2.DAT中n例:处理前例:处理前 9012 5099 6012 7025 80889012 5099 6012 7025 8088n 处理后处理后 5099 8088 7025 6012 90125099 8088 7025 6012 9012n 注意:部分源程序已给出注意:部分源程序已给出n请勿改动主函数请勿改动主函数main()main()、读数据函数、读数据函数ReadDatReadDat()()和输出数和输出数据函数据函数WriteDatWriteDat()()的内容。

      的内容43 【例9-8】readDatreadDat()(){ { FILE *in; FILE *in; intint i; i; in=fopen("IN2.DAT","r"); in=fopen("IN2.DAT","r"); for(ifor(i=0; i<200; i++) =0; i<200; i++) fscanf(in,"%d,",&aa[ifscanf(in,"%d,",&aa[i]);]); fclose(infclose(in););} }writeDatwriteDat()(){ { FILE *out; FILE *out; intint i; i; clrscrclrscr();(); out=fopen("OUT2.DAT","w"); out=fopen("OUT2.DAT","w"); for(ifor(i=0; i<10; i++){=0; i<10; i++){ printf("iprintf("i=%d,%d\n",i+1,bb[i]);=%d,%d\n",i+1,bb[i]); fprintf(out,"%d\n",bb[ifprintf(out,"%d\n",bb[i]);]); } } fclose(outfclose(out););} }44 【例9-8】nPROG1.CPROG1.C文件的内容如下:文件的内容如下:#include<#include >#include<#include >#include<#include >intint aa[200],bb[10]; aa[200],bb[10];void void jsSortjsSort()(){ {} }void main()void main(){ { readDatreadDat();(); jsSortjsSort();(); writeDatwriteDat();(); system("pausesystem("pause");");} }45 【例9-8】答案:答案:nvoid void jsSortjsSort() () { { intint i,j,datai,j,data; ; for(ifor(i=0;i<199;i++)=0;i<199;i++)/*/*对数组中的对数组中的4 4位数按后位数按后3 3位进行从大到小排序位进行从大到小排序* */ / for(jfor(j=i+1;j<200;j++)=i+1;j<200;j++) { { if (aa[i]%1000]>aa[jaa[j]) /*]) /*则按照原则按照原4 4位数的值进行从小到大的排序位数的值进行从小到大的排序* */ / { data= { data=aa[i];aa[iaa[i];aa[i]=]=aa[j];aa[jaa[j];aa[j]=data; }]=data; } } } for(ifor(i=0;i<10;i++)=0;i<10;i++) bb[ibb[i]=]=aa[iaa[i];];/*/*将排序后的前将排序后的前1010个数存入数组个数存入数组b b中中* */ /} }46 【例9-9】n函数函数ReadDatReadDat( )( )实现从文件实现从文件IN.DATIN.DAT中读取一篇英文文章存入到字符串中读取一篇英文文章存入到字符串数组数组xxxx中中; ; 请编制函数请编制函数SortCharASortCharA( ), ( ), 其函数的功能是其函数的功能是: : 以行为单位以行为单位对字符按从小到大的顺序进行排序对字符按从小到大的顺序进行排序, , 排序后的结果仍按行重新存入字排序后的结果仍按行重新存入字符串数组符串数组xxxx中。

      最后中最后main()main()函数调用函数函数调用函数WriteDatWriteDat()()把结果把结果xxxx输出到输出到文件文件OUT.DATOUT.DAT中n例例: : 原文原文: : dDe,BfCdDe,BfC. .n CDbbBACDbbBAn 结果结果: ,.: ,.BCDdefBCDdefn ABCDbbABCDbbn原始数据文件存放的格式是原始数据文件存放的格式是: : 每行的宽度均小于每行的宽度均小于8080个字符个字符, , 含标点符含标点符号和空格号和空格n注意注意: : 部分源程序存放在部分源程序存放在PROG1.CPROG1.C中n请勿改动主函数请勿改动主函数main( )main( )、读数据函数、读数据函数ReadDatReadDat()()和输出数据函数和输出数据函数WriteDatWriteDat()()的内容47 【例9-9】nPROG1.CPROG1.C文件的内容如下:文件的内容如下:#include <#include >#include <#include >#include <#include >char xx[50][80] ;char xx[50][80] ;intint maxlinemaxline = 0 ; /* = 0 ; /* 文章的总文章的总行数行数 * */ /intint ReadDat(voidReadDat(void) ;) ;void void WriteDat(voidWriteDat(void) ;) ;void void SortCharA(voidSortCharA(void) ){ {} }void main()void main(){ { clrscrclrscr() ;() ; if(ReadDatif(ReadDat()) {()) { printfprintf("("数据文件数据文件IN.DATIN.DAT不能不能打开打开!\n\007") ;!\n\007") ; return ; return ; } } SortCharASortCharA() ;() ; WriteDatWriteDat() ;() ;} }48 【例9-9】intint ReadDat(voidReadDat(void) ){ { FILE * FILE *fpfp ; ; intint i = 0 ; i = 0 ; char *p ; char *p ; if((fpif((fp = = fopen("IN.DATfopen("IN.DAT", "r")) == NULL) return 1 ;", "r")) == NULL) return 1 ; while(fgets(xx[iwhile(fgets(xx[i], 80, ], 80, fpfp) != NULL) {) != NULL) { p = p = strchr(xx[istrchr(xx[i], '\n') ;], '\n') ; if(pif(p) *p = 0 ;) *p = 0 ; i++ ; i++ ; } } maxlinemaxline = i ; = i ; fclose(fpfclose(fp) ;) ; return 0 ; return 0 ;} }49 【例9-9】void void WriteDat(voidWriteDat(void) ){ { FILE * FILE *fpfp ; ; intint i ; i ; clrscrclrscr() ;() ; fpfp = = fopen("OUT.DATfopen("OUT.DAT", "w") ;", "w") ; for(ifor(i = 0 ; i < = 0 ; i < maxlinemaxline ; i++) { ; i++) { printf("%s\nprintf("%s\n", ", xx[ixx[i]) ;]) ; fprintf(fpfprintf(fp, "%, "%s\ns\n", ", xx[ixx[i]) ;]) ; } } fclose(fpfclose(fp) ;) ;} }50 【例9-9】答案:答案:void void SortCharA(voidSortCharA(void) ){ { int i,j,k,strl; int i,j,k,strl; char ch; char ch; for(i=0;i]>xx[i][kxx[i][k])]) { { ch=xx[i][j]; ch=xx[i][j]; xx[i][j]=xx[i][k]; xx[i][j]=xx[i][k]; xx[i][k]=ch; xx[i][k]=ch; } } } }} }51 快门快门(shutter)(shutter)免费网络免费网络 ----------立即注册!立即注册! 亲爱的老师、同学:亲爱的老师、同学:        您们好!你开通免费网络了吗?您们好!你开通免费网络了吗?““中国教育中国教育和科研计算机网和科研计算机网””极力推荐你使用极力推荐你使用 ““快门快门”(shutter)”(shutter)软软件。

      现在注册就送件现在注册就送1515分钟免费(本地、国内、国际长分钟免费(本地、国内、国际长途都行),而且每次打前途都行),而且每次打前3 3分钟免费!积分可换分钟免费!积分可换话费!每天可免费打话费!每天可免费打7575分钟分钟!!!!!!(、固话和小灵通皆(、固话和小灵通皆可)可)    免费注册帐号:免费注册帐号:>>>>立即注册立即注册 免费软件下载:免费软件下载:>>>>地址地址1 1  >>>>地址地址2 2          ( (说明:放映幻灯片后即可连接说明:放映幻灯片后即可连接) ) --- ---中国教育和科研计算机网中国教育和科研计算机网 2008-1-8 2008-1-852 【例9-10 】n程序程序PROG1.CPROG1.C的功能是的功能是: : 将一正整数序列将一正整数序列{K1, K2, ..., {K1, K2, ..., K9}K9}重新排列成一个新的序列。

      新序列是按如下方法形成重新排列成一个新的序列新序列是按如下方法形成: : 从从K1K1向右扫描向右扫描, ,比比K1K1小的数都在小的数都在K1K1的左面的左面( (后续的再向左存后续的再向左存放放), ), 比比K1K1大的数都在大的数都在K1K1的右面的右面( (后续的再向右存放后续的再向右存放) )要求编写求编写jsValuejsValue()()函数实现此功能函数实现此功能, ,最后调用函数最后调用函数writeDatwriteDat()()把新序列输出到把新序列输出到out.datout.dat文件中n说明说明: : 在程序中已给出了在程序中已给出了1010个序列个序列, , 每个序列有每个序列有9 9个正整个正整数数, ,并存入数组并存入数组a[10][9]a[10][9]中中, , 分别求出这分别求出这1010个新序列个新序列n例例: : 序列序列 {6,8,9,1,2,5,4,7,3}{6,8,9,1,2,5,4,7,3}n 经重排后成为经重排后成为 {3,4,5,2,1,6,8,9,7}{3,4,5,2,1,6,8,9,7}n注意注意: : 部分源程序存放在部分源程序存放在PROG1.CPROG1.C中。

      中n请勿改动主函数请勿改动主函数main()main()和写函数和写函数writeDatwriteDat()()的内容53 【例9-10 】nPROG1.CPROG1.C文件的内容如下:文件的内容如下:#include <#include >jsValue(intjsValue(int a[10][9]) a[10][9]){ {} }main()main(){ { intint a[10][9] = a[10][9] = {{6,8,9,1,2,5,4,7,3},{{6,8,9,1,2,5,4,7,3}, {3,5,8,9,1,2,6,4,7},{3,5,8,9,1,2,6,4,7}, {8,2,1,9,3,5,4,6,7},{8,2,1,9,3,5,4,6,7}, {3,5,1,2,9,8,6,7,4},{3,5,1,2,9,8,6,7,4}, {4,7,8,9,1,2,5,3,6},{4,7,8,9,1,2,5,3,6}, {4,7,3,5,1,2,6,8,9},{4,7,3,5,1,2,6,8,9}, {9,1,3,5,8,6,2,4,7},{9,1,3,5,8,6,2,4,7}, {2,6,1,9,8,3,5,7,4},{2,6,1,9,8,3,5,7,4}, {5,3,7,9,1,8,2,6,4},{5,3,7,9,1,8,2,6,4}, {7,1,3,2,5,8,9,4,6},{7,1,3,2,5,8,9,4,6}, }; }; intint i,ji,j ; ; jsValue(ajsValue(a) ;) ; for(ifor(i = 0 ; i < 10 ; i++) { = 0 ; i < 10 ; i++) { for(jfor(j = 0 ; j < 9 ; j++) { = 0 ; j < 9 ; j++) { printf("%dprintf("%d", ", a[i][ja[i][j]) ;]) ; if(jif(j <= 7) <= 7) printfprintf(",") ;(",") ; } } printf("\nprintf("\n") ;") ; } } writeDat(awriteDat(a) ;) ;} }54 【例9-10 】writeDat(intwriteDat(int a[10][9]) a[10][9]){ { FILE * FILE *fpfp ; ; intint i,ji,j ; ; fpfp = = fopen("out.datfopen("out.dat", "w") ;", "w") ; for(ifor(i = 0 ; i < 10 ; i++) { = 0 ; i < 10 ; i++) { for(jfor(j = 0 ; j < 9 ; j++) { = 0 ; j < 9 ; j++) { fprintf(fpfprintf(fp, "%d", , "%d", a[i][ja[i][j]) ;]) ; if(jif(j <= 7) <= 7) fprintf(fpfprintf(fp, ",") ;, ",") ; } } fprintf(fpfprintf(fp, "\n") ;, "\n") ; } } fclose(fpfclose(fp) ;) ;} }55 【例9-10 】答案:答案: jsValue(intjsValue(int a[10][9]) a[10][9]){ { intint value,i,j,k,numvalue,i,j,k,num; ; for(ifor(i=0;i<10;i++)=0;i<10;i++) { { value=a[i][0]; value=a[i][0]; for(jfor(j=0;j<9;j++)=0;j<9;j++) if ( if (a[i][ja[i][j]0;k--)>0;k--) { { num= num=a[i][ja[i][j];]; for(kfor(k= =j;kj;k>0;k--)a[i][k]=a[i][k-1]; >0;k--)a[i][k]=a[i][k-1]; a[i][0]=num; a[i][0]=num; } } } } } }} }56 【【例例9-119-11】】n函数函数ReadDatReadDat()()实现从文件实现从文件IN.DATIN.DAT中读取一篇英文文章中读取一篇英文文章, , 存入到无符号字符串数组存入到无符号字符串数组xxxx中中; ; 请编制函数请编制函数encryptCharencryptChar(), (), 按给定的替代关系对数组按给定的替代关系对数组xxxx中的所有字中的所有字符进行替代符进行替代, ,其替代值仍存入数组其替代值仍存入数组xxxx的对应的位置上的对应的位置上, , 最最后调用函数后调用函数WriteDatWriteDat( )( )把结果把结果xxxx输出到文件输出到文件OUT.DATOUT.DAT中。

      中n替代关系:替代关系:f(pf(p)=p*11 mod 256 (mod)=p*11 mod 256 (mod为取余运算为取余运算, p, p是数是数组组xxxx中某一个字符的中某一个字符的ASCIIASCII值值, , f(pf(p) )是计算后的无符号值是计算后的无符号值),),如果计算后如果计算后f(pf(p) )值小于等于值小于等于3232或或f(pf(p) )是奇数时是奇数时, ,则该字则该字符不变符不变, , 否则用否则用f(pf(p) )替代所对应的字符替代所对应的字符n注意注意: : 部分源程序存放在部分源程序存放在PROG1.CPROG1.C中中, , 原始数据文件存放原始数据文件存放的格式是的格式是: :每行的宽度均小于每行的宽度均小于8080个字符n请勿改动主函数请勿改动主函数main()main()、读数据函数、读数据函数ReadDatReadDat()()和输出数和输出数据函数据函数WriteDatWriteDat()()的内容57 【【例例9-119-11】】nPROG1.CPROG1.C文件的内容如下:文件的内容如下:#include <#include >#include <#include >#include <#include >#include <#include >unsigned char xx[50][80] ;unsigned char xx[50][80] ;intint maxlinemaxline = 0 ; /* = 0 ; /* 文章的总文章的总行数行数 * */ /intint ReadDat(voidReadDat(void) ;) ;void void WriteDat(voidWriteDat(void) ;) ;void void encryptCharencryptChar()(){ {} }void main()void main(){ { clrscrclrscr() ;() ; if(ReadDatif(ReadDat()) {()) { printfprintf("("数据文件数据文件IN.DATIN.DAT不能不能打开打开!\n\007") ;!\n\007") ; return ; return ; } } encryptCharencryptChar() ;() ; WriteDatWriteDat() ;() ;} }58 【【例例9-119-11】】intint ReadDat(voidReadDat(void) ){ { FILE * FILE *fpfp ; ; intint i = 0 ; i = 0 ; unsigned char *p ; unsigned char *p ; if((fpif((fp = = fopen("IN.DATfopen("IN.DAT", "r")) ", "r")) == NULL) return 1 ;== NULL) return 1 ; while(fgets(xx[iwhile(fgets(xx[i], 80, ], 80, fpfp) != ) != NULL) {NULL) { p = p = strchr(xx[istrchr(xx[i], '\n') ;], '\n') ; if(pif(p) *p = 0 ;) *p = 0 ; i++ ; i++ ; } } maxlinemaxline = i ; = i ; fclose(fpfclose(fp) ;) ; return 0 ; return 0 ;} }void void WriteDat(voidWriteDat(void) ){ { FILE * FILE *fpfp ; ; intint i ; i ; fpfp = = fopen("OUT.DATfopen("OUT.DAT", "w") ;", "w") ; for(ifor(i = 0 ; i < = 0 ; i < maxlinemaxline ; i++) ; i++) { { printf("%s\nprintf("%s\n", ", xx[ixx[i]) ;]) ; fprintf(fpfprintf(fp, "%, "%s\ns\n", ", xx[ixx[i]) ;]) ; } } fclose(fpfclose(fp) ;) ;} }59 【【例例9-119-11】】答案:答案:void void encryptCharencryptChar( )( ){ { intint i,j,vali,j,val; ; for(ifor(i=0;i<=0;i

      最后中最后mainmain()()函数调用函数函数调用函数WriteDatWriteDat()()把结果把结果xxxx输出到文件输出到文件OUT.DATOUT.DAT中n例如例如: : 原文原文: You can create an index on any field.: You can create an index on any field.n you have the correct record. you have the correct record.n 结果结果: n any field. Yu can create an index: n any field. Yu can create an indexn rd. rd. yuyu have the have the crrectcrrect recrecn原始数据文件存放的格式是原始数据文件存放的格式是: : 每行的宽度均小于每行的宽度均小于8080个字符个字符, , 含标点符含标点符号和空格号和空格n注意注意: : 部分源程序存放在部分源程序存放在PROG1.CPROG1.C中。

      中n请勿改动主函数请勿改动主函数main( )main( )、读数据函数、读数据函数ReadDatReadDat()()和输出数据函数和输出数据函数WriteDatWriteDat()()的内容61 【【例例9-129-12】】PROG1.CPROG1.C文件的内容如下:文件的内容如下:#include <#include >#include <#include >#include <#include >char xx[50][80] ;char xx[50][80] ;intint maxlinemaxline = 0 ; /* = 0 ; /* 文章的总行数文章的总行数 * */ /intint ReadDat(voidReadDat(void) ;) ;void void WriteDat(voidWriteDat(void) ;) ;void void StrOR(voidStrOR(void) ){ {} }void main()void main(){ { clrscrclrscr() ;() ; if(ReadDatif(ReadDat()) {()) { printfprintf("("数据文件数据文件IN.DATIN.DAT不能打开不能打开!\n\007") ;!\n\007") ; return ; return ; } } StrORStrOR() ;() ; WriteDatWriteDat() ;() ;} }62 【【例例9-129-12】】intint ReadDat(voidReadDat(void) ){ { FILE * FILE *fpfp ; ; intint i = 0 ; i = 0 ; char *p ; char *p ; if((fpif((fp = = fopen("IN.DATfopen("IN.DAT", "r")) ", "r")) == NULL) return 1 ;== NULL) return 1 ; while(fgets(xx[iwhile(fgets(xx[i], 80, ], 80, fpfp) != ) != NULL) {NULL) { p = p = strchr(xx[istrchr(xx[i], '\n') ;], '\n') ; if(pif(p) *p = 0 ;) *p = 0 ; i++ ; i++ ; } } maxlinemaxline = i ; = i ; fclose(fpfclose(fp) ;) ; return 0 ; return 0 ;} }void void WriteDat(voidWriteDat(void) ){ { FILE * FILE *fpfp ; ; intint i ; i ; clrscrclrscr() ;() ; fpfp = = fopen("OUT.DATfopen("OUT.DAT", "w") ;", "w") ; for(ifor(i = 0 ; i < = 0 ; i < maxlinemaxline ; i++) ; i++) { { printf("%s\nprintf("%s\n", ", xx[ixx[i]) ;]) ; fprintf(fpfprintf(fp, "%, "%s\ns\n", ", xx[ixx[i]) ;]) ; } } fclose(fpfclose(fp) ;) ;} }63 【【例例9-129-12】】答案:答案:void void StrOR(voidStrOR(void) ){ { intint i,j,k,index,strli,j,k,index,strl; ; char char chch; ; for(ifor(i=0;i<=0;i==strl-1;j>=index;jindex;j--)--) { { ch=xx[i][strl-1]; ch=xx[i][strl-1]; for(k=strl-1;k>0;k--) for(k=strl-1;k>0;k--) xx[i][k]=xx[i][k-1]; xx[i][k]=xx[i][k-1]; xx[i][0]=ch; xx[i][0]=ch; } } } }} }65 【例9-13】n函数函数ReadDatReadDat( )( )实现从文件实现从文件IN.DATIN.DAT中读取一篇英文文章存入到无符号中读取一篇英文文章存入到无符号字符串数组字符串数组xxxx中中; ; 请编制函数请编制函数ChAChA( ), ( ), 其函数的功能是其函数的功能是: : 以行为单位以行为单位把字符串中的第一个字符的把字符串中的第一个字符的ASCIIASCII值加第二个字符的值加第二个字符的ASCIIASCII值值, , 得到得到第一个新的字符第一个新的字符, , 第二个字符的第二个字符的ASCIIASCII值加第三个字符的值加第三个字符的ASCIIASCII值值, ,得得到第二个新的字符到第二个新的字符, , 以此类推一直处理到最后第二个字符以此类推一直处理到最后第二个字符, , 最后一个最后一个字符的字符的ASCIIASCII值加原第一个字符的值加原第一个字符的ASCIIASCII值值, , 得到最后一个新的字符得到最后一个新的字符, , 得到的新字符分别存放在原字符串对应的位置上,之后把已处理的字得到的新字符分别存放在原字符串对应的位置上,之后把已处理的字符串逆转后仍按行重新存入无符号字符串数组符串逆转后仍按行重新存入无符号字符串数组xxxx中。

      中 最后最后main()main()函函数调用函数数调用函数WriteDatWriteDat()()把结果把结果xxxx输出到输出到OUT.DATOUT.DAT文件中n原始数据文件存放的格式是原始数据文件存放的格式是: : 每行的宽度均小于每行的宽度均小于8080个字符个字符, , 含标点符含标点符号和空格号和空格n注意注意: : 部分源程序存放在部分源程序存放在PROG1.CPROG1.C中n请勿改动主函数请勿改动主函数main( )main( )、读数据函数、读数据函数ReadDatReadDat()()和输出数据函数和输出数据函数WriteDatWriteDat()()的内容66 【例9-13】nPROG1.CPROG1.C文件的内容如下:文件的内容如下:#include <#include >#include <#include >#include <#include >unsigned char xx[50][80] ;unsigned char xx[50][80] ;intint maxlinemaxline = 0 ; /* = 0 ; /* 文章的总文章的总行数行数 * */ /intint ReadDat(voidReadDat(void) ;) ;void void WriteDat(voidWriteDat(void) ;) ;void void ChA(voidChA(void) ){ {} }void main()void main(){ { clrscrclrscr() ;() ; if(ReadDatif(ReadDat()) {()) { printfprintf("("数据文件数据文件IN.DATIN.DAT不能不能打开打开!\n\007") ;!\n\007") ; return ; return ; } } ChAChA() ;() ; WriteDatWriteDat() ;() ;} }67 【例9-13】intint ReadDat(voidReadDat(void) ){ { FILE * FILE *fpfp ; ; intint i = 0 ; i = 0 ; char *p ; char *p ; if((fpif((fp = = fopen("IN.DATfopen("IN.DAT", "r")) ", "r")) == NULL) return 1 ;== NULL) return 1 ; while(fgets(xx[iwhile(fgets(xx[i], 80, ], 80, fpfp) != ) != NULL) {NULL) { p = p = strchr(xx[istrchr(xx[i], '\n') ;], '\n') ; if(pif(p) *p = 0 ;) *p = 0 ; i++ ; i++ ; } } maxlinemaxline = i ; = i ; fclose(fpfclose(fp) ;) ; return 0 ; return 0 ;} }void void WriteDat(voidWriteDat(void) ){ { FILE * FILE *fpfp ; ; intint i ; i ; clrscrclrscr() ;() ; fpfp = = fopen("OUT.DATfopen("OUT.DAT", "w") ;", "w") ; for(ifor(i = 0 ; i < = 0 ; i < maxlinemaxline ; i++) ; i++) { { printf("%s\nprintf("%s\n", ", xx[ixx[i]) ;]) ; fprintf(fpfprintf(fp, "%, "%s\ns\n", ", xx[ixx[i]) ;]) ; } } fclose(fpfclose(fp) ;) ;} }68 【例9-13】答案:答案:void void ChA(voidChA(void) ){ { int i,j,k,str; int i,j,k,str; char ch; char ch; for(ifor(i=0;i<=0;i

      例如,假定输入的字符串为符串中出现的次数例如,假定输入的字符串为" "xydxyd xyxydfgxyxydfg xydxyd xyxy zx67 zx67 xydxyd mklomklo",",子字符串子字符串为为" "xyxy" ",函数返回值是,函数返回值是6 6n函数函数ReadWriteReadWrite()()实现从文件实现从文件in.datin.dat中读取两个字中读取两个字符串,并调用函数符串,并调用函数findStrfindStr()(),最后把结果输出到,最后把结果输出到文件文件out.datout.dat中n注意:部分源程序存在文件注意:部分源程序存在文件PROG1.CPROG1.C中请勿改动中请勿改动主函数主函数main()main()和其它函数中的任何内容,仅在函和其它函数中的任何内容,仅在函数数findStrfindStr()()的花括号中填入你编写的若干语句的花括号中填入你编写的若干语句70 【例9-14】nPROG1.CPROG1.C文件的内容如下:文件的内容如下:#include <#include >#include <#include >#include <#include >intint findStr(charfindStr(char * *str,charstr,char * *substrsubstr) ){ {} }main()main(){ { char str[81], substr[3] ; char str[81], substr[3] ; intint n ; n ; clrscrclrscr() ;() ; printfprintf("("输入原字符串输入原字符串:") ;:") ; gets(strgets(str) ;) ; printfprintf("("输入子字符串输入子字符串:") ;:") ; gets(substrgets(substr) ;) ; puts(strputs(str) ;) ; puts(substrputs(substr) ;) ; n= n=findStr(strfindStr(str, , substrsubstr) ;) ; printf("nprintf("n=%=%d\nd\n", n) ;", n) ; ReadWriteReadWrite() ;() ;} }71 【例9-14】ReadWriteReadWrite()(){ { char str[81], substr[3], char str[81], substr[3], chch; ; intint n, n, lenlen, i = 0;, i = 0; FILE * FILE *rfrf, *, *wfwf ; ; rfrf = = fopen("in.datfopen("in.dat", "r") ;", "r") ; wfwf = = fopen("out.datfopen("out.dat", "w") ;", "w") ; while(iwhile(i < 5) { < 5) { fgets(strfgets(str, 80, , 80, rfrf) ;) ; fgets(substrfgets(substr, 10, , 10, rfrf) ;) ; lenlen = = strlen(substrstrlen(substr) - 1 ;) - 1 ; chch = = substr[lensubstr[len] ;] ; if(chif(ch == '\n' || == '\n' || chch == 0x1a) == 0x1a) substr[lensubstr[len] = 0 ;] = 0 ; n= n=findStr(strfindStr(str, , substrsubstr);); fprintf(wffprintf(wf, "%, "%d\nd\n", n) ;", n) ; i++ ; i++ ; } } fclose(rffclose(rf) ;) ; fclose(wffclose(wf) ;) ;} }72 【【例例9-149-14】】答案:答案: intint findStr(charfindStr(char * *str,charstr,char * *substrsubstr) ){ { intint n; n; char *p , *r; char *p , *r; n=0; n=0; while ( * while ( *strstr ) ) { { p= p=strstr; ; r= r=substrsubstr; ; while(*r) while(*r) if(*r==*p) if(*r==*p) { { r++; r++; p++; p++; } } else break; else break; if(*r=='\0') n++; if(*r=='\0') n++; strstr++;++; } } return n; return n;} }73 【例9-15】n已知在文件已知在文件IN.DATIN.DAT中存有中存有100100个产品销售记录个产品销售记录, , 每个产品每个产品销售记录由产品代码销售记录由产品代码dm(dm(字符型字符型4 4位位), ), 产品名称产品名称mc(mc(字符型字符型1010位位), ), 单价单价djdj( (整型整型), ), 数量数量slsl( (整型整型), ), 金额金额jeje( (长整型长整型) )五部分组成。

      五部分组成 其中其中: : 金额金额= =单价单价* *数量计算得出函数数量计算得出函数ReadDatReadDat( )( )读取这读取这100100个销售记录并存入结构数组个销售记录并存入结构数组sellsell中请编制中请编制函数函数SortDatSortDat( ), ( ), 其功能要求其功能要求: : 按产品代码从小到大进行按产品代码从小到大进行排列排列, , 若产品代码相同若产品代码相同, , 则按金额从小到大进行排列则按金额从小到大进行排列, , 最最终排列结果仍存入结构数组终排列结果仍存入结构数组sellsell中最后main()main()函数调用函数调用函数函数WriteDatWriteDat()()把结果输出到文件把结果输出到文件OUT.DATOUT.DAT中n注意注意: : 部分源程序存放在部分源程序存放在PROG1.CPROG1.C中n请勿改动主函数请勿改动主函数main( )main( )、读数据函数、读数据函数ReadDatReadDat()()和输出数和输出数据函数据函数WriteDatWriteDat()()的内容74 【例9-15】nPROG1.CPROG1.C文件的内容如下:文件的内容如下:#include <#include >#include <#include >#include <#include >#include <#include >#include <#include >#define MAX 100#define MAX 100typedeftypedef structstruct { { char dm[5] ; /* char dm[5] ; /* 产品代码产品代码 * */ / char mc[11] ; /* char mc[11] ; /* 产品名称产品名称 * */ / intint djdj ; /* ; /* 单价单价 * */ / intint slsl ; /* ; /* 数量数量 * */ / long long jeje ; /* ; /* 金额金额 * */ /} PRO ;} PRO ;PRO PRO sell[MAXsell[MAX] ;] ;void void ReadDatReadDat() ;() ;void void WriteDatWriteDat() ;() ;void void SortDatSortDat()(){ {} }void main()void main(){ { memset(sellmemset(sell, 0, , 0, sizeof(sellsizeof(sell)) ;)) ; ReadDatReadDat() ;() ; SortDatSortDat() ;() ; WriteDatWriteDat() ;() ;} }75 【例9-15】void void ReadDatReadDat()(){ { FILE * FILE *fpfp ; ; char str[80], ch[11] ; char str[80], ch[11] ; intint i ; i ; fpfp = = fopen("IN.DATfopen("IN.DAT", "r") ;", "r") ; for(ifor(i = 0 ; i < 100 ; i++) { = 0 ; i < 100 ; i++) { fgets(strfgets(str, 80, , 80, fpfp) ;) ; memcpy(sell[i].dmmemcpy(sell[i].dm, , strstr, 4) ;, 4) ; memcpy(sell[i].mcmemcpy(sell[i].mc, , strstr + 4, 10) ; + 4, 10) ; memcpy(chmemcpy(ch, , strstr + 14, 4) ; ch[4] = 0 ; + 14, 4) ; ch[4] = 0 ; sell[i].djsell[i].dj = = atoi(chatoi(ch) ;) ; memcpy(chmemcpy(ch, , strstr + 18, 5) ; ch[5] = 0 ; + 18, 5) ; ch[5] = 0 ; sell[i].slsell[i].sl = = atoi(chatoi(ch) ;) ; sell[i].jesell[i].je = ( = (long)sell[i].djlong)sell[i].dj * * sell[i].slsell[i].sl ; ; } } fclose(fpfclose(fp) ;) ;} }void void WriteDatWriteDat()(){ { FILE * FILE *fpfp ; ; intint i ; i ; fpfp = = fopen("OUT.DATfopen("OUT.DAT", "w") ;", "w") ; for(ifor(i = 0 ; i < 100 ; i++) { = 0 ; i < 100 ; i++) { fprintf(fpfprintf(fp, "%s %s %4d %5d %10ld\n", , "%s %s %4d %5d %10ld\n", sell[i].dmsell[i].dm, , sell[i].mcsell[i].mc, , sell[i].djsell[i].dj, , sell[i].slsell[i].sl, , sell[i].jesell[i].je) ;) ; } } fclose(fpfclose(fp) ;) ;} }76 【例9-15】答案:答案:void void SortDatSortDat( )( ){ { intint i,ji,j; ; PRO PRO xyxy; ; for(ifor(i=0;i0))>0) { { xyxy= =sell[isell[i];]; sell[isell[i]=]=sell[jsell[j];]; sell[jsell[j]=]=xyxy; ; } } else else if(strcmp(sell[i].dm,sell[j].dmif(strcmp(sell[i].dm,sell[j].dm)==0))==0) if(sell[i].jeif(sell[i].je> >sell[j].jesell[j].je) ) { { xyxy= =sell[isell[i];]; sell[isell[i]=]=sell[jsell[j];]; sell[jsell[j]=]=xyxy; ; } }} }77 【例9-16】n程序程序PROG1.CPROG1.C的功能是:利用以下所示的简单迭代方法求方程的功能是:利用以下所示的简单迭代方法求方程cos(x)-cos(x)-x x=0 =0 的一个实根。

      的一个实根n迭代公式:迭代公式:xn+1=xn+1=cos(xncos(xn) (n) (n是迭代次数是迭代次数) )n迭代步骤如下:迭代步骤如下:n(1)(1)取取 x1 x1 初值为初值为0.00.0;;n(2)x0 = x1(2)x0 = x1,把,把x1x1的值赋给的值赋给 x0x0;;n(3)x1 = cos(x0)(3)x1 = cos(x0),求出一个新的,求出一个新的x1x1;;n(4)(4)若若x0 - x1x0 - x1的绝对值小于的绝对值小于 0.0000010.000001,执行步骤,执行步骤(5)(5),否则执行步骤,否则执行步骤(2)(2);;n(5)(5)所求所求x1x1就是方程就是方程 cos(x)-xcos(x)-x=0 =0 的一个实根,作为函数值返回的一个实根,作为函数值返回n请编写函数请编写函数countValuecountValue( )( )实现程序的功能,最后实现程序的功能,最后main()main()函数调用函函数调用函数数writeDATwriteDAT()()把结果输出到文件把结果输出到文件OUT.DATOUT.DAT中n注意注意: : 部分源程序存放在部分源程序存放在PROG1.CPROG1.C中。

      中n请勿改动主函数请勿改动主函数main()main()和输出数据函数和输出数据函数writeDATwriteDAT()()的内容78 【【例例9-169-16】】nPROG1.CPROG1.C文件的内容如下:文件的内容如下:#include <#include >#include <#include >#include <#include >float float countValuecountValue()(){ {} }main()main(){ { clrscrclrscr();(); printfprintf("("实根实根=%=%f\nf\n", ", countValuecountValue());()); printfprintf(" (" % %f\n",cos(countValue())-f\n",cos(countValue())-countValuecountValue());()); writeDATwriteDAT();();n} }writeDATwriteDAT()(){ { FILE * FILE *wfwf ; ; wfwf= =fopen("OUT.DAT","wfopen("OUT.DAT","w") ;") ; fprintf(wffprintf(wf, "%, "%f\nf\n", ", countValuecountValue()) ;()) ; fclose(wffclose(wf) ;) ;} }79 【例9-16】答案:答案:float float countValuecountValue()(){ { float x0,x1=0.0; float x0,x1=0.0; while(1) while(1) { { x0=x1; x0=x1; x1=cos(x0); x1=cos(x0); if(fabs(x0-x1)<1e-6) break; if(fabs(x0-x1)<1e-6) break; } } return x1; return x1;} }80 【例9-17】n请考生编写函数请考生编写函数jsValuejsValue()(),它的功能是:求,它的功能是:求FibonacciFibonacci数数列中大于列中大于t t的最小的一个数,结果由函数返回。

      其中的最小的一个数,结果由函数返回其中Fibonacci Fibonacci 数列数列F(nF(n) )的定义如下:的定义如下:nF(0)=0F(0)=0,,F(1)=1F(1)=1nF(nF(n)=F(n-1)+F(n-2))=F(n-1)+F(n-2)n最后调用函数最后调用函数writeDatwriteDat()()读取读取1010个数据个数据t t,分别得到结果,分别得到结果且把结果输出到文件且把结果输出到文件OUT15.DATOUT15.DAT中n例如:当例如:当t=1000t=1000时,函数值为时,函数值为15971597n注意:部分源程序已给出注意:部分源程序已给出n请勿改动主函数请勿改动主函数main()main()和写函数和写函数writeDatwriteDat()()的内容81 【例9-17】#include <#include >intint jsvalue(intjsvalue(int t) t){ { } }main()main(){ { intint n; n; n=1000; n=1000; printf("nprintf("n=%=%d,fd,f=%=%d\n",n,jsvad\n",n,jsvalue(nlue(n));)); writeDatwriteDat();();} }writeDatwriteDat()(){ FILE *in,*out;{ FILE *in,*out; intint i,n,si,n,s; ; in= in=fopen("in.dat","rfopen("in.dat","r");"); out= out=fopen("out.dat","wfopen("out.dat","w");"); for(ifor(i=0;i<10;i++)=0;i<10;i++) { { fscanf(in,"%d",&nfscanf(in,"%d",&n);); s= s=jsvalue(njsvalue(n);); printf("%d\n",sprintf("%d\n",s);); fprintf(out,"%d\n",sfprintf(out,"%d\n",s);); } } fclose(infclose(in);); fclose(outfclose(out););} }82 【例9-17】答案:答案:jsValue(intjsValue(int t) t){ { intint f1=0,f2=1,fn; f1=0,f2=1,fn; fn=f1+f2; fn=f1+f2; while(fnwhile(fn<=t)/*<=t)/*若当前的若当前的FibonacciFibonacci数不大于数不大于t t,则计算下一个,则计算下一个FibonacciFibonacci数数* */ / { { f1=f2; f1=f2; f2=fn; f2=fn; fn=f1+f2; fn=f1+f2; } } return fn; /* return fn; /*返回返回FibonacciFibonacci数列中大于数列中大于t t的最小的一个数的最小的一个数* */ /} }83 【例9-18】n对对1010个候选人进行选举,现有一个个候选人进行选举,现有一个100100条记录的选票数据条记录的选票数据文件文件IN.DAT, IN.DAT, 其数据存放的格式是每条记录的长度均为其数据存放的格式是每条记录的长度均为1010位位, ,第一位表示第一个人的选中情况第一位表示第一个人的选中情况, , 第二位表示第二个第二位表示第二个人的选中情况人的选中情况, ,依次类推依次类推; ; 每一位内容均为字符每一位内容均为字符0 0或或1,11,1表表示此人被选中示此人被选中, 0, 0表示此人未被选中表示此人未被选中, , 若一张选票选中人若一张选票选中人数小于等于数小于等于5 5个人时被认为无效的选票。

      给定函数个人时被认为无效的选票给定函数ReadDatReadDat()()的功能是把选票数据读入到字符串数组的功能是把选票数据读入到字符串数组xxxx中请编制函中请编制函数数CountRsCountRs()()来统计每个人的选票数并把得票数依次存入来统计每个人的选票数并把得票数依次存入yy[0]yy[0]到到yy[9]yy[9]中中, ,最后调用函数最后调用函数WriteDatWriteDat()()把结果把结果yyyy输出输出到文件到文件OUT.DATOUT.DAT中n注意注意: : 部分源程序存放在部分源程序存放在PROG1.CPROG1.C中n请勿改动主函数请勿改动主函数main()main()、读数据函数、读数据函数ReadDatReadDat()()和输出数和输出数据函数据函数WriteDatWriteDat()()的内容84 【【例例9-189-18】】nPROG1.CPROG1.C文件的内容如下:文件的内容如下:#include <#include >char xx[100][11] ;char xx[100][11] ;intint yy[10] ; yy[10] ;intint ReadDat(voidReadDat(void) ;) ;void void WriteDat(voidWriteDat(void) ;) ;void void CountRs(voidCountRs(void) ){ {} }void main()void main(){ { intint i ; i ; for(ifor(i = 0 ; i < 10 ; i++) = 0 ; i < 10 ; i++) yy[iyy[i] = 0 ;] = 0 ; if(ReadDatif(ReadDat()) {()) { printfprintf("("选票数据文件选票数据文件IN.DATIN.DAT不能打开不能打开!\007\n") ;!\007\n") ; return ; return ; } } CountRsCountRs() ;() ; WriteDatWriteDat() ;() ;} }85 【例9-18】intint ReadDat(voidReadDat(void) ){ { FILE * FILE *fpfp ; ; intint i ; i ; char tt[13] ; char tt[13] ; if((fpif((fp = = fopen("IN.DATfopen("IN.DAT", "r")) ", "r")) == NULL) return 1 ;== NULL) return 1 ; for(ifor(i = 0 ; i < 100 ; i++) { = 0 ; i < 100 ; i++) { if(fgets(ttif(fgets(tt, 13, , 13, fpfp) == NULL) ) == NULL) return 1 ;return 1 ; memcpy(xx[imemcpy(xx[i], ], tttt, 10) ;, 10) ; xx[i][10] = 0 ; xx[i][10] = 0 ; } } fclose(fpfclose(fp) ;) ; return 0 ; return 0 ;} }void void WriteDat(voidWriteDat(void) ){ { FILE * FILE *fpfp ; ; intint i ; i ; fpfp = = fopen("OUT.DATfopen("OUT.DAT", "w") ;", "w") ; for(ifor(i = 0 ; i < 10 ; i++) { = 0 ; i < 10 ; i++) { fprintf(fpfprintf(fp, "%, "%d\nd\n", ", yy[iyy[i]) ;]) ; printfprintf("("第第%d%d个人的选票数个人的选票数=%=%d\nd\n", i + 1, ", i + 1, yy[iyy[i]) ;]) ; } } fclose(fpfclose(fp) ;) ;} }86 【例9-18】答案:答案:void void CountRs(voidCountRs(void) ){ { intint i,j,cnti,j,cnt; ; for(ifor(i=0;i<100;i++)=0;i<100;i++) { { cntcnt=0;=0; for(jfor(j=0;j<10;j++)=0;j<10;j++) if(xx[i][jif(xx[i][j]== '1')]== '1') cntcnt++;++; if ( if (cntcnt>5)>5) for(jfor(j=0;j<10;j++)=0;j<10;j++) if(xx[i][jif(xx[i][j]== '1')]== '1') yy[jyy[j]++;]++; } }} }87 【例9-19】n设有设有n n个人围坐一圈并按顺时针方向从个人围坐一圈并按顺时针方向从1 1到到n n编号,编号,从第从第s s个人开始进行个人开始进行1 1到到m m的报数,报数到第个的报数,报数到第个m m人,人,此人出圈,再从他的下一个人重新开始此人出圈,再从他的下一个人重新开始1 1到到m m的报的报数,如此进行下去直到所有的人都出圈为止。

      现数,如此进行下去直到所有的人都出圈为止现要求按出圈次序,每要求按出圈次序,每1010人一组,给出这人一组,给出这n n个人的顺个人的顺序表请考生编制函数序表请考生编制函数JoseghJosegh()()实现此功能并调实现此功能并调用函数用函数WriteDatWriteDat()()把结果把结果p p输出到文件输出到文件OUT18.DATOUT18.DAT中n设设n=100,c=1,m=10n=100,c=1,m=10进行编程进行编程n部分源程序已给出部分源程序已给出n请勿改动主函数请勿改动主函数main()main()和输出数据函数和输出数据函数writeDatwriteDat()()的内容88 【【例例9-199-19】】nPROG1.CPROG1.C文件的内容如下:文件的内容如下:#include <#include >#define N 100#define N 100#define S 1#define S 1#define M 10#define M 10intint p[N],n,s,mp[N],n,s,m; ;void void WriteDat(voidWriteDat(void););void void Josegh(voidJosegh(void) ){ { } }void main()void main(){ { m=M; m=M; n=N; n=N; s=S; s=S; JoseghJosegh();(); WriteDatWriteDat();();} }89 快门快门(shutter)(shutter)免费网络免费网络 ----------立即注册!立即注册! 亲爱的老师、同学:亲爱的老师、同学:        您们好!你开通免费网络了吗?您们好!你开通免费网络了吗?““中国教育中国教育和科研计算机网和科研计算机网””极力推荐你使用极力推荐你使用 ““快门快门”(shutter)”(shutter)软软件。

      现在注册就送件现在注册就送1515分钟免费(本地、国内、国际长分钟免费(本地、国内、国际长途都行),而且每次打前途都行),而且每次打前3 3分钟免费!积分可换分钟免费!积分可换话费!每天可免费打话费!每天可免费打7575分钟分钟!!!!!!(、固话和小灵通皆(、固话和小灵通皆可)可)    免费注册帐号:免费注册帐号:>>>>立即注册立即注册 免费软件下载:免费软件下载:>>>>地址地址1 1  >>>>地址地址2 2          ( (说明:放映幻灯片后即可连接说明:放映幻灯片后即可连接) ) --- ---中国教育和科研计算机网中国教育和科研计算机网 2008-1-8 2008-1-890 【例9-19】void void WriteDat(voidWriteDat(void) ){ { intint i; i; FILE * FILE *fpfp; ; fpfp=fopen("OUT18.DAT","w");=fopen("OUT18.DAT","w"); for(ifor(i=N-1;i>=0;i--)=N-1;i>=0;i--) { { printf("%4d",p[i]) ; printf("%4d",p[i]) ; fprintf(fp,"%4d",p[i]); fprintf(fp,"%4d",p[i]); if(i%10==0) if(i%10==0) { { printf("\nprintf("\n");"); fprintf(fp,"\nfprintf(fp,"\n");"); } } } }fclose(fpfclose(fp););} }91 【例9-19】答案:答案:void void Josegh(voidJosegh(void) ){ { intint i,j,k,s1,w; i,j,k,s1,w; s1=s; s1=s; for(ifor(i=1;i<==1;i<=n;in;i++) /*++) /*给给n n个人从个人从1 1到到n n编号编号* */ / p[i-1]=i; p[i-1]=i; for(ifor(i= =n;in;i>=2;i--)>=2;i--) { { s1=(s1+m-1)%i;/* s1=(s1+m-1)%i;/*下一个开始报数的人的编号是下一个开始报数的人的编号是(s1+m-1)%i*/(s1+m-1)%i*/ if(s1==0) /* if(s1==0) /*若若s1s1为为0 0,则说明要开始报数的是最后一个人,则说明要开始报数的是最后一个人* */ / s1=i; s1=i; w=p[s1-1];/* w=p[s1-1];/*将要出圈的人移至数组的最后将要出圈的人移至数组的最后* */ / for(jfor(j=s1;j<=i-1;j++)=s1;j<=i-1;j++) p[j-1]= p[j-1]=p[jp[j];]; p[i-1]=w; p[i-1]=w; } }} }92 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.