2023年程序设计基础实验报告新编.pdf
《2023年程序设计基础实验报告新编.pdf》由会员分享,可在线阅读,更多相关《2023年程序设计基础实验报告新编.pdf(50页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 程序设计基础课程设计实验报告班级:14 0 302 1姓名:宋之鑫学号:所选题目:,1_2,2,3_1,3_2,3 _ 3 ,3_4,4-1 ,5_1,5_2第1_1题算法描述:一方面定义两个二维字符数组,两个维数分别代表行数和文本中每行的字符的个数,用 f o r 循环和fgets函数把两个文本中的数据一行一行地复制到数组中,完毕后用for循环和st r c m p函数比较两个数组中的不同的行,碰到不同行输出不同行,若没有不相等的行则输出:这两个文本文献相同!完毕源程序:no 1 _ 1.c#inc 1 u d e#incl u d e#i n cludeint main()(int i;
2、char aL68 0M6J8 0;/用于存储文献中的字符串FILE*f pl;oFILE*fp2;。i f(fpl=fope n(1 .t xt,r)=NULL)打开文献pr i ntf(c a n*t ope n f i l e!nn);ge x i t(0);)oif(fp 2=fope n(u2.t x t rM)=NULL)/打开文献(s p r i n t f(c a nt o p en file!nu);oexit(0);fo r(i=0;i6;i+)/把文献中的数据录入到字符串数组中(fgets(b i,81,f p 2);8fg e ts(a i,81,f p 1);)for
3、(i=0;i6;i+)if(strcm p(ai,b i )!=0)br e ak;比较此行数据是否相同 i f(i=6)p r i n tf(这两个文献相同!n);e ls e(。pr i nt f(不同行是第 d 行nl.t xt 的第 d 行是s nb.t xt 的第d 行是sn,i+1,i+l,a i,i+l,b i);)测试数据(输入、输出):两个不同的文本文献l.t x t和2.txt1-记 事 本文 件(F)(E)格式_ 查看(V)帮助(H)ld e lsd flde2lde3dellde4lde5555lde66662-记 事 本文件(F)=(E)格式(O)查看C V)帮助(H
4、)ld e lsd f2de2gdg2de3sdfs2de4sdfasdf2de5sadfdg2de6sdfsC:Users床之密Desktop 编程、输出第一个不同的行、输出第一个不同行.exe-不同行是第2行L txt的 第2行是ide22小 的第2行是2162919(Process exited after 0.02069 seconds with return value 0请按任意键继续.第1_2题算法描述:有三个文献,前两个里面有一串数字,把前面两个文献中的数字格式化输入到一个整型数组中,写一个冒泡排序函数把这个整型数组从大到小排序,最后平用fprin t输入到第三个文献中,完毕源
5、程序:n o 1 _2.c#in c 1 u d e#inc 1 ud e#includeint paixu(int*a r r,in tji s h u)冒泡排序,把数组中的数组排序(int i=O,j=0,tm p;for(i=0;ijish u;i+)/冒泡排序,从大到小(fo r(j=i+1;jarr j)(t mp=a rr i;a rr i=ar r j;arr j=tm p;)return 0;)i n t ma i n()(int a 3 0 0 =0;/初始化in t ji s h u=0;初始化int i=0;FILE*fpl=fopen(n);FILE*fp2=fope
6、n(M2.t x tn,n r”);FILE*fp3=fopen(3.txt“,“w+);i f(fpl=NULL|f p 2=NULL)/判断打开是否成功(p r intf(文献打开失败n);ret u r n 0;whi 1 e(!feof(f pl)(fscanf(f p 1,%d ,&a j ish u+);/把文献1 中各数字输入到数组中)fcl o se(f p 1 );whi 1 e(!f eof(fp2)/把文献二中各数字输入到数组中(fscanf(fp2,%d ,&aj i s h u+);)f c lose(fp2);paixu(a,j is h u);fo r(i=0;i
7、ji s hu;i+)(fp r i ntf(f p3,%d,a i);/把排完序的数字输入到文献3 中)fclose(fp 3);P rintf(操作成功return 0;测试数据(输入、输出):输入:输出:第 2-1 题算法描述:有一个带有注释的c 源程序,一方面把它按行录入到二维数组中,有两种情况/型和/*/型,第一分两种情况,解决方法,找到/所在数组行,把这行削去,/之后赋值为0,/*/情况,找出/*所在行一直削去,直到碰到*/,把解决后的数组重新放入c 源程序中,(放之前c 的打开方式是wb+:为了把之前的数据删除)完毕源程序:No2_ 1.c/I.将 合 法 C源程序每行前加上行号
8、并删除其所有注释。#inclu d e#incl u dein t main()(p r intf(这是一个将c 源程序每行加行号且删除其所有注释的程序”);int i=0,j,k;c h a r d uqu100 1 000,ch;用这个来储存c 程序,这个程序 不大于100行,且每行不大于100 0 个字符FI L E*fp=fop e n(nl.cpp%”r+”);oif(fp=NULL)(prin t f (打开文献失败 n”);6oreturn 0;)owhile(!f e of(f p)(fg e ts(d u qui,10 0 O,fp);-i +;/读取的行数)ofor(k=i
9、 1 ;k=O;k)把注释消掉for(j=O;j 1000;j+)00|。屈 f (d u q u k j =/&d u q u kj j 1 !=,*&(d u q u LkJ j+l I|d u qu k l j+l =*)这是/*情 况 和 情况。(。i f (k!=0&j!=0)d u q u k j=n ;/防止下面的第一行是注释,消除完后,第一行变空。e l s e d u q u k j =0 d u q u k j+l =,0 ;e I s e i f (d u q u k Lj=7,&d u q u k =d u q u k 0 =0/*/的这种情况)f cl o s e(f
10、 p);/把本来的c内容删掉f p=f o p e n (l.cp p ,w b+);/同上i f(f p=N U L L )(。p r i n t f (打开文献失败 n );r e t u r n 0;f o r(j=0,k=l;j i -1 ;j+,k+)/这个是加行号的(i -1是由于前面有个i+,多加了一个1 )(i f(s t r l e n(d u q u j)=O)。k-;/假如第一行为空,则跳过这次,并且不能使第一行行号变成2;所以要减去1co n t i n u e;。f p u t s(/*”,f p);o o f p r i n t f(f p,d”,k);。f p u
11、 t s(H*/”,f p);f p u t s (d u q u j ,f p);。)f cl o s e(f p );”e t u r n 0;)测试数据(输入、输出):1:没操作之前*l.cpp1/s d fs d fa s d fs d fa s d fs d f2#in c lu d e 3 in t m a in()45 5 6 6 5 4*/|7|p rirj 中 le llo w o rldM)i/s k L j d k f;a s d f8 L j/sdfaJuj sfulifsa d fa s d fs d fa s d fa s d f9/s d s a fd s f2:
12、操作之后第 3 题算法描述:输入的是一个字符串,一方面把这个字符串转化为整型数组中的数,再根据二进制转化为十进制的方法求出,具体实现过程用fo r循环完毕,其中定义一个数学关于几的几次方的函数方便计算源程序:No3_l.c#i n c lude#in c lude#inc 1 u d e int p o w(in t a,in t b)次数函数(oint sum=l;for(b;bO;b-)s um*=a;a r et u m s um;)i n t ma i n()(in t a LlOO;charb 1 0;叩ri n t f(“这是一个将一个二进制的字符串转化十进制的数的程序 n 请输入
13、二进制字符串:n);g e ts (b);int n=s t rle n(b);oint i,j,k,m,s u m=0;ofo r(i=0;i=0;i-,j+)/把二进制的数转化为十进制的数s u m+=p o w(2,j)*ai;)P r intf(转化的结果为:%d,s u m);)测试数据(输入、输出):A第3_2题算法描述:一方面定义一个复数的结构体,内部分别为复数的实部和虚部,有三个分支,分别为三种运算,加减乘,根据运算法则,做出c 中的运算规则,假如输入错误则从新输入,最后输出结果源程序:N o 3_2.c#incl u de#i n clud e#i n cl u dein t
14、 main()(i n t m,n,p,q;struct f u shuint i;/实部int j;/虚部a,b,c;/c 是昨晚运算的结构体char start=y;/标志,,当 s t ar t=n 时退出f or(;l;)(pr i ntf(请分别输入两个复数的实部,虚部(用空格间隔)n);pri n tf(请输入第一个复数:n );。scan f(%d%d,&a.i,&a.j);第一个复数fflush(s td i n);释放数据oprintf(请输入第二个复数:n );。s c a nf(%d%d,&b.i,&b.j);fflush(std i n);xi n g:pr i n t
15、 f(你希望这两个复数做什么运算?n 求和运算请输入1.n 求差运算请输入2.n 求乘积运算请输入3.W );s canf(%d,&m);/选择运算方式f f 1 ush(s t di n);o i f(m=1)/求和(c.i=a.i+b.i;c.j=a.j+b.j;“else i f(m=2)/求差0 0 I。c.i=a.i-b i;6c.j=a.j-b.j;else if(m=3)求积0 owc.i=a.i*b.i-a.j*b.j;。c.j=a.i*b.j+a.j*b.i;0 0 el s e p rintf(输入错误,请重新输入n);goto x ing;/假如输入错误的话则重新输入数据
16、。叩 r i n tf(运算结果是:d+%d i nn,c.i,c.j);prin t f(你是否要继续使用?(y/n)n);sea n f(%c,&s tart);offlush(s t din);i f(st a r t=n,)exit(O);)测试数据(输入、输出):1.加法运算,减法运算,乘法运算c、C:Dev-CppConsolePauser.exe请 分 别 撞 入 两 丈 复 数 的 卖 都,虚 部。用 录 圈 情 亍请 输 入 第 一 个 复 数:蔷 输 入 第 二 个 复 数:去 茶 望 这 两 个 复 数 做 什 么 运 算?荚 和 运 算请摘入,求 差 运 算请输入2.京
17、 乘 积 送 算 请 输 入 3-运 算 结 果 是:4*3 i你 是 否 要 继 续 使 用?毒 翥 契 亶 率&羲 数 的 实 部,虚 部(用 空 格 间 隔)着 镰 入 第 二 个 复 数:去 篇 望 这 两 个 复 数 做 什 么 运 算?泵 乘 积 差 算 将 输 入 3.2运 算 结 果 是:-2+1:你 是 否 要 继 续 使 用?y请 会 别 通 入 两 个 复 数 的 实 部,虚 部(用 空 格 间 隔)请 输 入 弟 一 个 复 数:2 3请 输 入 第 二 个 复 数:源 篇 望 这 两 个 复 数 做 什 么 运 算?录 赴 运 算 请 输 入 i-求 差 运 算请输入
18、2.未 乘 积 法 算 情 输 入 3 .运 算 结 果 是:-?*22i你 是 否 要 继 续 使 用?-|n|x第3_3题算法描述:按本程序规定,一方面把十进制的数放到字符串中,为了要把十进制转化为二进制必须把这个字符串转化到整型数组,所以定义一个转化函数,再根据,十进制转化为二进制的数学方法,编出相应法则(本程序定义了,X乘 以10的n次方的函数方便计算)完毕源程序:N o3_3.c#i n c lud e#incl u dei n t pow(in t a,i nt b)计算a 乘 以 1 0 的 b 次方的值(oi n t s u m=1;f o r(b;b 0;b-)(sum*=l
19、 0;0)e turn a*sum;)int z h u anhua(int sum)/将十进制转化为二进制(in t y,c=1 ,b 10 0;y 是余数in t i;ofor(i=0,y=0;sum!=0;i+)6g b EiJ=sum%2;o sum=(s u mb Li)/2;y+;/计数)叩rintf(结果是:”);ofor(i=0;iy;i+)printf(H%d n,b y-i-1);/输出二进制的数)i n t m a i n()i nt a 100,i,j,k,s um=0;c h ar b100;printf(这是一个将一个十进制数转化为二进制的数的程序n请输入一个十进制
20、的数:n );ge t s(b);先把是十进制的数放到一个字符串数组里面i n t n=strl e n(b);/b是十进制数的位数f o r(i=O;in;i+)。a iJ=biJ-4 8;/把十进制数放到整型数组里面fo r(i=0;in;i+)/计算大整数的值。s um+=pow(a i,n-1 i);/pr i ntf(sum=%d,s u m);zhua n hua(s u m);测试数据(输入、输出):第 3_4题算法描述:先判断输入的数的位数(这是一个子程序),再写一个子程序,按是判断一个数是否为链运算后是否为为一,假如为一,返 回 1 给主函数,主函数中有一个变量记录链运算为1
21、的 数 的 个 数 PS:(按照题目给的链运算规则写第一个子程序)完毕源程序:N o 3_4.c#i n c 1 ude#includeint weishu(i n t n)判断输入的N 的位数(int i;fo r(i=1 ;l;i+)(。n=n/10;if(n=0)re t urn i;返回位数。i n t xunhuan(i nt n)/判断链运算后是否某为1(int a IO 0 J,i,k;i n t j=we i sh u(n);for(;n=10;)/4 4-32-13-1 0-l(,for(i=0;i j;i+)/把各个数字取出来,放到数组里00ai=n%1 0;n=(n-ai
22、)/10;oo f o r(i=0;i 0;n)(i f(x unhuan(n)=1)m+;/记录数据用的。pr i ntf(结果是:%d ,m);测试数据(输入、输出):铤:E tirf算争吉军是否知.e x e果X 2第4_1题算法描述:K t v 点歌系统重要的是把主体框架搭建起来,这里实现多种功能要用到sw i t ch语句,各种 c a se连接着一个有功能的子程序,每个功能结束返回主菜单,歌曲信息的读取还需要结构体的定义,歌曲的信息(歌曲名,歌手,风格)放到一个文本文献中,歌曲的删除添加需要加一个密码功能,结构体有一个标记变量,这个变量用于删除歌曲时把删除的歌曲做标记源程序:No4
23、_ 1 .c#include#i n c lu d e#i n c 1 ude#d e f i ne SIZE 1 0 00 最多有 10 0 0 首歌曲s t ruct musicdat e/定义歌曲信息的结构体变量(c h ar name15;ochar s inger15;char sty 1 e L10;int flag=l;用于删除时标记的music S IZ E;vo i d mimaServ e 1 ()/这是密码服务1,启动密码服务的(FILE*f p=fopen(,mim a,t xtn,ab+n);oif(fp=NULL)(oprintf(n c o n 7 t open
24、t h is f i 1 e!);。exi t(0);)ochar mi ma 6=n0 n ;给密码初始化fg e t s(mim a,7,f p);把密码读到m im a数组中/i f(strlen(mima)=O)p ri n tf(您还没有设立密码n );/叩 r i ntf(*%s*”,mima);if(s t rlen(m i ma)!=0)/假如启动就不用再启动,直接结束就okay0 0|o printf(密码服务已启动,无需再次启动 nn);。e t urn;。else (s r e star:。printf(”请输入密码,按回车键结束(密码共六位,可以是字母或数字)”),密码
25、由六位字符组成a g e ts (mima);if(s t r 1 en(m i m a)!=6)/假如不是六位则密码是设立错误printf(n 格式错误,请重新输入!(密码共六位,可以是字母或数字)nn);wogoto res t ar;)g f f 1 u sh(s t d i n);3叩ri n tf(*n 请再次出入密码)。char check6=“0 ;/防止第一次密码出入错误,第二次验证g ets(chec k);g i f(st r c m p(c heck,mima)=O)f p uts(mim a,f p);。del s e00|8。printf(M n n 两次输入的不一致
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 程序设计 基础 实验 报告 新编
限制150内