程序设计基础课程设计.doc

上传人:豆**** 文档编号:28474802 上传时间:2022-07-28 格式:DOC 页数:60 大小:435.50KB
返回 下载 相关 举报
程序设计基础课程设计.doc_第1页
第1页 / 共60页
程序设计基础课程设计.doc_第2页
第2页 / 共60页
点击查看更多>>
资源描述

《程序设计基础课程设计.doc》由会员分享,可在线阅读,更多相关《程序设计基础课程设计.doc(60页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date程序设计基础课程设计程序设计基础课程设计实验报告程序设计基础课程设计实验报告班级:1403013姓名:熊清锋学号:14030130063所选题目:1_1, 1_3, 2_2, 3_1, 3_2 ,3_3, 3_4, 5_1, 5_2,第1_1题:比较两个文本文件并打印出它们第一个不相同的行(文件每行字符数不多于80)。算法描述:定义两个不同的指针,建立两个不同的文本文

2、件并存入字符;打开文本文件并一行一行的比较,定义一个计数器,若发现了不同行,立即跳出循环,分别打印两个不同文件中计数器所指的行;源程序:no1_1.c#include#include#include#define N 5/文件中字符的行数int main() FILE *fp1,*fp2;/文件指针 char str1N80,str2N80; char AN80,BN80; int i,k,flag=0; printf(Please enter the first text A:n); if(fp1=fopen(num1.text,w)=NULL)/建立文本文件 printf(cannot o

3、pen the file!); exit(0); for(i=0; iN; i+)/输入字符并写入文件 gets(str1i); fputs(str1i,fp1); fputs(n,fp1); printf(n); printf(Please enter the second text B:n); if(fp2=fopen(num2.text,w)=0)/ printf(cannot open the file!n); exit(0); for(i=0; iN; i+) gets(str2i); fputs(str2i,fp2); fputs(n,fp2); fclose(fp1); fclo

4、se(fp2); fp1=fopen(num1.text,r);/打开文件 fp2=fopen(num2.text,r); for(i=0; iN; i+)/对两个文件中的字符进行行比较 fgets(str1i,80,fp1); fgets(str2i,80,fp2); if(strcmp(str1i,str2i)!=0) k=i; flag=1; break; if(flag)/如果存在不同行 printf(nThe first different row between A and B:n);/分别输出不同行 printf(A: %sn,str1k); printf(B: %sn,str2

5、k); else printf(The two text have the same contents!n); fclose(fp1);/关闭文件 fclose(fp2); return 0;测试数据:第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 1struct Student/定义前两个文件内容的结构体,结构体元素是姓名和分数 char name10; double score;struct Student1/定义第三个文件内容的结构体,元素是姓名和分数数组(含三个元素) char name10; double score3;int main() FILE *fp1,*fp2,*fp3

7、; struct Student stu2N;/定义二维结构体数组 struct Student1 stu1N; int i,j,k=0; int flag=0; /输入 printf(Please input db1.txt:n); fp1=fopen(db1.txt,w); for(i=0; iN; i+) scanf(%s%lf,stu0i.name,&stu0i.score); fwrite(&stu0i,sizeof(struct Student),1,fp1);/读取结构体中的一元素存入文件 printf(nPlease input db2.txt:n); fp2=fopen(db

8、2,w); for(i=0; iN; i+) scanf(%s%lf,stu1i.name,&stu1i.score); fwrite(&stu1i,sizeof(struct Student),1,fp2); fp1=fopen(db1.txt,r);/打开文件,只写 fp2=fopen(db2,txt,r); for(i=0; iN; i+) fread(&stu0i,sizeof(struct Student),1,fp1); for(j=0; jN; j+) fread(&stu1j,sizeof(struct Student),1,fp2); if(strcmp(stu0i.name

9、,stu1j.name)=0) flag=1; strcpy(stu1k.name,stu1i.name); stu1k.score0=stu0i.score; stu1k.score1=stu1j.score; stu1k.score2=(stu1k.score0+stu1k.score1)/2; k+; printf(n); /输出 if(flag) fp3=fopen(db3.txt,w); printf(Names Maths English Averagen); for(i=0; ik; i+) fwrite(&stu1i,sizeof(struct Student1),1,fp3)

10、; printf(%s ,stu1i.name); for(j=0; j3; j+) printf(%10.2f,stu1i.scorej); printf(n); fclose(fp3); else printf(Maybe the lists are taken by mistake!n); fclose(fp1); fclose(fp2); return 0;测试数据:第2_2题:统计一个英文文本文件中26个英文字母出现次数并按英文字母序输出统计结果,查找并替换此英文文本文件中某字符串。算法描述:建立文本文件并输入数据(二维字符数组的形式),存储于文件,打开文件读出字符!用个英文字符与从

11、文件读出的文件比较,建立累加器对每个字母出现的次数赋值!源程序:no2_2.c #include#include#include#define N 2int main() FILE *fp1,*fp2; int i,j,k,cout; char strN80,ch,c; printf(Please input file_num1:n); fp1=fopen(num1,w);/建立文件并写入数据 for(i=0; iN; i+) gets(stri); fputs(stri,fp1); fputs(n,fp1); printf(n); /打开文件并读出数据 fp2=fopen(num1,r);

12、for(i=0; iN; i+); fgets(stri,80,fp2); printf(The showing times of letters:n); for(ch=a,k=1; ch=z; ch+) cout=0; for(i=0; iN; i+) for(j=0; jmy printf(nThe adverted article:n); for(i=0; iN; i+) for(j=0; jstrlen(stri); j+) if(strij=m&strij+1=y) strij+1=e; printf(%sn,stri); return 0;测试数据:第3_1题:将输入的2进制字符串

13、转换为10进制数输出。算法描述:输入二进制的字符串,每个字符减去0字符就是他们的十进制数值,在乘以2的n-1次方,再加和!源程序:no3_1.c#include#include/为strlen函数提供原型#include/为pow函数提供原型int main() char str10; int i,sum=0; printf(Please input binary number:n); gets(str); for(i=0;istrlen(str);i+) sum+=(stri-0)*pow(2,i);/计算每个位上的字符再加和 printf(The decimal number is:n )

14、; printf(%dn,sum);/输出所对应的十进制数 return 0;测试数据:第3_2题:设计一个复数类型,输入实部和虚部生成一个复数,可进行两个复数求和、两个复数求差、两个复数求积运算。算法描述:复数分为实部和虚部,因此一个复数的输入是要分两部分的,输出也是,输出时在虚部后加i.源程序:no3_2.c#includeint main() int a,b,c,d; char ch; printf(Please enter two complex numbers:n); scanf(%d%d%d%d,&a,&b,&c,&d); printf(n1)calculate the sumn2

15、)calculate the diffn3)calculate the productn); printf(Please choose 1,2 or 3:(q to quit):n);/选择模式 getchar(); while(ch=getchar()!=q)/循环 while(getchar()!=n); switch(ch) case1: printf(%d+%din,a+c,b+d); break; case2: if(b-d=0) printf(%d+%din,a-c,b-d); else printf(%d%din,a-c,b-d); break; case3: printf(%d

16、+%din,a*c-b*d,a*d+b*c); break; default: break; return 0;测试数据:第3_3题:用一个整型数组表示10进制大整数,数组的每个元素存储大整数的一位数字,将这个大整数转换为2进制数输出。算法描述:存入大整数时,将数值的各个位上的数分离存到数组中。因为整数数值大,一定注意了溢出,在计算时,再用数组下标与数值各个位上的关系,整合再输出所对应的二进制数!源程序:No3_3.c#include#include#define N 20int main() void to_base_n(long long n, unsigned int base) ; i

17、nt aN,i=0,j,k,m; char ch; long long n=0; printf(请输入数字(#结束):n); printf(n); while(scanf(%d,&ai)=1) i+; j=i-1; for(i=0; i=0; k-) n+=ai*pow(10,k); printf(n转换过后的等值二进制数:n); printf(n); to_base_n(n,2); printf(n); return 0;void to_base_n(long long n, unsigned int base)/进制转换超级函数 int r; r = n % base; if (n = b

18、ase) to_base_n(n / base, base); putchar(0 + 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#includeint main() int n,sum,a10; int i,cout=0; pri

19、ntf(请输入数字 N: ); scanf(%d,&n); printf(n数据链:n); while(n!=1) printf(%d-,n); sum=0; i=0; while(n0)/对每次的各位数字平方和再拆 ai=n%10; if(a0=1) cout+;/统计末尾数字为1的计数器 sum+=ai*ai; n=n/10; i+; n=sum; printf(%dn,1); printf(n数据链末尾数字为1的数字个数:n); printf(%dn,cout); return 0;测试数据:第5_1题:程序自动生成一个位于99内的随机数,要求用户猜这个数。用户输入一个数后,程序有三种应

20、答:too big,too small,you win。算法描述:播下产生随机数的种子,随时间不同每次生成的随机数不同,用户根据提示进行猜数游戏。源程序:no5_1.c#include#include/为rand 函数提供原型#include/为种子提供原型int main() int n,m; printf(Ready? Lets go!nInput the correct number you thought:n); scanf(%d,&n); srand(time(NULL);/种子 m=rand()%100; while(n!=m)/猜数进行时的提示 if(nm) printf(Too

21、 big! Come on,dot give up!n); else printf(Too small! Why are you so silly!n); printf(Try 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符合要求, 3,20,1,17,80,3,35,88不符合要求算法描述:Rand 函数一次只能产生一个随机数,于是使用循环结构让其多产生几个随机数,为了对随机

22、数是否重复进行判断,将产生的随机数存放在数组中。源程序:no5_2.c#include#include#include#define N 10int main() int aN,n,i,j,k; int flag=1; n=N; srand(time(NULL); while(flag) for(i=0; in; i+)/多次产生随机数并存到数组 ai=rand()%100; for(i=0; in; i+) for(j=0; jn; j+) if(ai=aj&i!=j)/判断的数组中是否有重复数字,若有,就重新产生 flag=0; break; if(!flag) flag=1; else flag=0; printf(产生的不重复的随机数:n); printf(n); for(i=0,k=1; in; i+,k+) printf(%-4d,ai); if(k%10=0) printf(n); return 0;测试数据:-

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

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com