1、 课课 程程 设设 计计 报报 告告 学院、系: 专业名称: 课程设计科目 C 语言程序课程设计 所在班级: 学生学号: 学生姓名: 指导教师: 完成时间: 题目 文件存取练习 一、设计任务与目标 设计任务及类似已有的问题和功能:对文件中的数据读取及存放的熟悉,应 用于各行各业,如银行对用户的资金数据存放与读取的业务就应用到该功能。 目标: 我进行本设计需达到的目标是能熟练的运用 C 语言对各种数据进行存 贮和读取使用,数据的对比,随机数的生成和运用,数据的排序 二、方案设计与论证 使用函数 rand()随机生成 1000 个数,利用 fopen 语句中”w”指令将 其写入指定文件,而下一个函
2、数 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 的循环变量
3、小,从而得出最大素数,接着利用冒泡排序法,建立一 个“擂台” ,用“擂台”上的数的前一个数与之比较,小的那个数放到最后,从 而使数据按降序排列,利用绝对值,使相邻两数不断循环相减,得出最大差值和 最小差值,根据 ASCII 值且用 fgetc 函数读入指定文件的字符,并使其输出。 三、程序框图或流程图,程序清单与调用关系 int i,j; In di=rand ji i+ in i+ fclose(fp) j+ Rand1000(int d,int n) FILE*fp; Int i,k=0; 如果 filename 文 件为空,则 输出 error return 0; 当(!feof(fp)
4、时,读入文件数 据并放入数组 ak当中; 输出读入数据总 数; Return k-1; N Y N Y N Y int i,k; 准备数组 bi, k=ai,while(k!=0)时, bk%10+且 k=k/10 digitcount(int a,int n,int b10) input(char filename30,int 输出数组 bi 输出数据 输出文字 在文件输出 中数据 int maxprime(int *p,int n) int i,j,k; in 让整数n被从 2到 n的平 方根之间的数一一整除 若n能被其中某一个数整除, 则不是素数, 跳出循环返回 0 最大素数的开方+1后
5、 必定比 j=2 的循环变 量小 返回最大素数 返回零 sort(int d,int total) int I,k,temp; i=0 dktemp dk+1=dk; dk+1=temp break k- k0 d0=temp i+ i=0 itotal i+ 输出数据 输出文字 N Y N Y N Y N Y N Y maxandmin(int int max=p0-p1,min=p0- p1,dif; int i,k; imax max=dif difmin Min=dif i+ i=0 in-1 max=fabs(p i-pi+1) min=fabs(p i-pi+1) 输出相邻 两数最
6、大 差值 数出相邻 两数最小 差值 i+ 结束 N Y N Y N Y N Y N Y N Y Myinput(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=10 temp=fgetc(f p); temp!=32 k+;temp=fgetc(fp); ak=0;pi=atoi (a);i+; 输出总数目 k=0 ki-1 输出独立转 换字符 k+ 输出文字 开始 Rand1000() input() Digitcount() maxprime() sort() maxandmin Myinput 结束 四、全部源程序清单 #include #include #include #include /(1) int Ra