程序设计基础课程设计(1).doc
《程序设计基础课程设计(1).doc》由会员分享,可在线阅读,更多相关《程序设计基础课程设计(1).doc(60页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date程序设计基础课程设计(1)程序设计基础课程设计实验报告程序设计基础课程设计实验报告班级:1403013姓名:熊清锋学号:14030130063所选题目:1_1, 1_3, 2_2, 3_1, 3_2 ,3_3, 3_4, 5_1, 5_2,第1_1题:比较两个文本文件并打印出它们第一个不相同的行(文件每行字符数不多于80)。算法描述:定义两个不同的指针,建立两个不同的
2、文本文件并存入字符;打开文本文件并一行一行的比较,定义一个计数器,若发现了不同行,立即跳出循环,分别打印两个不同文件中计数器所指的行;源程序:no1_1.c#include#include#include#define N 5/文件中字符的行数int main() FILE *fp1,*fp2;/文件指针 char str1N80,str2N80; char AN80,BN80; int i,k,flag=0; printf(Please enter the first text A:n); if(fp1=fopen(num1.text,w)=NULL)/建立文本文件 printf(canno
3、t open the file!); exit(0); for(i=0; iN; i+)/输入字符并写入文件 gets(str1i); fputs(str1i,fp1); fputs(n,fp1); printf(n); printf(Please enter the second text B:n); if(fp2=fopen(num2.text,w)=0)/ printf(cannot open the file!n); exit(0); for(i=0; iN; i+) gets(str2i); fputs(str2i,fp2); fputs(n,fp2); fclose(fp1); f
4、close(fp2); fp1=fopen(num1.text,r);/打开文件 fp2=fopen(num2.text,r); for(i=0; iN; i+)/对两个文件中的字符进行行比较 fgets(str1i,80,fp1); fgets(str2i,80,fp2); if(strcmp(str1i,str2i)!=0) k=i; flag=1; break; if(flag)/如果存在不同行 printf(nThe first different row between A and B:n);/分别输出不同行 printf(A: %sn,str1k); printf(B: %sn,s
5、tr2k); else printf(The two text have the same contents!n); fclose(fp1);/关闭文件 fclose(fp2); return 0;测试数据:第1_3题:现有两个文本文件db1.txt和db2.txt。db1.txt中第一列为姓名,第二列为英语成绩;db2.txt中第一列为姓名,第二列为数学成绩。通过姓名字段将db1.txt文件关联到db2.txt文件生成db3.txt文件。db3.txt文件第一列为姓名,第二列为英语成绩,第三列为数学成绩,第四列为平均成绩算法描述:定义三个文件指针,输入数据分别存在两个文件文本,输入时用结构存
6、储数字和字符的混合输入;打开文件,对文件中的结构体存储的字符比较遇到两个文件中相同的name,将两个文件对应该name的内容整合,写到第三个文件中,并在屏幕输出文件内容。源程序:no1_3.c#include#include#include#define N 1struct Student/定义前两个文件内容的结构体,结构体元素是姓名和分数 char name10; double score;struct Student1/定义第三个文件内容的结构体,元素是姓名和分数数组(含三个元素) char name10; double score3;int main() FILE *fp1,*fp2,*
7、fp3; struct Student stu2N;/定义二维结构体数组 struct Student1 stu1N; int i,j,k=0; int flag=0; /输入 printf(Please input db1.txt:n); fp1=fopen(db1.txt,w); for(i=0; iN; i+) scanf(%s%lf,stu0i.name,&stu0i.score); fwrite(&stu0i,sizeof(struct Student),1,fp1);/读取结构体中的一元素存入文件 printf(nPlease input db2.txt:n); fp2=fopen
8、(db2,w); for(i=0; iN; i+) scanf(%s%lf,stu1i.name,&stu1i.score); fwrite(&stu1i,sizeof(struct Student),1,fp2); fp1=fopen(db1.txt,r);/打开文件,只写 fp2=fopen(db2,txt,r); for(i=0; iN; i+) fread(&stu0i,sizeof(struct Student),1,fp1); for(j=0; jN; j+) fread(&stu1j,sizeof(struct Student),1,fp2); if(strcmp(stu0i.n
9、ame,stu1j.name)=0) flag=1; strcpy(stu1k.name,stu1i.name); stu1k.score0=stu0i.score; stu1k.score1=stu1j.score; stu1k.score2=(stu1k.score0+stu1k.score1)/2; k+; printf(n); /输出 if(flag) fp3=fopen(db3.txt,w); printf(Names Maths English Averagen); for(i=0; ik; i+) fwrite(&stu1i,sizeof(struct Student1),1,f
10、p3); printf(%s ,stu1i.name); for(j=0; j3; j+) printf(%10.2f,stu1i.scorej); printf(n); fclose(fp3); else printf(Maybe the lists are taken by mistake!n); fclose(fp1); fclose(fp2); return 0;测试数据:第2_2题:统计一个英文文本文件中26个英文字母出现次数并按英文字母序输出统计结果,查找并替换此英文文本文件中某字符串。算法描述:建立文本文件并输入数据(二维字符数组的形式),存储于文件,打开文件读出字符!用个英文字
11、符与从文件读出的文件比较,建立累加器对每个字母出现的次数赋值!源程序:no2_2.c #include#include#include#define N 2int main() FILE *fp1,*fp2; int i,j,k,cout; char strN80,ch,c; printf(Please input file_num1:n); fp1=fopen(num1,w);/建立文件并写入数据 for(i=0; iN; i+) gets(stri); fputs(stri,fp1); fputs(n,fp1); printf(n); /打开文件并读出数据 fp2=fopen(num1,r
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 基础 课程设计
限制150内