C语言课程设计报告--文件存取练习.doc_第1页
C语言课程设计报告--文件存取练习.doc_第2页
C语言课程设计报告--文件存取练习.doc_第3页
C语言课程设计报告--文件存取练习.doc_第4页
C语言课程设计报告--文件存取练习.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课 程 设 计 报 告学院、系:专业名称:课程设计科目C语言程序课程设计所在班级:学生学号:学生姓名:指导教师:完成时间:题目 文件存取练习一、设计任务与目标设计任务及类似已有的问题和功能:对文件中的数据读取及存放的熟悉,应用于各行各业,如银行对用户的资金数据存放与读取的业务就应用到该功能。目标:我进行本设计需达到的目标是能熟练的运用C语言对各种数据进行存贮和读取使用,数据的对比,随机数的生成和运用,数据的排序2、 方案设计与论证 使用函数rand()随机生成1000个数,利用fopen语句中”w”指令将其写入指定文件,而下一个函数input则利用fopen语句中”r”指令,利用指针指向指定文件,读入到a数组,用while语句统计数组a中0-9的个数,并存入b0-b9数组中,判断素数如果n不能被所有小于等于它的平方根的整数整除,则n为素数,(论证:假如某个数n不是素数,则一定可以分解成x*y形式。由此可得,n不是素数,则一定可以被某个小于n的数整除。而对于n来说,最小公因数最大只能为n的平方根,因为假如存在一个大于n平方根的公因数x,则一定存在另一个公因数y=n/x,yx。从而得上述定理),而最大素数的开方+1后必定比j=2的循环变量小,从而得出最大素数,接着利用冒泡排序法,建立一个“擂台”,用“擂台”上的数的前一个数与之比较,小的那个数放到最后,从而使数据按降序排列,利用绝对值,使相邻两数不断循环相减,得出最大差值和最小差值,根据ASCII值且用fgetc函数读入指定文件的字符,并使其输出。3、 程序框图或流程图,程序清单与调用关系int i,j;Indi=randjii+ini+fclose(fp)j+Rand1000(int d,int n)FILE*fp;Int i,k=0;如果filename文件为空,则输出errorreturn 0;当(!feof(fp)时,读入文件数据并放入数组ak当中;输出读入数据总数;Return k-1;NYNYNYint i,k; 准备数组bi,k=ai,while(k!=0)时,bk%10+且k=k/10digitcount(int a,int n,int b10)input(char filename30,int a)输出数组bi输出数据输出文字在文件输出中数据int maxprime(int *p,int n)int i,j,k;in让整数n被从2到n的平方根之间的数一一整除若n能被其中某一个数整除,则不是素数,跳出循环返回0最大素数的开方+1后必定比j=2的循环变量小返回最大素数返回零sort(int d,int total)int I,k,temp;i=0dktempdk+1=dk;dk+1=tempbreakk-k0d0=tempi+i=0itotali+输出数据输出文字NYNYNYNYNYmaxandmin(int *p,int n)int max=p0-p1,min=p0-p1,dif; int i,k;imaxmax=difdifminMin=difi+i=0in-1max=fabs(pi-pi+1)min=fabs(pi-pi+1)输出相邻两数最大差值数出相邻两数最小差值i+结束NYNYNYNYNYNYMyinput(char *fn,int *p)FILE *fp;char a10;int k,temp,i=0;fp=fopen(fn,r);!feof(fp)k=0;temp=fgetc(fp);temp=32 |temp=13| temp=10temp=fgetc(fp);temp!=32 & !feof(fp)ak=temp;k+;temp=fgetc(fp);ak=0;pi=atoi(a);i+;输出总数目k=0;ki-1输出独立转换字符k+输出文字开始Rand1000()input()Digitcount()maxprime()sort()maxandminMyinput结束四、全部源程序清单#include#include#include#include/(1)int Rand1000(int d,int n)/ 随机生成n个随机数序列,n=999 int i,j; FILE *fp;srand(unsigned)time(NULL); /以时间作种子for(i=0;in;i+) di=rand(); for(j=0;ji;j+) /*if(dj=di) j=0; di=rand(); */去掉重复数据 printf(%d ,di); printf(n_生成完毕_n);fp=fopen(file1.dat,w);/打开文本,将数据写入到文本“file1.datfor(i=0;in;i+)fprintf(fp,%d ,di);fclose(fp);/关闭文本 /(2)读数据文件int input(char filename30,int a) FILE *fp; int i,k=0; printf(n_读取上述数据且放入数组a中_n); if(fp=fopen(filename,r)=NULL) printf(Read File Error); return 0; while(!feof(fp) fscanf(fp,%d,&ak); k=k+1; printf(n 读取数据结束总计=%dn,k); return k-1;/参数/(3)digitcount(int a,int n,int b10) /统计数字个数int i,k;printf(n_开始统计每位数字出现的次数,0-9_n);for(i=0;i10;i+) bi=0;for(i=0;in;i+)k=ai;while(k!=0)bk%10+;k=k/10;for(i=0;i10;i+) printf(%d ,bi);printf(n_结束统计每位数字出现的次数_n) ;/(4)int maxprime(int *p,int n)/确定最大的素数int i,k,j;for(i=0;in;i+) k=pi; for(j=2;jsqrt(k)+1) return i; /pi是最大素数 return 0; /不包含素数sort(int d,int total)/为数据排序int i,k,temp; printf(n_开始排序_n); for(i=1;i=0;k-) if(dktemp) dk+1=dk; else dk+1=temp; break; if(k0) d0=temp; for(i=0;itotal;i+) printf(%d ,di); printf(n_排序完毕_n); /两数之差最大、最小maxandmin(int *p,int n)/maxandmin=最大和最小int max=p0-p1,min=p0-p1,dif;/dif=differenceint i,k;for(i=0;imax) max=dif; if(difmin) min=dif;for(i=0;in-1;i+)if(max=fabs(pi-pi+1) printf(Max dif: d%d-d%d=%dn,i,i+1,(int)fabs(pi-pi+1); if(min=fabs(pi-pi+1) printf(Min dif: d%d-d%d=%dn,i,i+1,(int)fabs(pi-pi+1);/*字符数据转换*/ void Myinput(char *fn,int *p) FILE *fp;char a10;int k,temp,i=0;fp=fopen(fn,r);printf(n_开始转换字符_n);while(!feof(fp)k=0;temp=fgetc(fp); /ASCII32:空格 13:回车 10:换行while( temp=32 |temp=13 | temp=10) temp=fgetc(fp);while(temp!=32 & !feof(fp) /32是空格的ASCIIak=temp; k+; temp=fgetc(fp);ak=0;pi=atoi(a);i+;printf(n总数目为: %dn,i); fclose(fp); for(k=0;ki-1;k+) printf(%d ,pk); printf(n_转换完毕_n);int main()int data10000,n=999,total_records,b10,max_prime;char filename=file1.dat; Rand1000(data,n); total_records=input(filename,data); digitcount(data,total_records,b);/统计每位数字出现的次数,0至9 sort(data,total_records); max_prime=maxprime(data,total_records); if(max_prime!=0) printf(n 最大素数=data%d:%dnn,max_prime,datamax_prime); else printf(n_指定数据中不包含素数_nn); printf(相邻两数之差最大和之差最小的两个数n); maxandmin(data,total_records);/因为随机数是以时间作种子,最小的差值只能为1 Myinput(filename,data); system(pause);5、 程序运行结果测试与分析6、 结论与心得1. 学会了如何使用fopen。2. 在怎么使用fopen语句时,因为没有学过fopen、fgetc、fclose的语句,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论