收藏 分销(赏)

单元5构造类型程序设计文件要点.doc

上传人:w****g 文档编号:4013252 上传时间:2024-07-25 格式:DOC 页数:24 大小:96KB 下载积分:10 金币
下载 相关 举报
单元5构造类型程序设计文件要点.doc_第1页
第1页 / 共24页
单元5构造类型程序设计文件要点.doc_第2页
第2页 / 共24页


点击查看更多>>
资源描述
单元5 构造类型程序设计——文件 源代码 SC 01 02 01 05 401 1.源代码编号 SC01020105401 2.源代码来源 单元5 构造类型程序设计 例5-21 3.问题描述 把从键盘输入的字符输出到文件。 4.程序代码 #include "stdio.h" #include "stdlib.h" void WriteChar (FILE *fp); int main() { FILE *fp; if((fp=fopen("file1.txt","w"))==NULL) { printf("不能打开file1.txt文件。\n"); exit(0); } printf("请输入字符串:"); WriteChar(fp); fclose(fp); return 0; } void WriteChar(FILE *fp) { char ch; while((ch=getchar())!='\n') fputc(ch,fp); } SC 01 02 01 05 402 1.源代码编号 SC01020105402 2.源代码来源 单元5 构造类型程序设计 例5-22 3.问题描述 把从文本文件读入的字符输出到显示器。 4.程序代码 #include "stdio.h" #include "stdlib.h" void ReadChar(FILE *fp); int main() { FILE *fp; if((fp=fopen("file1.txt","r"))==NULL) { printf("不能打开file1.txt文件。\n"); exit(0); } printf("从文件中读取的字符为:"); ReadChar(fp); fclose(fp); return 0; } void ReadChar(FILE *fp) { char ch; while((ch=fgetc(fp))!=EOF) putchar(ch); printf("\n"); } SC 01 02 01 05 403 1.源代码编号 SC01020105403 2.源代码来源 单元5 构造类型程序设计 例5-23 3.问题描述 编写一个程序,能将一个文本文件中的内容复制到另一个文件中。 4.程序代码 #include "stdio.h" #include "stdlib.h" void CopyChar(FILE *in,FILE *out); int main() { FILE *in,*out; char infile[10],outfile[10]; printf("请输入源文件名:\n"); scanf("%s",infile); printf("请输入目标文件名:\n"); scanf("%s",outfile); if((in=fopen(infile,"r"))==NULL) { printf("不能打开源文件。\n"); exit(0); } if((out=fopen(outfile,"w"))==NULL) { printf("不能打开目标文件。\n"); exit(0); } CopyChar(in,out); fclose(in); fclose(out); return 0; } void CopyChar(FILE *in,FILE *out) { char ch; while((ch=fgetc(in))!=EOF)/*读一个字符,并判断文件结束标志*/ fputc(ch,out); /*写一个字符*/ } SC 01 02 01 05 404 1.源代码编号 SC01020105404 2.源代码来源 单元5 构造类型程序设计 例5-24 3.问题描述 编制一个将文本文件中全部信息送往显示屏上显示的程序。 4.程序代码 #include "stdio.h" #include "stdlib.h" void ReadStr(FILE *fp); int main() { FILE *fp; char string[20]; printf("请输入待打开的文件:\n"); scanf("%s",string); if((fp=fopen(string,"r"))==NULL) { printf("不能打开该文件。\n"); exit(0); } printf("文件内容为:\n"); ReadStr(fp); fclose(fp); return 0; } void ReadStr(FILE *fp) { char str[81]; while(fgets(str,81,fp)!=NULL) printf("%s",str); printf("\n"); } SC 01 02 01 05 405 1.源代码编号 SC01020105405 2.源代码来源 单元5 构造类型程序设计 例5-25 3.问题描述 编写一个程序,将一个二进制文件中的内容复制到另一个文件中。 4.程序代码 #include "stdio.h" #include "stdlib.h" void CopyBinFile(FILE *in,FILE *out); int main() { FILE *in,*out; char infile[10],outfile[10]; printf("请输入源文件名:\n"); scanf("%s",infile); printf("请输入目标文件名:\n"); scanf("%s",outfile); if((in=fopen(infile,"rb"))==NULL) { printf("不能打开源文件。\n"); exit(0); } if((out=fopen(outfile,"wb"))==NULL) { printf("不能打开目标文件。\n"); exit(0); } CopyBinFile(in,out); fclose(in); fclose(out); return 0; } void CopyBinFile(FILE *in,FILE *out) { char buff[32768]; unsigned int bfsz=32768; unsigned long i=0; while(bfsz) { if(fread(buff,bfsz,1,in)) { fwrite(buff,bfsz,1,out); i=i+bfsz; } else { fseek(in,i,0); bfsz=bfsz/2; } } } SC 01 02 01 05 406 1.源代码编号 SC01020105406 2.源代码来源 单元5 构造类型程序设计 引例 3.问题描述 模拟22选5彩票摇奖过程,得出开奖号码,查询投注者自选的一组号码是否中奖,中几等奖。 4.程序代码 #include <stdio.h> #include <time.h> #include <windows.h> #define SelectListSize 22 //备选号码表容量为22 #define LotteryListSize 5 //自选号码表和开奖号码表容量为5 typedef struct {//备选号码表、自选号码表和开奖号码表的描述 int data[SelectListSize]; //数组data用于存放表结点 int length; /length为当前表的长度 }List; int randnum(List *SL,int *k) {//随机选择一个彩票号码 int i,j=rand()%11+10,x;//j表示摇号次数,介于10至20之间 for(i=1;i<=j;i++) { *k=rand()%SL->length+1;//随机生成备选号码位置 x=SL->data[*k-1]; if(i<j) printf("%02d\b\b",x); else printf("%02d\t",x); Sleep(150);//延时 } return x; } void ComputerSelect(List *SL,List *CL) {//机器生成开奖号码 int i,j,k,x;//k用于存放摇奖号码在备选号码表中的位置 srand((unsigned)time(NULL)); printf("\n现在开始摇奖:\t"); for(i=0;i<LotteryListSize;i++) { x=randnum(SL,&k); for(j=k;j<=SL->length-1;j++) SL->data[j-1]=SL->data[j]; SL->length--; CL->data[CL->length]=x; //插入x CL->length++; //表长加1 } } void SelfSelect(List *LL) {//自选号码生成彩票 int i,j,x; for(i=0;i<LotteryListSize;i++) { scanf("%d",&x); for(j=0;j<LL->length;j++) if(x==LL->data[j]) break; if(x<1||x>SelectListSize||j<LL->length) {//输入数据小于1或大于22或与前面重复时,出错重输 printf("\n输入错,请全部重新输入:"); i=-1; LL->length=0; flushall();//清除缓冲区 } else { LL->data[LL->length]=x; //插入x LL->length++; //表长加1 } } } void WinSearch(List *LL,List *CL) {//中奖查询 int i,j=1,k=0; printf("\n\n您购买的彩票:\t"); for(i=0;i<LotteryListSize;i++) printf("%02d\t",LL->data[i]); for(i=0;i<LotteryListSize;i++) { j=1; while(j<=LotteryListSize&&CL->data[j-1]!=LL->data[i]) j++; if(j<=LotteryListSize&&CL->data[j-1]==LL->data[i]) k++; } if(k==5) printf("\n\n恭喜,您中了一等奖!\n\n"); if(k==4) printf("\n\n恭喜,您中了二等奖!\n\n"); if(k==3) printf("\n\n恭喜,您中了三等奖!\n\n"); if(k<3) printf("\n\n您只选中了%d个号码,没有中奖!\n\n",k); } int main() {//LL为自选号码表,CL开奖号码表,SL为备选号码表 List LL={{0},0},CL={{0},0},SL={{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, 17,8,19,20,21,22},22}; printf("\n\t\t欢迎使用22选5体育彩票系统\n"); printf("\n请输入自选彩票号码(例如:1 12 7 3 21):"); SelfSelect(&LL);//自选号码生成彩票 ComputerSelect(&SL,&CL);//机器生成开奖号码 WinSearch(&LL,&CL);//中奖查询 return 0; } SC 01 02 01 05 407 1.源代码编号 SC01020105407 2.源代码来源 单元5 构造类型程序设计 课堂实践5-13 3.问题描述 把从键盘输入的字符“abcde12345”输出到文件d:\f1.txt,并从该文件中读出字符输出到显示器。 4.程序代码 #include "stdio.h" #include "stdlib.h" int main() { void WriteChar(FILE *fp); void ReadChar(FILE *fp); FILE *fp; if((fp=fopen("d:\\f1.txt","w"))==NULL) { printf("不能打开d:\f1.txt文件\n"); exit(0); } printf("请输入字符串abcde12345:"); WriteChar(fp); fclose(fp); if((fp=fopen("d:\\f1.txt","r"))==NULL) { printf("不能打开d:\f1.txt文件\n"); exit(0); } printf("从文件中读取的字符为:"); ReadChar(fp); fclose(fp); return 0; } void WriteChar(FILE *fp) { char ch; while((ch=getchar())!='\n') fputc(ch,fp); } void ReadChar(FILE *fp) { char ch; while((ch=fgetc(fp))!=EOF) putchar(ch); printf("\n"); } SC 01 02 01 05 408 1.源代码编号 SC01020105408 2.源代码来源 单元5 构造类型程序设计 课堂实践5-14 3.问题描述 编写一个类似【例5-25】的程序,将一个二进制文件中的内容复制到另一个文件中,当读入的字符不足bfsz个字节时,对剩余的字符进行逐一复制。 4.程序代码 #include "stdio.h" #include "stdlib.h" void CopyBinFile(FILE *in,FILE *out); int main() { FILE *in,*out; char infile[10],outfile[10]; printf("请输入源文件名:\n"); scanf("%s",infile); printf("请输入目标文件名:\n"); scanf("%s",outfile); if((in=fopen(infile,"rb"))==NULL) { printf("不能打开源文件。\n"); exit(0); } if((out=fopen(outfile,"wb"))==NULL) { printf("不能打开目标文件。\n"); exit(0); } CopyBinFile(in,out); fclose(in); fclose(out); return 0; } void CopyBinFile(FILE *in,FILE *out) { char buff[32768]; unsigned int bfsz=32768; unsigned long i=0; while(bfsz) { if(fread(buff,bfsz,1,in)) { fwrite(buff,bfsz,1,out); i=i+bfsz; } else { char c; fseek(in,i,0); c=fgetc(in); while(!feof(in)){ fputc(c,out); c= fgetc(in); } break; //退出while(bfsz) } } SC 01 02 01 05 409 1.源代码编号 SC01020105409 2.源代码来源 单元5 构造类型程序设计——文件 同步训练 程序设计题1 3.问题描述 编程实现以下功能:从键盘输入一个字符串,将文件中的大写字母全部转换成小写字母,输出到磁盘文件letter.txt中保存,以字符#表示输入结束。 4.程序代码 #include <stdio.h> #include <stdlib.h> void main() { char f; FILE *fp; if((fp=fopen("letter.txt","w"))==NULL) { printf("can not open file\n"); exit(0); } printf("Please enter a string:\n"); f=getchar(); while(f!='#') { if(f>='A'&&f<='Z') f=f+32; fputc(f,fp); f=getchar(); } fclose(fp); } SC 01 02 01 05 410 1.源代码编号 SC01020105410 2.源代码来源 单元5 构造类型程序设计——文件 同步训练 程序设计题2 3.问题描述 有一文件num.txt中存有形如 -1,0,1,2,5,3,0,-1,2,4,5,5,6,7,0,的数据,编程统计出文件中正整数的个数。 4.程序代码 #include <stdio.h> #include <stdlib.h> void main() { char f; FILE *fp; int i=0,n=0; float t; long pos=0; if ((fp=fopen("num.txt","r"))==NULL) { printf("can not open file\n"); exit(0); } while(!feof(fp)) { fscanf(fp,"%f,",&t); if(t>0) n++; } fclose(fp); printf("%d\n",n); } SC 01 02 01 05 411 1.源代码编号 SC01020105411 2.源代码来源 单元5 构造类型程序设计——文件 同步训练 程序设计题3 3.问题描述 在文件worker.dat中存放着工人的基本信息,用以下结构体来描述: struct worker { long int num; /*工号/ char name[10]; /*姓名/ int age; /*年龄/ char sex; /*性别/ char dept[20]; /*部门/ }; 请编程查找工号为1001的人工信息并输出在屏幕上。存放工人的信息文件worker.dat需自己编写程序形成,可以参考对应同步训练。 4.程序代码 #include "stdio.h" #include "stdlib.h" struct worker { int num; /*工号*/ char name[10]; /*姓名*/ int age; /*年龄*/ char sex; /*性别*/ char dept[10]; /*部门*/ }; void main() { FILE *fp; struct worker wrk; if((fp=fopen("worker.dat","rb"))==NULL) { printf("can not open file\n"); exit(0); } fread(&wrk,sizeof(struct worker),1,fp); while(!feof(fp)) { if(wrk.num==1001) printf("num:%d name:%s age:%d sex:%c dept:%s\n", wrk.num,wrk.name,wrk.age,wrk.sex,wrk.dept); fread(&wrk,sizeof(struct worker),1,fp); } fclose(fp); }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服