08单元5 构造类型程序设计文件.docx
- 文档编号:28405873
- 上传时间:2023-07-13
- 格式:DOCX
- 页数:22
- 大小:22KB
08单元5 构造类型程序设计文件.docx
《08单元5 构造类型程序设计文件.docx》由会员分享,可在线阅读,更多相关《08单元5 构造类型程序设计文件.docx(22页珍藏版)》请在冰豆网上搜索。
08单元5构造类型程序设计文件
单元5构造类型程序设计——文件
源代码
SC01020105401
1.源代码编号
C010********
2.源代码来源
单元5构造类型程序设计
例5-21
3.问题描述
把从键盘输入的字符输出到文件。
4.程序代码
#include"stdio.h"
#include"stdlib.h"
voidWriteChar(FILE*fp);
intmain()
{
FILE*fp;
if((fp=fopen("file1.txt","w"))==NULL)
{
printf("不能打开file1.txt文件。
\n");
exit(0);
}
printf("请输入字符串:
");
WriteChar(fp);
fclose(fp);
return0;
}
voidWriteChar(FILE*fp)
{
charch;
while((ch=getchar())!
='\n')
fputc(ch,fp);
}
SC01020105402
1.源代码编号
C010********
2.源代码来源
单元5构造类型程序设计
例5-22
3.问题描述
把从文本文件读入的字符输出到显示器。
4.程序代码
#include"stdio.h"
#include"stdlib.h"
voidReadChar(FILE*fp);
intmain()
{
FILE*fp;
if((fp=fopen("file1.txt","r"))==NULL)
{
printf("不能打开file1.txt文件。
\n");
exit(0);
}
printf("从文件中读取的字符为:
");
ReadChar(fp);
fclose(fp);
return0;
}
voidReadChar(FILE*fp)
{
charch;
while((ch=fgetc(fp))!
=EOF)
putchar(ch);
printf("\n");
}
SC01020105403
1.源代码编号
C010********
2.源代码来源
单元5构造类型程序设计
例5-23
3.问题描述
编写一个程序,能将一个文本文件中的内容复制到另一个文件中。
4.程序代码
#include"stdio.h"
#include"stdlib.h"
voidCopyChar(FILE*in,FILE*out);
intmain()
{
FILE*in,*out;
charinfile[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);
return0;
}
voidCopyChar(FILE*in,FILE*out)
{
charch;
while((ch=fgetc(in))!
=EOF)/*读一个字符,并判断文件结束标志*/
fputc(ch,out);/*写一个字符*/
}
SC01020105404
1.源代码编号
C010********
2.源代码来源
单元5构造类型程序设计
例5-24
3.问题描述
编制一个将文本文件中全部信息送往显示屏上显示的程序。
4.程序代码
#include"stdio.h"
#include"stdlib.h"
voidReadStr(FILE*fp);
intmain()
{
FILE*fp;
charstring[20];
printf("请输入待打开的文件:
\n");
scanf("%s",string);
if((fp=fopen(string,"r"))==NULL)
{
printf("不能打开该文件。
\n");
exit(0);
}
printf("文件内容为:
\n");
ReadStr(fp);
fclose(fp);
return0;
}
voidReadStr(FILE*fp)
{
charstr[81];
while(fgets(str,81,fp)!
=NULL)
printf("%s",str);
printf("\n");
}
SC01020105405
1.源代码编号
C010********
2.源代码来源
单元5构造类型程序设计
例5-25
3.问题描述
编写一个程序,将一个二进制文件中的内容复制到另一个文件中。
4.程序代码
#include"stdio.h"
#include"stdlib.h"
voidCopyBinFile(FILE*in,FILE*out);
intmain()
{
FILE*in,*out;
charinfile[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);
return0;
}
voidCopyBinFile(FILE*in,FILE*out)
{
charbuff[32768];
unsignedintbfsz=32768;
unsignedlongi=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;
}
}
}
SC01020105406
1.源代码编号
C010********
2.源代码来源
单元5构造类型程序设计
引例
3.问题描述
模拟22选5彩票摇奖过程,得出开奖号码,查询投注者自选的一组号码是否中奖,中几等奖。
4.程序代码
#include
#include
#include
#defineSelectListSize22//备选号码表容量为22
#defineLotteryListSize5//自选号码表和开奖号码表容量为5
typedefstruct
{//备选号码表、自选号码表和开奖号码表的描述
intdata[SelectListSize];//数组data用于存放表结点
intlength;/length为当前表的长度
}List;
intrandnum(List*SL,int*k)
{//随机选择一个彩票号码
inti,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 printf("%02d\b\b",x); else printf("%02d\t",x); Sleep(150);//延时 } returnx; } voidComputerSelect(List*SL,List*CL) {//机器生成开奖号码 inti,j,k,x;//k用于存放摇奖号码在备选号码表中的位置 srand((unsigned)time(NULL)); printf("\n现在开始摇奖: \t"); for(i=0;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 } } voidSelfSelect(List*LL) {//自选号码生成彩票 inti,j,x; for(i=0;i { scanf("%d",&x); for(j=0;j if(x==LL->data[j]) break; if(x<1||x>SelectListSize||j {//输入数据小于1或大于22或与前面重复时,出错重输 printf("\n输入错,请全部重新输入: "); i=-1; LL->length=0; flushall();//清除缓冲区 } else { LL->data[LL->length]=x;//插入x LL->length++;//表长加1 } } } voidWinSearch(List*LL,List*CL) {//中奖查询 inti,j=1,k=0; printf("\n\n您购买的彩票: \t"); for(i=0;i printf("%02d\t",LL->data[i]); for(i=0;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); } intmain() {//LL为自选号码表,CL开奖号码表,SL为备选号码表 ListLL={{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请输入自选彩票号码(例如: 1127321): "); SelfSelect(&LL);//自选号码生成彩票 ComputerSelect(&SL,&CL);//机器生成开奖号码 WinSearch(&LL,&CL);//中奖查询 return0; } SC01020105407 1.源代码编号 C010******** 2.源代码来源 单元5构造类型程序设计 课堂实践5-13 3.问题描述 把从键盘输入的字符“abcde12345”输出到文件d: \f1.txt,并从该文件中读出字符输出到显示器。 4.程序代码 #include"stdio.h" #include"stdlib.h" intmain() { voidWriteChar(FILE*fp); voidReadChar(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); return0; } voidWriteChar(FILE*fp) { charch; while((ch=getchar())! ='\n') fputc(ch,fp); } voidReadChar(FILE*fp) { charch; while((ch=fgetc(fp))! =EOF) putchar(ch); printf("\n"); } SC01020105408 1.源代码编号 C010******** 2.源代码来源 单元5构造类型程序设计 课堂实践5-14 3.问题描述 编写一个类似【例5-25】的程序,将一个二进制文件中的内容复制到另一个文件中,当读入的字符不足bfsz个字节时,对剩余的字符进行逐一复制。 4.程序代码 #include"stdio.h" #include"stdlib.h" voidCopyBinFile(FILE*in,FILE*out); intmain() { FILE*in,*out; charinfile[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); return0; } voidCopyBinFile(FILE*in,FILE*out) { charbuff[32768]; unsignedintbfsz=32768; unsignedlongi=0; while(bfsz) { if(fread(buff,bfsz,1,in)) { fwrite(buff,bfsz,1,out); i=i+bfsz; } else {charc; fseek(in,i,0); c=fgetc(in); while(! feof(in)){ fputc(c,out); c=fgetc(in); } break;//退出while(bfsz) } } SC01020105409 1.源代码编号 C010******** 2.源代码来源 单元5构造类型程序设计——文件 同步训练程序设计题1 3.问题描述 编程实现以下功能: 从键盘输入一个字符串,将文件中的大写字母全部转换成小写字母,输出到磁盘文件letter.txt中保存,以字符#表示输入结束。 4.程序代码 #include #include voidmain() { charf; FILE*fp; if((fp=fopen("letter.txt","w"))==NULL) { printf("cannotopenfile\n"); exit(0); } printf("Pleaseenterastring: \n"); f=getchar(); while(f! ='#') { if(f>='A'&&f<='Z') f=f+32; fputc(f,fp); f=getchar(); } fclose(fp); } SC01020105410 1.源代码编号 C010******** 2.源代码来源 单元5构造类型程序设计——文件 同步训练程序设计题2 3.问题描述 有一文件num.txt中存有形如-1,0,1,2,5,3,0,-1,2,4,5,5,6,7,0,的数据,编程统计出文件中正整数的个数。 4.程序代码 #include #include voidmain() { charf; FILE*fp; inti=0,n=0; floatt; longpos=0; if((fp=fopen("num.txt","r"))==NULL) { printf("cannotopenfile\n"); exit(0); } while(! feof(fp)) { fscanf(fp,"%f,",&t); if(t>0)n++; } fclose(fp); printf("%d\n",n); } SC01020105411 1.源代码编号 C010******** 2.源代码来源 单元5构造类型程序设计——文件 同步训练程序设计题3 3.问题描述 在文件worker.dat中存放着工人的基本信息,用以下结构体来描述: structworker { longintnum;/*工号/ charname[10];/*姓名/ intage;/*年龄/ charsex;/*性别/ chardept[20];/*部门/ }; 请编程查找工号为1001的人工信息并输出在屏幕上。 存放工人的信息文件worker.dat需自己编写程序形成,可以参考对应同步训练。 4.程序代码 #include"stdio.h" #include"stdlib.h" structworker { intnum;/*工号*/ charname[10];/*姓名*/ intage;/*年龄*/ charsex;/*性别*/ chardept[10];/*部门*/ }; voidmain() { FILE*fp; structworkerwrk; if((fp=fopen("worker.dat","rb"))==NULL) { printf("cannotopenfile\n"); exit(0); } fread(&wrk,sizeof(structworker),1,fp); while(! feof(fp)) { if(wrk.num==1001) printf("num: %dname: %sage: %dsex: %cdept: %s\n",wrk.num,wrk.name,wrk.age,wrk.sex,wrk.dept); fread(&wrk,sizeof(structworker),1,fp); } fclose(fp); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 08单元5 构造类型程序设计文件 08 单元 构造 类型 程序设计 文件