还剩11页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
《程序设计基础课程设计》实验报告班级1403013姓名熊清锋学号所选题目1_11_32_2,3_13_23_33_45_15_2第1_1题比较两个文本文件并打印出它们第一个不相同的行(文件每行字符数不多于80)算法描述:定义两个不同的指针,建立两个不同的文本文件并存入字符;打开文本文件并一行一行的比较,定义一个计数器,若发现了不同行,立即跳出循环,分别打印两个不同文件中计数器所指的行;源程序no1_
1.c#includestdio.h#includestdlib.h#includestring.h#defineN5//文件中字符的行数int__in{FILE*fp1*fp2;//文件指针charstr1[N]
[80]str2[N]
[80];charA[N]
[80]B[N]
[80];intikflag=0;printfPleaseenterthefirsttextA:\n;iffp1=fopennum
1.textw==NULL//建立文本文件{printfcannotopenthefile!;exit0;}fori=0;iN;i++//输入字符并写入文件{getsstr1[i];fputsstr1[i]fp1;fputs\nfp1;}printf\n;printfPleaseenterthesecondtextB:\n;iffp2=fopennum
2.textw==0//{printfcannotopenthefile!\n;exit0;}fori=0;iN;i++{getsstr2[i];fputsstr2[i]fp2;fputs\nfp2;}fclosefp1;fclosefp2;fp1=fopennum
1.textr;//打开文件fp2=fopennum
2.textr;fori=0;iN;i++//对两个文件中的字符进行行比较{fgetsstr1[i]80fp1;fgetsstr2[i]80fp2;ifstrcmpstr1[i]str2[i]!=0{k=i;flag=1;break;}}ifflag//如果存在不同行{printf\nThefirstdifferentrowbetweenAandB:\n;//分别输出不同行printfA:%s\nstr1[k];printfB:%s\nstr2[k];}elseprintfThetwotexth__ethesamecontents!!\n;fclosefp1;//关闭文件fclosefp2;return0;}测试数据第1_3题:算法描述定义三个文件指针,输入数据分别存在两个文件文本,输入时用结构存储数字和字符的混合输入;打开文件,对文件中的结构体存储的字符比较遇到两个文件中相同的name,将两个文件对应该name的内容整合,写到第三个文件中,并在屏幕输出文件内容源程序no1_
3.c#includestdio.h#includestdlib.h#includestring.h#defineN1structStudent//定义前两个文件内容的结构体,结构体元素是姓名和分数{charname
[10];doublescore;};structStudent1//定义第三个文件内容的结构体,元素是姓名和分数数组(含三个元素){charname
[10];doublescore
[3];};int__in{FILE*fp1*fp2*fp3;structStudentstu
[2][N];//定义二维结构体数组structStudent1stu1[N];intijk=0;intflag=0;//输入printfPleaseinputdb
1.___:\n;fp1=fopendb
1.___w;fori=0;iN;i++{scanf%s%lfstu
[0][i].namestu
[0][i].score;fwritestu
[0][i]sizeofstructStudent1fp1;//读取结构体中的一元素存入文件}printf\nPleaseinputdb
2.___:\n;fp2=fopendb2w;fori=0;iN;i++{scanf%s%lfstu
[1][i].namestu
[1][i].score;fwritestu
[1][i]sizeofstructStudent1fp2;}fp1=fopendb
1.___r;//打开文件,只写fp2=fopendb2___r;fori=0;iN;i++{freadstu
[0][i]sizeofstructStudent1fp1;forj=0;jN;j++{freadstu
[1][j]sizeofstructStudent1fp2;ifstrcmpstu
[0][i].namestu
[1][j].name==0{flag=1;strcpystu1[k].namestu
[1][i].name;stu1[k].score
[0]=stu
[0][i].score;stu1[k].score
[1]=stu
[1][j].score;stu1[k].score
[2]=stu1[k].score
[0]+stu1[k].score
[1]/2;k++;}}}printf\n;//输出ifflag{fp3=fopendb
3.___w;printfNames__thsEnglish__erage\n;fori=0;ik;i++{fwritestu1[i]sizeofstructStudent11fp3;printf%sstu1[i].name;forj=0;j3;j++printf%
10.2fstu1[i].score[j];printf\n;}fclosefp3;}elseprintf__ybethelistsaretakenbymistake!!\n;fclosefp1;fclosefp2;return0;}测试数据第2_2题统计一个英文文本文件中26个英文字母出现次数并按英文字母序输出统计结果,查找并替换此英文文本文件中某字符串算法描述:建立文本文件并输入数据(二维字符数组的形式),存储于文件,打开文件读出字符!!用个英文字符与从文件读出的文件比较,建立累加器对每个字母出现的次数赋值!源程序no2_
2.c#includestdio.h#includectype.h#includestring.h#defineN2int__in{FILE*fp1*fp2;intijkcout;charstr[N]
[80]chc;printfPleaseinputfile_num1:\n;fp1=fopennum1w;//建立文件并写入数据fori=0;iN;i++{getsstr[i];fputsstr[i]fp1;fputs\nfp1;}printf\n;//打开文件并读出数据fp2=fopennum1r;fori=0;iN;i++;fgetsstr[i]80fp2;printfTheshowingtimesofletters:\n;forch=ak=1;ch=z;ch++{cout=0;fori=0;iN;i++{forj=0;jstrlenstr[i];j++{ifisalphastr[i][j]{c=tolowerstr[i][j];//大写转化小写ifch==ccout++;}}}ifcout{printf%c:%2dchcout;k++;ifk%4==0printf\n;}}//查找并替换字符串my-myprintf\nTheadvertedarticle:\n;fori=0;iN;i++{forj=0;jstrlenstr[i];j++{ifstr[i][j]==mstr[i][j+1]==ystr[i][j+1]=e;}printf%s\nstr[i];}return0;}测试数据第3_1题将输入的2进制字符串转换为10进制数输出算法描述输入二进制的字符串,每个字符减去0字符就是他们的十进制数值,在乘以2的n-1次方,再加和!源程序no3_
1.c#includestdio.h#includestring.h//为strlen函数提供原型#include__th.h//为pow函数提供原型int__in{charstr
[10];intisum=0;printfPleaseinputbinarynumber:\n;getsstr;fori=0;istrlenstr;i++{sum+=str[i]-0*pow2i;//计算每个位上的字符再加和}printfThedeci__lnumberis:\n;printf%d\nsum;//输出所对应的十进制数return0;}测试数据第3_2题设计一个复数类型,输入实部和虚部生成一个复数,可进行两个复数求和、两个复数求差、两个复数求积运算算法描述复数分为实部和虚部,因此一个复数的输入是要分两部分的,输出也是,输出时在虚部后加i.源程序no3_
2.c#includestdio.hint__in{intabcd;charch;printfPleaseentertwocomplexnumbers:\n;scanf%d%d%d%dabcd;printf\n1calculatethesum\n2calculatethediff\n3calculatetheproduct\n;printfPleasechoose12or3:qtoquit:\n;//选择模式getchar;whilech=getchar!=q//循环{whilegetchar!=\n;switchch{case1:printf%d+%di\na+cb+d;break;case2:ifb-d=0printf%d+%di\na-cb-d;elseprintf%d%di\na-cb-d;break;case3:printf%d+%di\na*c-b*da*d+b*c;break;default:break;}}return0;}测试数据第3_3题用一个整型数组表示10进制大整数,数组的每个元素存储大整数的一位数字,将这个大整数转换为2进制数输出算法描述存入大整数时,将数值的各个位上的数分离存到数组中因为整数数值大,一定注意了溢出,,在计算时,再用数组下标与数值各个位上的关系,整合再输出所对应的二进制数!源程序No3_
3.c#includestdio.h#include__th.h#defineN20int__in{voidto_base_nlonglongnunsignedintbase;inta[N]i=0jkm;charch;longlongn=0;printf请输入数字(#结束):\n;printf\n;whilescanf%da[i]==1{i++;}j=i-1;fori=0;i=j;i++{fork=j;k=0;k--{n+=a[i]*pow10k;}}printf\n转换过后的等值二进制数\n;printf\n;to_base_nn2;printf\n;return0;}voidto_base_nlonglongnunsignedintbase//进制转换超级函数{intr;r=n%base;ifn=baseto_base_nn/basebase;putchar0+r;return;}测试数据第3_4题根据输入的数字N,计算N以内(包括N)数据链并统计数据链末尾数字是1的数据个数例如N=44,则数字链为44-32-13-10-1,其规则为4*4+4*4=32,3*3+2*2=13,1*1+3*3=10,1*1+0*0=1算法描述对输入数字进行各个位拆分并计算各个位上数字的平方和,每计算一次的和与1进行比较,知道等于1时程序结束源程序no3_
4.c#includestdio.hint__in{intnsuma
[10];inticout=0;printf请输入数字N;scanf%dn;printf\n数据链:\n;whilen!=1{printf%d-n;sum=0;i=0;whilen0//对每次的各位数字平方和再拆{a[i]=n%10;ifa
[0]==1cout++;//统计末尾数字为1的计数器sum+=a[i]*a[i];n=n/10;i++;}n=sum;}printf%d\n1;printf\n数据链末尾数字为1的数字个数:\n;printf%d\ncout;return0;}测试数据第5_1题程序自动生成一个位于99内的随机数,要求用户猜这个数用户输入一个数后,程序有三种应答toobig,too__all,youwin算法描述播下产生随机数的种子,随时间不同每次生成的随机数不同,用户根据提示进行猜数游戏源程序no5_
1.c#includestdio.h#includestdlib.h//为rand函数提供原型#includetime.h//为种子提供原型int__in{intnm;printfReadyLetsgo!!!\nInputthecorrectnumberyouthought:\n;scanf%dn;srandtimeNULL;//种子m=rand%100;whilen!=m//猜数进行时的提示{ifnmprintfToobig!Comeondotgiveup!\n;elseprintfToo__all!Whyareyousosilly!!\n;printfTryagain:\n;scanf%dn;}printf%c%cYouwin!Youareso__art!!\n11;return0;}测试数据第5_2题产生一组随机数,要求每个数字不能重复例如1,20,3,17,80,4,35,88符合要求,3,20,1,17,80,3,35,88不符合要求算法描述Rand函数一次只能产生一个随机数,于是使用循环结构让其多产生几个随机数,为了对随机数是否重复进行判断,将产生的随机数存放在数组中源程序no5_
2.c#includestdio.h#includestdlib.h#includetime.h#defineN10int__in{inta[N]nijk;intflag=1;n=N;srandtimeNULL;whileflag{fori=0;in;i++//多次产生随机数并存到数组a[i]=rand%100;fori=0;in;i++{forj=0;jn;j++{ifa[i]==a[j]i!=j//判断的数组中是否有重复数字,若有,就重新产生{flag=0;break;}}}if!flagflag=1;else{flag=0;printf产生的不重复的随机数\n;printf\n;fori=0k=1;in;i++k++{printf%-4da[i];ifk%10==0printf\n;}}}return0;}测试数据。