《2022年程序设计方案基础学习课程设计方案.docx》由会员分享,可在线阅读,更多相关《2022年程序设计方案基础学习课程设计方案.docx(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
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 #includ
2、e #define N 5/ 文件中字符的行数 int main FILE *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
3、 ; printfPlease enter the second text B:n ; iffp2=fopennum2.text,w=0/ 名师归纳总结 - - - - - - -第 1 页,共 13 页精选学习资料 - - - - - - - - - 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; for
4、i=0 ; iN ; i+/ 对两个文件中的字符进行行比较 fgetsstr1i,80,fp1 ; fgetsstr2i,80,fp2 ; ifstrcmpstr1i,str2i.=0 k=i ; flag=1 ; break; ifflag/ 假如存在不同行 printfnThe first different row between A and B:n;/分别输出不同行 printfA: %sn,str1k; printfB: %sn,str2k; else printfThe two text have the same contents.n; fclosefp1 ; /关闭文件 fcl
5、osefp2 ; return 0; 测试数据:名师归纳总结 - - - - - - -第 2 页,共 13 页精选学习资料 - - - - - - - - - 第 1_3 题: 现有两个文本文件 db1.txt 和 db2.txt; db1.txt 中第一列为姓名,其次列为英语成果;db2.txt 中第一列为姓名,其次列为数学成果;通过姓名字段将 db1.txt 文件关联到db2.txt 文件生成 db3.txt 文件; db3.txt 文件第一列为姓名,其次列为英语成果,第三列为数学成果,第四列为平均成果算法描述:定义三个文件指针,输入数据分别存在两个文件文本,输入时用结构储备数字和字符的
6、混合输入;打开文件,对文件中的结构体储备的字符比较遇到两个文件中相同的 name,将两个文件对应当 name的内容整合,写到第三个文件中,并在屏幕输出文件内容;源程序:no1_3.c #include #include #include #define N 1 struct Student/ 定义前两个文件内容的结构体,结构体元素是姓名和分数 char name10; double score ;struct Student1/ 定义第三个文件内容的结构体,元素是姓名和分数数组(含三个元素) char name10; double score3 ;int main FILE *fp1,*fp2
7、,*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%s%lf,stu0i.name,&stu0i.score; fwrite&stu0i,sizeofstruct Student,1,fp1 存入文件 ;/ 读取结构体中的一元素名师归纳总结 - - - - - - -第 3 页,共 13 页精选学习资料 - - - -
8、 - - - - - 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; iN ; i+ fread&stu0i,sizeofstruct Student,1,fp1; forj=0; jN ; j+ fread&stu1j,sizeofstruct St
9、udent,1,fp2; ifstrcmpstu0i.name,stu1j.name=0 flag=1; strcpystu1k.name,stu1i.name stu1k.score0=stu0i.score; stu1k.score1=stu1j.score; stu1k.score2=stu1k.score0+stu1k.score1/2 k+; printfn; / 输出 ifflag fp3=fopendb3.txt,w; printfNames Maths English Averagen; fori=0; ik ; i+ fwrite&stu1i,sizeofstruct Stu
10、dent1,1,fp3; printf%s ,stu1i.name; forj=0; j3 ; j+ printf%10.2f,stu1i.scorej printfn; fclosefp3; else 名师归纳总结 - - - - - - -第 4 页,共 13 页精选学习资料 - - - - - - - - - printfMaybe the lists are taken by mistake.n; fclosefp1; fclosefp2; return 0 测试数据:第 2_2 题:统计一个英文文本文件中 26 个英文字母显现次数并按英文字母序输出统计结果,查找并替换此英文文本文件中
11、某字符串;算法描述 : 建立文本文件并输入数据(二维字符数组的形式),储备于文件,打开文件读出字符!用 个英文字符与从文件读出的文件比较,建立累加器对每个字母显现的次数赋值!源程序:no2_2.c #include #include #include #define N 2 int main ; FILE *fp1,*fp2 int i,j,k,cout ; char strN80,ch,c ; printfPlease input file_num1:n; fp1=fopennum1,w;/建立文件并写入数据 fori=0 ; iN ; i+ getsstri ; fputsstri,fp1
12、 ; fputsn,fp1 ; printfn ; /打开文件并读出数据; fp2=fopennum1,r fori=0 ; iN ; i+ ; fgetsstri,80,fp2 ;名师归纳总结 - - - - - - -第 5 页,共 13 页精选学习资料 - - - - - - - - - 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
13、=0 ; jstrlenstri ; j+ ifstrij=m&strij+1=y strij+1=e ; printf%sn,stri; return 0; 测试数据:名师归纳总结 - - - - - - -第 6 页,共 13 页精选学习资料 - - - - - - - - - 第 3_1 题:将输入的 2 进制字符串转换为10 进制数输出;0 字符就是他们的十进制数值,在乘以2算法描述:输入二进制的字符串,每个字符减去的 n-1 次方,再加和!源程序:no3_1.c #include #include/ 为 strlen 函数供应原型 #include/ 为 pow 函数供应原型 int
14、 main char str10; int i,sum=0; printfPlease input binary number:n; getsstr; fori=0;istrlenstr;i+ sum+=stri-0*pow2,i;/ 运算每个位上的字符再加和 printfThe decimal number is:n ; printf%dn,sum;/ 输出所对应的十进制数 return 0; 测试数据:第 3_2 题:设计一个复数类型,输入实部和虚部生成一个复数,可进行两个复数求和、两个复数求 差、两个复数求积运算;算法描述:复数分为实部和虚部,因此一个复数的输入是要分两部分的,输出也是,
15、输出时在虚部后 加 i. 源程序:no3_2.c 名师归纳总结 - - - - - - -第 7 页,共 13 页精选学习资料 - - - - - - - - - #include int main int a,b,c,d; 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
16、:n;/ 挑选模式 getchar; whilech=getchar.=q/ 循环 whilegetchar.=n; switchch case1: printf%d+%din,a+c,b+d; break; case2: ifb-d=0 printf%d+%din,a-c,b-d; else printf%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 题:名师归纳总结 - - - - - - -第 8 页,共 13 页精选学习资料
17、- - - - - - - - - 用一个整型数组表示 10 进制大整数,数组的每个元素储备大整数的一位数字,将这个大整 数转换为 2 进制数输出;算法描述:存入大整数时,将数值的各个位上的数分别存到数组中;由于整数数值大,肯定留意了溢 出,在运算时,再用数组下标与数值各个位上的关系,整合再输出所对应的二进制数!源程序:No3_3.c #include #include #define N 20 int main void to_base_nlong long n, unsigned int base ; int aN,i=0,j,k,m; char ch; long long n=0; pr
18、intf 请输入数字( #终止) :n; printfn whilescanf%d,&ai=1 i+; j=i-1; i=0 ; k- n+=ai*pow10,k; printfn转换过后的等值二进制数:n ; printfn; to_base_nn,2; printfn; return 0; void to_base_nlong long n, unsigned int base/ 进制转换超级函数 int r; r = n % base; if n = base 名师归纳总结 to_base_nn / base, base;第 9 页,共 13 页- - - - - - -精选学习资料 -
19、 - - - - - - - - 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 #include int main int n,sum,a10; int i,cout=0; pri
20、ntf 请输入数字 N: ; scanf%d,&n; printfn 数据链 :n; whilen.=1 printf%d-,n; sum=0; i=0; whilen0/ 对每次的各位数字平方和再拆 ai=n%10; ifa0=1 cout+;/ 统计末尾数字为1 的计数器 sum+=ai*ai; n=n/10 i+; 名师归纳总结 - - - - - - -第 10 页,共 13 页精选学习资料 - - - - - - - - - n=sum; printf%dn,1;1 的数字个数 :n; printfn数据链末尾数字为 printf%dn,cout; return 0; 测试数据:第
21、5_1 题:程序自动生成一个位于 99 内的随机数,要求用户猜这个数;用户输入一个数后,程序有三种应答: too big,too small,you win ;算法描述:播下产生随机数的种子,随时间不同每次生成的随机数不同,用户依据提示进行猜数游戏;源程序:no5_1.c #include #include/ 为 rand 函数供应原型#include/ 为种子供应原型int main int n,m; printfReady. Lets go.nInput the correct number you thought:n; scanf%d,&n; srandtimeNULL; / 种子 m=
22、rand%100; whilen.=m/ 猜数进行时的提示 ifnm printfToo big. Come on,dot give up.n; else printfToo 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;第 11 页,共 13 页 return 0;- - - - - - -精选学习资料 - - - - - - - - - 测试数据:第 5_2 题:产生一组随机数,要求每个数字不能重复;例如:1,20
23、,3,17, 80,4, 35,88 符合要求, 3 ,20,1,17,80, 3,35, 88 不符合要求算法描述:Rand 函数一次只能产生一个随机数,于是使用循环结构让其多产生几个随机数,为了对随机数是否重复进行判定,将产生的随机数存放在数组中;源程序:no5_2.c #include #include #include #define N 10 int main int aN,n,i,j,k; int flag=1; n=N; srandtimeNULL; whileflag fori=0; in ; i+/ 多次产生随机数并存到数组; ai=rand%100 fori=0; in ; i+ forj=0; jn ; j+ 产生 名师归纳总结 - - - - - - -第 12 页,共 13 页精选学习资料 - - - - - - - - - if.flag flag=1; else flag=0;产生的不重复的随机数:n ; printf printfn; fori=0,k=1; in ; i+,k+ printf%-4d,ai; ifk%10=0 printfn; return 0; 测试数据:名师归纳总结 - - - - - - -第 13 页,共 13 页
限制150内