C语言课程设计报告--文件存取练习

C语言课程设计报告--文件存取练习本文简介:课程设计报告学院、系:专业名称:课程设计科目C语言程序课程设计所在班级:学生学号:学生姓名:指导教师:完成时间:题目文件存取练习一、设计任务与目标设计任务及类似已有的问题和功能:对文件中的数据读取及存放的熟悉,应用于各行各业,如银行对用户的资金数据存放与读取的业务就应用到该功能。目标:我进行本设计需
C语言课程设计报告--文件存取练习本文内容:
课
程
设
计
报
告
学院、系:
专业名称:
课程设计科目
C语言程序课程设计
所在班级:
学生学号:
学生姓名:
指导教师:
完成时间:
题目
文件存取练习
一、设计任务与目标
设计任务及类似已有的问题和功能:对文件中的数据读取及存放的熟悉,应用于各行各业,如银行对用户的资金数据存放与读取的业务就应用到该功能。
目标:我进行本设计需达到的目标是能熟练的运用C语言对各种数据进行存贮和读取使用,数据的对比,随机数的生成和运用,数据的排序
2、
方案设计与论证
使用函数rand()随机生成1000个数,利用fopen语句中”w”指令将其写入指定文件,而下一个函数input则利用fopen语句中”r”指令,利用指针指向指定文件,读入到a数组,用while语句统计数组a中0-9的个数,并存入b[0]-b[9]数组中,判断素数如果n不能被所有小于等于它的平方根的整数整除,则n为素数,(论证:假如某个数n不是素数,则一定可以分解成x*y形式。由此可得,n不是素数,则一定可以被某个小于n的数整除。而对于n来说,最小公因数最大只能为n的平方根,因为假如存在一个大于n平方根的公因数x,则一定存在另一个公因数y=n/x,y=0
d[k]max
max=dif
dif
#include
#include
#include
//(1)
int
Rand1000(int
d[],int
n)//
随机生成n个随机数序列,n=999
{
int
i,j;
FILEfp;
srand((unsigned)time(NULL));
//以时间作种子
for(i=0;isqrt(k)+1)
return
i;
//p[i]是最大素数
}
return
0;
//不包含素数
}
sort(int
d[],int
total)//为数据排序
{
int
i,k,temp;
printf(“\n__________开始排序__________\n“);
for(i=1;i=0;k--)
{
if(d[k]max)
max=dif;
if(dif min=dif; } for(i=0;i { if(max==fabs(p[i]-p[i+1])) printf(“Max dif: d[%d]-d[%d]=%d\n“,i,i+1,(int)fabs(p[i]-p[i+1])); if(min==fabs(p[i]-p[i+1])) printf(“Min dif: d[%d]-d[%d]=%d\n“,i,i+1,(int)fabs(p[i]-p[i+1])); } } /*字符数据转换*/ void Myinput(charfn,intp) { FILEfp; char a[10]; int k,temp,i=0; fp=fopen(fn,“r“); printf(“\n__________开始转换字符__________\n“); while(!feof(fp)) { k=0; temp=fgetc(fp); //ASCII[32:空格 13:回车 10:换行] while( temp==32 ||temp==13 || temp==10) temp=fgetc(fp); while(temp!=32 k++; temp=fgetc(fp); } a[k]= \0 ; p[i]=atoi(a); i++; } printf(“\n总数目为: %d\n“,i); fclose(fp); for(k=0;k printf(“%d “,p[k]); printf(“\n__________转换完毕__________\n“); } int main() { int data[10000],n=999,total_records,b[10],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]:%d\n\n“,max_prime,data[max_prime]); else printf(“\n__________指定数据中不包含素数__________\n\n“); printf(“相邻两数之差最大和之差最小的两个数\n“); maxandmin(data,total_records);//因为随机数是以时间作种子,最小的差值只能为1 Myinput(filename,data); system(“pause“); } 5、 程序运行结果测试与分析 6、 结论与心得 1. 学会了如何使用fopen。 2. 在怎么使用fopen语句时,因为没有学过fopen、fgetc、fclose的语句,所以需要慢慢自学重新看会第四版的C语言教学。 3. 对指针和数组的应用还是不太熟练,经常将指针变量弄错,对于将数据放入数组的操作还是不太熟练。 4. 调试过程中出现一些逻辑和语法错误,但是语法错误容易纠正,而逻辑错误则比较难纠正。有时会漏掉“,”,“;”,“}”等符号。 7、 参考资料 1. 谭浩强,C程序设计(第三版),第13章; 2. 谭浩强,C程序设计(第四版),第10章; 3. 素数用sqrt判读; 4. Fabs计算绝对值
