版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、程序设计基础课程设计实验报告班级: 1403021姓名:张立磊学号:选题目: 1_1,, 2_1,, 3_1,3_2, 4_1, 5_1第 1_1题算法描述:定义两个数组, 以只读的形式打开两个文本, 当两个文本都没有读完时进行循环, 如果两个文本不一样输出不同行。源程序:no1_1.c#include<stdio.h>#include<stdlib.h>#include<string.h>int main()FILE*fp1=NULL;FILE*fp2=NULL;char str1100,str2100;fp1=fopen(&qu
2、ot;test1.txt","r");fp2=fopen("test2.txt","r");while(!feof(fp1)&&!feof(fp2)fgets(str1,99,fp1);fgets(str2,99,fp2);if(strcmp(str1,str2)!=0)printf("file1:%s nfile2:%sn",str1,str2);break;fclose(fp1);fclose(fp2);return 0;测试数据(输入、输出):1/16第 2_1题算法描述:将源程序的
3、每一行字符都放到一个数组里,检查/和 /*/ 这两种情况,如果遇到/,便去除后面的字符,如果遇到/* */ ,去除中间的字符。源程序:No2_1.c#include<stdio.h>#include<stdlib.h>#include<string.h>int main()FILE*fp1,*fp2;/定义指向FILE 类型文件的指针变量char f110,f210,str500,temp1500,temp2500;int i,j=1,n=1,k=0;/定义变量printf(" 请输入所用的源文件名:");/文件的打开scanf(&quo
4、t;%s",f1) ;if(fp1=fopen(f1,"r")=NULL)printf(" 无法打开源文件n");exit(0);printf(" 请输入所用的写入文件名:");2/16scanf("%s",f2) ;if(fp2=fopen(f2,"w")=NULL)printf(" 无法打开写入文件n");exit(0);while(fgets(str,500,fp1)!=NULL)/ 逐个字符读入文件n=strlen(str);for(i=0;i<n;i
5、+)/读到文件的最后if(stri='/'&&stri+1='/')/遇到“/ ”注释的结果stri='n'stri+1='0'break;if(stri='/'&&stri+1='*')/ 遇到“/* */ ”注释的结果stri='0'strcpy(temp1,str);/ 把/* 前字符串复制给temp1k=1;/ 改变 k 的值if(stri='*'&&stri+1='/')strcpy(temp2
6、,&stri+2);/把 */ 后的字符串复制给temp2k=0;/ 如果上面出现过 /* ,k 值会变为 1,所所以将 k 重新赋值 0,确保下面的判断中 k=1 时是只遇到了 /*strcat(temp1,temp2);/ 将 temp1 和 temp2 连接起来 strcpy(str,temp1);/ 将连接后 /* 前和 */ 后完整的字符串复制给字符数组if(k=1)continue;/ 当只遇到 /* 符号时,对它后面的字符不作处理fprintf(fp2,"%d. ",j+);/加行号fputs(str,fp2);/ 此时 str 中存储的都是删除过后的
7、字符串,直接写进新的cpp 文件中3/16printf(" 已完成,任意键退出n");fclose(fp1);/文件的关闭fclose(fp2);return 0;测试数据(输入、输出):第 3_1题算法描述:由于输入是字符,所以减掉 0得到对应的数值,另外采用地位先加,之后的按转化规则编出源程序:#include<stdio.h>#include<string.h>int main()printf(" 请输入二进制的数:n");4/16char s100=0;int n=0,i=0,m=1,sum=0;gets(s);while
8、(si+)n+;/ 统计实际有多少位for(i=0;i<n;i+)sum=sum+(sn-i-1-'0')*m;/ 由于输入是字符,所以减掉 0得到对应的数值,另外采用地位先加m*=2;/ 因为高位的权是地位的2 倍,所以每加完一位乘2printf(" 结果是: %dn",sum);return 0;测试数据(输入、输出):第 3_2题算法描述:定义结构体来储存复数,三种运算分为三种情况,分别按照运算规则编写源程序:#include<stdio.h>int main()struct fushuint i;/ 实部int j;/ 虚部a,b,
9、c;int m;printf(" 请输入复数的实部和虚部n");scanf("%d %d %d %d",&a.i,&a.j,&b.i,&b.j);fflush(stdin);5/16printf(" 请输入要进行的运算方式:n1.加法 n2.减法 n3.乘法 n");scanf("%d",&m);if(m=1)c.i=a.i+b.i;c.j=a.j+b.j;else if(m=2)c.i=a.i-b.i;c.j=a.j-b.j;elsec.i=a.i*b.i-a.j*b.j;
10、c.j=a.i*b.j+a.j*b.i;if(c.j>=0)printf("结果为: %d+%din",c.i,c.j);if(c.j<0)printf(" 结果为; %d%din",c.i,c.j);return 0;测试数据(输入、输出):6/16第 4_1题算法描述:使用 switch 在主程序中,有好多功能在 case中,每个功能都有个子程序来实现源程序:/1. 模拟KTV点歌系统。用户可按歌名查找某首歌曲或按歌手名查找其所有歌曲,点歌后显示所点歌曲歌词。管理员可添加和删除歌曲,每个歌曲的歌词用一个单独的文件存储。/ktv 点歌系统#
11、include<stdio.h>#include<stdlib.h>#include<string.h>#define SIZE 1000 / 最多有 1000 首歌曲struct musicdatechar name15;char singer15;char style10;int flag=1;musicSIZE;int jiancha(char name15)/ 点歌时检查是否存在该歌曲,如果存在则返回1;并且输出歌曲信息FILE *fp=fopen("music.txt","ab+");if(fp=NULL)p
12、rintf("con't open this file.");exit(0);int i,j;for(i=0;!feof(fp);i+)fread(&musici,sizeof(struct musicdate),1,fp);for(j=0;j<i;j+)if(strcmp( ,name)=0)/和 dete 相同printf(" 歌手: %s 风格: %sn",musicj.singer ,musicj.style ); return 1;return 0;fclose(fp);void add()FILE
13、*fp=(fopen("music.txt","ab+");if(fp=NULL)7/16printf("con't open this file.");exit(0);printf(" 请输入要添加歌曲的数量:n");int i,j;scanf("%d",&i);for(j=0;j<i;j+)printf(" 请输入第 %d 首歌曲信息(格式:歌曲名称歌手流派 )n",j+1);scanf("%s%s%s",
14、,musicj.singer ,musicj.style );fflush(stdin);if(fwrite(&musicj,sizeof(structmusicdate),1,fp)!=1)printf(" 录入失败 n");/ 如果录入成功就等于1elsesystem("cls");printf(" 录入成功 nnn");fclose(fp);void dete()FILE *fp=fopen("music.txt","ab+");/录出,再选择录进,flag 是删除标志if(fp=
15、NULL)printf("con't open this file.");exit(0);int i,j;char name15;for(i=0;!feof(fp);i+)fread(&musici,sizeof(struct musicdate),1,fp);/for(i=i-2;i>=0;i-)printf("name:%ssinger:%sstyle:%sn",,musici.singer ,musici.style );printf(" 请输入要删除的歌曲名称:n");gets(na
16、me);int a=jiancha(name);/ 检查歌曲是否存在if(a=0)system("cls");printf(" 不存在该歌曲,操作失败!nnn");return;/ 检查是否存在此歌曲8/16for(j=0;j<i;j+)if(strcmp( ,name)=0) musicj.flag=0;fclose(fp);fp=fopen("music.txt","wb");if(fp=NULL)printf("con't open this file."
17、;);exit(0);for(j=0;j<i-1;j+)if(musicj.flag!=0) fwrite(&musicj,sizeof(struct musicdate),1,fp);printf(" 删除成功 n");fclose(fp);void choose1()/ 只有在 music。txt 里面存了该歌曲才可以打开该歌词,否则就算歌词存在也没有用printf(" 请输入要点的歌曲名称:n");char name15,name115;char geci5050;int i,j;gets(name);int a=jiancha(na
18、me);if(a=0)printf(" 不存在该歌曲,请添加!nnn");return;/检擦是否纯在该歌曲,若存在输出歌曲信息,若不存在printf(" 该歌曲不存在,请添加 n"); 结束该分支/*strcat(name1,name);/ strcat(name1,".mp3");*/strcat(name,".txt");FILE* fp=fopen(name,"r");if(fp=NULL)printf(" 不存在这首歌的歌词,请添加!n");/printf(&quo
19、t;con't open this file.");exit(0);/歌词不存在时打不开for(i=0;!feof(fp);i+)/输出歌词fgets(gecii,50,fp);9/16printf("%sn",gecii);fclose(fp);void choose2()/ 同理, copydete 中的读取,判断情况/ 这是按歌手来点歌/输入歌手,输出歌手所有的歌曲,然后跳到choose1;进行点歌char singer15;printf(" 请输入歌手的名字:");gets(singer);FILE *fp=fopen(&quo
20、t;music.txt","ab+");/if(fp=NULL) printf("con't open this file.");if(fp=NULL)printf("con't open this file.");exit(0);int i,j,k=0;/k用来记是否有该歌手歌曲for(i=0;!feof(fp);i+)fread(&musici,sizeof(struct musicdate),1,fp);for(j=0;j<i;j+)if(strcmp(musicj.singer ,sin
21、ger)=0)printf(" 歌曲: %sn", );k+;if(k=0)printf("没有该歌手的歌曲;n");else choose1();fclose(fp);void scan()FILE *fp=fopen("music.txt","ab+");/ if(fp=NULL) printf("con't open this file."); if(fp=NULL)printf("con't open this file.");e
22、xit(0);int i,j;printf(" 歌曲名称 歌手 风格 n"); for(i=0;!feof(fp);i+)fread(&musici,sizeof(struct musicdate),1,fp);10/16for(i=i-2;i>=0;i-)/至今不知道为啥是i-2printf("%10s%10s%10sn",,musici.singer,musici.style );fclose(fp);void out()printf(" 确定退出系统?(y/n ) ");char a;scan
23、f("%c",&a);if(a='y')exit(0);int main()FILE *fp;/*fp=(fopen("music.txt","ab+");if(fp=NULL) printf("con't open this file.");*/r:printf(" 欢迎进入ktv 点歌系统 n");printf("1: 点歌 n");printf("2: 浏览所有歌曲n");printf("3: 添加歌曲 n");printf("4: 删除歌曲 n");printf("5: 退出系统 n");printf("请选择功能 n");int i;scanf("%d",&i);fflush(stdin);switch(i)case 1:/system("cls");printf("1: 按歌曲名字点歌n2: 按歌手点歌 n");int way;scanf("%d",&way);fflush(stdin);if(wa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 上海电子信息职业技术学院《临床医学概论》2025-2026学年期末试卷
- 山西警官职业学院《播音主持概论》2025-2026学年期末试卷
- 上海师范大学《国际贸易实务英文版》2025-2026学年期末试卷
- 太原学院《英语语言学导论》2025-2026学年期末试卷
- 沈阳体育学院《当代世界经济与政治》2025-2026学年期末试卷
- 上海外国语大学《会计原理学》2025-2026学年期末试卷
- 上海中华职业技术学院《金融信托与租赁》2025-2026学年期末试卷
- 山西国际商务职业学院《会计学原理》2025-2026学年期末试卷
- 上海行健职业学院《广告文案写作》2025-2026学年期末试卷
- 朔州陶瓷职业技术学院《初级经济学》2025-2026学年期末试卷
- 2026年1月1日起施行新增值税法全文课件
- 山东省蔬菜出口到日本地区的现状及发展的对策
- 组织措施方案
- 健康体检主检报告的内涵
- 铁道概论(高职)PPT完整全套教学课件
- WPS Office办公应用案例教程
- 08D800-7 民用建筑电气设计与施工-室外布线
- 车辆技术档案范本(一车一档)
- 第34届河北省青少年科技创新大赛青少年科技创新大赛查新报告(参考样)
- GB/T 24044-2008环境管理生命周期评价要求与指南
- GB/T 15242.1-1994液压缸活塞和活塞杆动密封装置用同轴密封件尺寸系列和公差
评论
0/150
提交评论