《程序设计方案基础学习课程设计方案 .docx》由会员分享,可在线阅读,更多相关《程序设计方案基础学习课程设计方案 .docx(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品名师归纳总结程序设计基础课程设计试验报告班级: 1403013姓名:熊清锋学号: 14030130063所选题目: 1_1, 1_3, 2_2, 3_1, 3_2 ,3_3, 3_4, 5_1, 5_2,第 1_1 题:比较两个文本文件并打印出它们第一个不相同的行(文件每行字符数不多于 80)。算法描述 :定义两个不同的指针,建立两个不同的文本文件并存入字符。打开文本文件并一行一行的比较,定义一个计数器,如发觉了不同行,立刻跳出循环,分别打印两个不同文件中计数器所指的行。源程序: no1_1.c #include#include #include#define N 5/ 文件中字符的行数i
2、nt mainFILE *fp1,*fp2。/文件指针char str1N80,str2N80。char AN80,BN80。int i,k,flag=0 。printfPlease enter the first text A:n。iffp1=fopennum1.text,w=NULL/建立文本文件printfcannot open the file.。exit0 。fori=0 。 iN 。 i+/ 输入字符并写入文件getsstr1i 。fputsstr1i,fp1 。fputsn,fp1 。printfn 。printfPlease enter the second text B:n
3、。iffp2=fopennum2.text,w=0/可编辑资料 - - - 欢迎下载精品名师归纳总结printfcannot open the file.n。exit0 。fori=0 。 iN 。 i+getsstr2i 。fputsstr2i,fp2 。fputsn,fp2 。fclosefp1 。fclosefp2 。fp1=fopennum1.text,r。/ 打开文件fp2=fopennum2.text,r。fori=0 。 iN 。 i+/ 对两个文件中的字符进行行比较fgetsstr1i,80,fp1 。fgetsstr2i,80,fp2 。ifstrcmpstr1i,str2i
4、.=0k=i 。flag=1 。break。ifflag/ 假如存在不同行printfnThe first different row between A and B:n。/ 分别输出不同行printfA:%sn,str1k。printfB:%sn,str2k。elseprintfThe two text have the same contents.n。fclosefp1 。/关闭文件fclosefp2 。return 0 。测试数据:可编辑资料 - - - 欢迎下载精品名师归纳总结第 1_3 题:现有两个文本文件db1.txt和 db2.txt。 db1.txt中第一列为姓名,其次列为英语
5、成果。 db2.txt中第一列为姓名,其次列为数学成果。通过姓名字段将db1.txt文件关联到db2.txt文件生成 db3.txt文件。 db3.txt文件第一列为姓名,其次列为英语成果,第三列 为数学成果,第四列为平均成果算法描述:定义三个文件指针,输入数据分别存在两个文件文本,输入时用结构储备数字和字符的混合输入。打开文件,对文件中的结构体储备的字符比较遇到两个文件中相同的name,将两个文件对应当name的内容整合,写到第三个文件中,并在屏幕输出文件内容。源程序:no1_3.c#include #include #include #define N 1struct Student/定义
6、前两个文件内容的结构体,结构体元素是姓名和分数charname10。double score。 。struct Student1/定义第三个文件内容的结构体,元素是姓名和分数数组(含三个元素)char name10。double score3。 。int mainFILE *fp1,*fp2,*fp3。struct Student stu2N。/ 定义二维结构体数组struct Student1 stu1N。int i,j,k=0。int flag=0。/输入printfPlease input db1.txt:n。fp1=fopendb1.txt,w。fori=0。 iN 。 i+scanf
7、%s%lf,stu0i.name,&stu0i.score。fwrite&stu0i,sizeofstruct Student,1,fp1。/ 读取结构体中的一元素存入文件可编辑资料 - - - 欢迎下载精品名师归纳总结printfnPlease input db2.txt:n。fp2=fopendb2,w。fori=0。 iN 。 i+scanf%s%lf,stu1i.name,&stu1i.score。fwrite&stu1i,sizeofstruct Student,1,fp2。fp1=fopendb1.txt,r。/ 打开文件,只写fp2=fopendb2,txt,r。fori=0。
8、iN 。 i+fread&stu0i,sizeofstruct Student,1,fp1。forj=0。 jN 。 j+fread&stu1j,sizeofstruct Student,1,fp2。ifstrcmpstu0i.name,stu1j.name=0flag=1。strcpystu1k.name,stu1i.name。stu1k.score0=stu0i.score。stu1k.score1=stu1j.score。stu1k.score2=stu1k.score0+stu1k.score1/2。k+。printfn。/输出ifflagfp3=fopendb3.txt,w。prin
9、tfNamesMathsEnglishAveragen。fori=0。 ik 。 i+fwrite&stu1i,sizeofstruct Student1,1,fp3。printf%s ,stu1i.name。forj=0。 j3 。 j+ printf%10.2f,stu1i.scorej。printfn。fclosefp3。else可编辑资料 - - - 欢迎下载精品名师归纳总结printfMaybe the lists are taken by mistake.n。fclosefp1。fclosefp2。return 0。测试数据:第 2_2 题:统计一个英文文本文件中26 个英文字母显
10、现次数并按英文字母序输出统计结果,查找并替换此英文文本文件中某字符串。算法描述 :建立文本文件并输入数据(二维字符数组的形式),储备于文件,打开文件读出字符! 用个英文字符与从文件读出的文件比较,建立累加器对每个字母显现的次数赋值!源程序: no2_2.c #include #include #include #define N 2int mainFILE *fp1,*fp2。int i,j,k,cout 。char strN80,ch,c 。printfPlease input file_num1:n。fp1=fopennum1,w。/建立文件并写入数据fori=0 。 iN 。 i+get
11、sstri 。fputsstri,fp1 。fputsn,fp1 。printfn 。/打开文件并读出数据fp2=fopennum1,r。fori=0 。 iN 。 i+ 。fgetsstri,80,fp2 。可编辑资料 - - - 欢迎下载精品名师归纳总结printfThe showing times of letters:n。forch=a,k=1 。 ch=z 。 ch+cout=0 。fori=0 。 iN 。 i+forj=0 。 jmy printfnThe adverted article:n。fori=0 。 iN 。 i+forj=0 。 jstrlenstri 。 j+if
12、strij=m&strij+1=y strij+1=e 。printf%sn,stri。return 0 。测试数据:可编辑资料 - - - 欢迎下载精品名师归纳总结第 3_1 题:将输入的 2 进制字符串转换为10 进制数输出。算法描述:输入二进制的字符串,每个字符减去0 字符就是他们的十进制数值,在乘以2的 n-1 次方,再加和!源程序: no3_1.c #include#include/为 strlen函数供应原型#include/为 pow 函数供应原型int mainchar str10。int i,sum=0。printfPlease input binary number:n。g
13、etsstr。fori=0。istrlenstr。i+sum+=stri-0*pow2,i。/ 运算每个位上的字符再加和printfThe decimal number is:n 。printf%dn,sum。/ 输出所对应的十进制数return 0。测试数据:第 3_2 题:设计一个复数类型,输入实部和虚部生成一个复数,可进行两个复数求和、两个复数求差、两个复数求积运算。算法描述:复数分为实部和虚部,因此一个复数的输入是要分两部分的,输出也是,输出时在虚部后加 i.源程序:no3_2.c可编辑资料 - - - 欢迎下载精品名师归纳总结#include int mainint a,b,c,d。
14、char ch。printfPlease enter two complex numbers:n。scanf%d%d%d%d,&a,&b,&c,&d。printfn1calculate the sumn2calculate the diffn3calculate the productn。printfPlease choose 1,2 or 3:q to quit:n。/ 挑选模式getchar。whilech=getchar.=q/循环whilegetchar.=n。switchchcase1:printf%d+%din,a+c,b+d。break。case2:ifb-d=0printf%d
15、+%din,a-c,b-d。elseprintf%d%din,a-c,b-d。break。case3:printf%d+%din,a*c-b*d,a*d+b*c。break。default:break。return 0。测试数据:第 3_3 题:可编辑资料 - - - 欢迎下载精品名师归纳总结用一个整型数组表示10 进制大整数,数组的每个元素储备大整数的一位数字,将这个大整数转换为 2 进制数输出。算法描述:存入大整数时,将数值的各个位上的数分别存到数组中。由于整数数值大,肯定留意了溢出,在运算时,再用数组下标与数值各个位上的关系,整合再输出所对应的二进制数!源程序: No3_3.c #inc
16、lude #include #define N 20int mainvoid to_base_nlong long n, unsigned int base。int aN,i=0,j,k,m。char ch。long long n=0。printf请输入数字( #终止) :n。printfn。whilescanf%d,&ai=1i+。j=i-1。fori=0。 i=0 。 k-n+=ai*pow10,k。printfn转换过后的等值二进制数:n。printfn。to_base_nn,2。printfn。return 0。void to_base_nlong long n, unsigned i
17、nt base/进制转换超级函数int r。r = n % base。if n = baseto_base_nn / base, base。可编辑资料 - - - 欢迎下载精品名师归纳总结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 进行
18、比较,知道等于 1 时程序终止。源程序: no3_4.c #include int mainint n,sum,a10。int i,cout=0。printf请输入数字 N : 。scanf%d,&n。 printfn数据链 :n。whilen.=1printf%d-,n。sum=0。i=0。whilen0/对每次的各位数字平方和再拆ai=n%10。ifa0=1cout+。/ 统计末尾数字为 1 的计数器sum+=ai*ai。n=n/10。i+。可编辑资料 - - - 欢迎下载精品名师归纳总结n=sum。printf%dn,1。printfn数据链末尾数字为1 的数字个数 :n。printf%
19、dn,cout。return 0。测试数据:第 5_1 题:程序自动生成一个位于99 内的随机数,要求用户猜这个数。用户输入一个数后,程序有三种应答: too big, too small, you win 。算法描述:播下产生随机数的种子,随时间不同每次生成的随机数不同,用户依据提示进行猜数嬉戏。源程序: no5_1.c #include#include/为 rand函数供应原型#include/为种子供应原型int mainint n,m。printfReady. Lets go.nInput the correct number you thought:n。scanf%d,&n。sran
20、dtimeNULL。/ 种子m=rand%100。whilen.=m/猜数进行时的提示ifnmprintfToo big. Come on,dot give up.n。elseprintfToo small. Why are you so silly.n。printfTry again:n。scanf%d,&n。printf%c%c You win. You are so smart.n,1,1。return 0。可编辑资料 - - - 欢迎下载精品名师归纳总结测试数据:第 5_2 题:产生一组随机数,要求每个数字不能重复。例如:1, 20, 3, 17, 80, 4, 35, 88 符合要求
21、, 3 , 20, 1, 17, 80, 3,35, 88 不符合要求算法描述:Rand 函数一次只能产生一个随机数,于是使用循环结构让其多产生几个随机数,为了对随机数是否重复进行判定,将产生的随机数存放在数组中。源程序: no5_2.c #include #include #include #define N 10int mainint aN,n,i,j,k。int flag=1。n=N。srandtimeNULL。whileflagfori=0。 in 。 i+/多次产生随机数并存到数组ai=rand%100。fori=0。 in 。 i+forj=0。 jn 。 j+ifai=aj&i.=j/判定的数组中是否有重复数字,如有,就重新产生flag=0。break。可编辑资料 - - - 欢迎下载精品名师归纳总结if.flagflag=1。elseflag=0。printf产生的不重复的随机数:n。printfn。fori=0,k=1。 in 。 i+,k+printf%-4d,ai。ifk%10=0printfn。return 0。测试数据:可编辑资料 - - - 欢迎下载
限制150内