程序设计基础实验报告模板-dxw.doc

上传人:公**** 文档编号:543940275 上传时间:2023-02-08 格式:DOC 页数:16 大小:248.50KB
返回 下载 相关 举报
程序设计基础实验报告模板-dxw.doc_第1页
第1页 / 共16页
程序设计基础实验报告模板-dxw.doc_第2页
第2页 / 共16页
程序设计基础实验报告模板-dxw.doc_第3页
第3页 / 共16页
程序设计基础实验报告模板-dxw.doc_第4页
第4页 / 共16页
程序设计基础实验报告模板-dxw.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《程序设计基础实验报告模板-dxw.doc》由会员分享,可在线阅读,更多相关《程序设计基础实验报告模板-dxw.doc(16页珍藏版)》请在金锄头文库上搜索。

1、程序设计基础课程设计实验报告班级:1403021姓名:张立磊学号:14030210017所选题目: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)&

2、!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,*

3、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) /逐个字符

4、读入文件 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时是只遇到了/*

5、 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得到对应的数

6、值,另外采用地位先加,之后的按转化规则编出 源程序:#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题算法描述:定义结构体来储存复数

7、,三种运算分为三种情况,分别按照运算规则编写源程序:#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

8、.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#includ

9、e#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,sizeo

10、f(struct musicdate),1,fp);for(j=0;ji;j+)if(strcmp(musicj.name ,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;ji;j+)printf(请输入第%d首歌曲信息(格式:歌曲名称 歌手 流派)n,j+1);scanf(%s%s%s,musicj.name ,musicj.singer ,musicj.style );fflush(stdin);if(fwrite(&musicj,sizeof(struct musicdate),1,fp)!=1) printf(录入失败n);/如果录入成功就等于1 else system(cls); printf(录入成功nnn); fclose(fp);void dete()FILE *fp=fopen(music.txt,a

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 研究报告 > 教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号