程序设计基础实验报告模板-dxw_第1页
程序设计基础实验报告模板-dxw_第2页
程序设计基础实验报告模板-dxw_第3页
程序设计基础实验报告模板-dxw_第4页
程序设计基础实验报告模板-dxw_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序设计基础课程设计实验报告班级:姓名:张立磊学号:所选题目:1_1,,2_1,,3_1,3_2,4_1,5_1第1_1题 算法描述:定义两个数组,以只读的形式打开两个文本,当两个文本都没有读完时进行循环,如果两个文本不一样输出不同行。源程序:no1_1.c #include#include#includeint main() FILE*fp1=NULL; FILE*fp2=NULL; char str1100,str2100; fp1=fopen(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; 测试数据(输入、输出):第2_1题 算法描述:将源程序的每一行字符都放到一个数组里,检查/和/* */这两种情况,如果遇到/,便去除后面的字符,如果遇到/* */,去除中间的字符。源程序:No2_1.c #include#include#includeint main()FILE*fp1,*fp2; /定义指向FILE类型文件的指针变量 char f110,f210,str500,temp1500,temp2500;int i,j=1,n=1,k=0;/定义变量 printf(请输入所用的源文件名:);/文件的打开 scanf(%s,f1) ;if(fp1=fopen(f1,r)=NULL)printf(无法打开源文件n);exit(0);printf(请输入所用的写入文件名:);scanf(%s,f2) ;if(fp2=fopen(f2,w)=NULL)printf(无法打开写入文件n);exit(0);while(fgets(str,500,fp1)!=NULL) /逐个字符读入文件 n=strlen(str); for(i=0;in;i+) /读到文件的最后 if(stri=/&stri+1=/) /遇到“/”注释的结果 stri=n;stri+1=0;break; if(stri=/&stri+1=*) /遇到“/* */”注释的结果 stri=0;strcpy(temp1,str);/把/*前字符串复制给temp1 k=1;/改变k的值 if(stri=*&stri+1=/) strcpy(temp2,&stri+2);/把*/后的字符串复制给temp2 k=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中存储的都是删除过后的字符串,直接写进新的cpp文件中 printf(已完成,任意键退出n);fclose(fp1);/文件的关闭 fclose(fp2);return 0; 测试数据(输入、输出):第3_1题 算法描述:由于输入是字符,所以减掉0得到对应的数值,另外采用地位先加,之后的按转化规则编出 源程序:#include#includeint main()printf(请输入二进制的数:n); char s100=0; int n=0,i=0,m=1,sum=0; gets(s); while(si+) n+;/统计实际有多少位 for(i=0;in;i+) sum=sum+(sn-i-1-0)*m;/由于输入是字符,所以减掉0得到对应的数值,另外采用地位先加 m*=2;/因为高位的权是地位的2倍,所以每加完一位乘2 printf(结果是:%dn,sum); return 0; 测试数据(输入、输出):第3_2题算法描述:定义结构体来储存复数,三种运算分为三种情况,分别按照运算规则编写源程序:#includeint main() struct fushu int i;/实部 int j;/虚部 a,b,c; int m; printf(请输入复数的实部和虚部n); scanf(%d %d %d %d,&a.i,&a.j,&b.i,&b.j); fflush(stdin); printf(请输入要进行的运算方式: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; else c.i=a.i*b.i-a.j*b.j; c.j=a.i*b.j+a.j*b.i; if(c.j=0)printf(结果为:%d+%din,c.i,c.j); if(c.j0)printf(结果为;%d%din,c.i,c.j); return 0; 测试数据(输入、输出):第4_1题算法描述:使用switch在主程序中,有好多功能在case中,每个功能都有个子程序来实现源程序:/1. 模拟 KTV 点歌系统。用户可按歌名查找某首歌曲或按歌手名查找其所有歌曲, 点歌后显示所点歌曲歌词。管理员可添加和删除歌曲,每个歌曲的歌词用一个单独的文 件存储。 /ktv点歌系统 #include#include#include#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) printf(cont open this file.);exit(0);int i,j;for(i=0;!feof(fp);i+)fread(&musici,sizeof(struct musicdate),1,fp);for(j=0;ji;j+)if(strcmp( ,name)=0)/和dete相同 printf(歌手:%s 风格:%sn,musicj.singer ,musicj.style ); return 1;return 0;fclose(fp); void add()FILE *fp=(fopen(music.txt,ab+);if(fp=NULL) printf(cont open this file.);exit(0); printf(请输入要添加歌曲的数量:n);int i,j;scanf(%d,&i);for(j=0;j=0;i-)printf(name:%s singer:%s style:%sn,,musici.singer ,musici.style );printf(请输入要删除的歌曲名称:n);gets(name);int a=jiancha(name);/检查歌曲是否存在 if(a=0) system(cls);printf(不存在该歌曲,操作失败!nnn); return;/检查 是否存在此歌曲 for(j=0;ji;j+)if(strcmp( ,name)=0) musicj.flag=0;fclose(fp);fp=fopen(music.txt,wb);if(fp=NULL) printf(cont open this file.);exit(0);for(j=0;ji-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(name);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(cont open this file.);exit(0);/歌词不存在时打不开 for(i=0;!feof(fp);i+)/输出歌词 fgets(gecii,50,fp);printf(%sn,gecii);fclose(fp);void choose2()/同理,copy dete中的读取,判断情况/这是按歌手来点歌/输入歌手,输出歌手所有的歌曲,然后跳到choose1;进行点歌 char singer15;printf(请输入歌手的名字:); gets(singer);FILE *fp=fopen(music.txt,ab+);/if(fp=NULL) printf(cont open this file.);if(fp=NULL) printf(cont 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=0;i-)/至今不知道为啥是i-2 printf(%10s %10s %10sn,,musici.singer ,musici.style );fclose(fp);void out()printf(确定退出系统?(y/n));char a;scanf(%c,&a);if(a=y) exit(0);int main()FILE *fp;/*fp=(fopen(music.txt,ab+);if(fp=NULL) printf(cont 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(way=1) choose1();else choose2();goto r;break;case 2:/system(cls);scan();goto r;break; case 3: /system(cls);add();goto r;break;case 4:/system(cls);dete();goto r;break;case 5:out();goto r;break;default :printf(输入错误!请重新输入:n);goto r;break; 测试数据(输入、输出):第5_1题算法描述:中时间种子,获得随机数,随机数在1-100之内,用户进行猜数直到猜中才退出源程序:#include #include #include int main() int i,j; sra

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论