《C语言程序设计说明书与实验报告.pdf》由会员分享,可在线阅读,更多相关《C语言程序设计说明书与实验报告.pdf(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 C 语 言 程 序 设 计实验报告 学院:资源加工与生物工程 专业:无机非金属材料工程 班级:0501 姓名:金光龙 学号:0302050107 指导老师:金胜明 制作日期:05 年 7 月 9 日 C 语言程序设计说明书 目录 一 程序设计目的及任务;二 程序设计的内容;三 源程序;四 程序说明;五 实践心得;一 程序设计目的及任务 1、学会数据文件的建立 在实验室试验和现场生产过程中,经常要存储、处理许多数据(试验数据和生产数据),在没有在线检测的条件下,这些数据都要进行人工的输入,建立数据文件。以前,我们都是编写建立数据文件的程序来建立数据文件,当某个数据输入错误时就要重新输入或编写数
2、据文件修改程序,比较麻烦。直接在编辑状态下(TC,TP等)编写数据文件简单、直观、实用。2、理解并且学会运用文件操作函数 3、学会用线性回归法建立数学模型 二 程序设计的内容 一、数据文件 1文件操作函数(1)文件的打开 fopen#include FILE*fopen(char*filename,char*type);filename文件名,字符串变量;type文件打开的方式(r,w,a)函数功能:打开由文件 filename 指定的文件,并把一个 stream 与它联系起来。返回一个指针,该指针用来识别随后操作的文件 stream。若成功地完成打开,则返回最近打开的文件 stream,若出
3、现错误,则返回 NULL。(2)文件的关闭 fclose#include int fclose(FILE*stream);filename文件名,字符串变量;type文件打开的方式(r,w,a)函数功能:关闭指定的流式文件。(3)fscanf从流中执行格式化输入#include int fscanf(FILE*stream,char*format,argument,);函数功能:从指定的输入流中按规定的格式把数据读入由地址参数&arg1,&argn给定的单元中。(4)fprintf 发送格式化输出到流#include int fprintf(FILE*stream,char*format,ar
4、gument,);函数功能:按规定的格式把数据输出到指定的流式文件 stream 中。例:#include“stdio.h”main()FILE fp,*fopen();float d,date102;int i,j;fp=fopen(“试验数据.dat”,“r”);for(i=0;i10;i+)or(j=0;jn)nnxxxy112211101 inniiixxxy22110 mnnmmmxxxy22110 目标:求j的估计值bj。使预报误差)最小(110iinniixbxbby。用最小二乘法,使miiiyyQ12)(极小值 0)(211100 miinniibQxbxbby 0)(2111
5、0 ikmiinniibQxxbxbbyk mimiiinnmiiyxbxbmb111110 11111211110imimiiiinnmiimiixyxxbxbxb mimiikiikinnmiikimiikxyxxbxxbxb1111110 ikmiikikmiinknikmiikmiikkmiiiimiinnmiimiimiimiinminixydxxSxxSxSxydxxSxSxSydxSxSmS11111101111111211111101011010100,knknkknnnndbSbSbSdbSbSbSdbSbSbS11001111101000101000 由试验数据计算系数。第
6、二步 求方程的解 nbbbB10 nnxbxbby110 第三步 判断模型的显著性 统计量 剩剩回回fSfSF 21miiyyS回 nf回 21miiiyyS剩 nmf1剩 给出显著水平(0.1,0.05,0.01)nmnF1,判断 F F 显著 呈线性关系 F F 不显著 不呈线性关系 例:(m=6,n=1)X 132 147 163 179 198 222 Y 0 0.6 1.1 1.8 2.4 3.1 Y=-4.688566+0.035669X 利用得到的 Y 的一个表达式,可以算出相应的弹性模量。三 源程序 1、立存储数据的数据文件,并对它进行读、写操作:数据如上面的表格(1)#inc
7、lude main()char ch;FILE*fp;if(fp=fopen(F:TCshujiu.txt,r)=NULL)printf(file cannot be openedn);exit(1);while(ch=fgetc(fp)!=EOF)fputc(ch,stdout);fclose(fp);上机调试通过 运行结果如下:N0.Na2O K2O CaO SiO2 Model 1 7.26 8.16 12.68 72 7.2636 2 6.76 7.66 11.68 72 7.2582 3 6.26 7.16 10.68 72 7.2456 /*此 程 序 为 对F:TCshujiu.
8、txt 的 4 7.26 7.66 10.68 74 7.2001 文件进行输出*/5 6.76 7.16 12.68 74 7.3130 6 6.26 8.16 11.68 74 7.2560 7 7.26 7.16 11.68 76 7.2558 8 6.76 8.16 10.68 76 7.1988 9 6.26 7.66 12.68 76 7.3086(2)#include main()FILE*fp;float d,date96;int i,j;fp=fopen(F:TCshujiu.txt,r);printf(nPut the number:n);for(i=0;i9;i+)for
9、(j=0;j6;j+)fscanf(fp,%f,&d);dateij=d;printf(%6.4f,dateij);printf(the munber:n);for(i=0;i9;i+)printf(%8.2f,datei0);printf(%8.2f,datei1);printf(%8.2f,datei2);printf(%8.2f,datei3);printf(%4.2f,datei4);printf(%8.4f,datei5);printf(n);fclose(fp);上机调试通过 运行结果如下:1.00 7.26 8.16 12.6872.00 7.2636 2.00 6.76 7.6
10、6 11.6872.00 7.2582 3.00 6.26 7.16 10.6872.00 7.2456 4.00 7.26 7.66 10.6874.00 7.2001 5.00 6.76 7.16 12.6874.00 7.3130 6.00 6.26 8.16 11.6874.00 7.2560 7.00 7.26 7.16 11.6876.00 7.2558 8.00 6.76 8.16 10.6876.00 7.1988 9.00 6.26 7.66 12.6876.00 7.3086、/*此程序为先对 F:TCshujiu.txt 的文件进行打开,再导入到 一个二维数组里进行输出*
11、/2、璃弹性模量与成分之间的数学模型 源代码如下:#include stdio.h int i,j,k,n,m;char cele;void head()for(i=0;i8;i+)printf(%c,003);printf(请选择要进行的操作:);for(i=0;i8;i+)printf(%c,003);printf(n);for(i=0;i8;i+)printf(%c,020);printf(a.运行程序n);for(i=0;i8;i+)printf(%c,020);printf(b.退出程序n);cele=getchar();if(cele=a)printf(n);else exit(1
12、);main()for(i=0;i20;i+)printf(%c%c,001,002);printf(n);for(i=0;i8;i+)printf(%c%c,001,002);printf(欢迎使用本程序);for(i=0;i8;i+)printf(%c%c,001,002);printf(nnntt_本程序根据已知的数据构件一个数学模型_nt其作用是通过分析构成物质,用计算机模拟出材料的弹性模量。nnn);printf(tt 资源加工与生物工程学院nttttttt%c 无机0501班nn);printf(ttt 姓名:金光龙 n);printf(nttttttt 学号:0302050107
13、nn);head();printf(请输入行数m:t);scanf(%d,&m);printf(请输入列数n:);scanf(%d,&n);float snn+1,bn,xm+1n+1,y5;float r,t;char celect;FILE*fp1;fp1=fopen(date1.txt,r);/*date1.txt 数据为1 0 0 0 0 0 1 7.26 8.16 12.68 72 7.2636 1 6.76 7.66 11.68 72 7.2582 1 7.26 7.66 10.68 74 7.2001 1 6.76 7.16 12.68 74 7.3130 1 6.26 8.16
14、 11.68 74 7.2560 1 7.26 7.16 11.68 76 7.2558 1 6.76 8.16 10.68 76 7.1988 1 6.26 7.66 12.68 76 7.3086*/for(i=0;i10;i+)for(j=0;j6;j+)fscanf(fp1,%f,&t);xij=t;fclose(fp1);/*把文件中数赋给x106*/for(i=0;i5;i+)for(j=0;j10;j+)sij=0;for(k=1;k10;k+)sij+=xki*xkj;printf(nn增广阵为:n);for(i=0;i5;i+)for(j=0;j6;j+)printf(%8.
15、2f,sij);printf(n);/*得到S二维数组*/printf(nn);for(k=0;k4;k+)for(i=k+1;i5;i+)r=sik/skk;for(j=k;j6;j+)sij=sij-skj*r;for(i=0;i5;i+)for(j=0;j6;j+)if(fabs(sij)0.00001)sij=0;printf(对角阵为:n);for(i=0;i5;i+)for(j=0;j6;j+)printf(%8.2f,sij);printf(n);/*得到对角阵*/b4=s45/s44;b3=(s35-s34*b4)/s33;b2=(s25-s24*b4-s23*b3)/s22;
16、b1=(s15-s14*b4-s13*b3-s12*b2)/s11;b0=(s05-s04*b4-s03*b3-s02*b2-s01*b1)/s00;/*得到b5*/printf(nnttB阵为:n);for(i=0;i5;i+)printf(ttb%d=%fn,i,bi);FILE*fp2;fp2=fopen(fdate2.txt,w);/*文件date2.txt的等式为:y=7.2620+(-0.0303*x1)+(-0.0320*x2)+(0.04012*x3)+(-0.0003*x4)*/fprintf(fp2,y=%.4f+(%.4f*x1)+(%.4f*x2)+(%.5f*x3)+
17、(%.4f*x4),b0,b1,b2,b3,b4);fclose(fp2);printf(nntttt我们得到的数学模型为:nn);printf(ty=%f+(%f*x1)+(%f*x2)+(%f*x3)+(%f*x4)n,b0,b1,b2,b3,b4);for(i=0;i40;i+)printf(%c,005);printf(nn使用模型模拟得到的 弹性模量:);for(i=0;i5;i+)yi=b0+b1*xi1+b2*xi2+b3*xi3+b4*xi4;printf(n y%d=%f,i,yi);printf(n实际的 弹性模量:n);for(i=1;i=5;i+)printf(d%d=
18、%fn,i-1,xi5);上机调试通过 运行结果如下:_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 欢迎使用本程序 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 本程序根据已知的数据构件一个数学模型 _ 其作用是通过分析构成物质,用计算机模拟出材料的弹性模量。资源加工与生物工程学院 无机 0501 班 姓名:金光龙 学号:0302050107 _ _ _ _ _ _ _ _请选择要进行的操作:_
19、_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a.运行程序 _ _ _ _ _ _ _ _ b.退出程序 请输入行数 m:10 请输入列数 n:6 增广阵为:9.00 60.84 68.94 105.12 666.00 65.30 60.84 412.78 466.03 710.61 4502.16 441.38 68.94 466.03 529.58 805.22 5101.56 500.15 105.12 710.61 805.22 1233.80 7778.88 762.94 666.00 4502.16 5101.56 7778.88 49308.00 4832.17 对
20、角阵为:9.00 60.84 68.94 105.12 666.00 65.30 0.00 1.50 -0.00 -0.00 -0.00 -0.05 0.00 0.00 1.50 -0.00 0.00 -0.05 0.00 0.00 0.00 6.00 0.00 0.24 0.00 0.00 0.00 0.00 24.00 -0.01 B 阵为:b0=7.261955 b1=-0.030281 b2=-0.031982 b3=0.040121 b4=-0.000343 我们得到的数学模型为:y=7.261955+(-0.030281*x1)+(-0.031982*x2)+(0.040121*x
21、3)+(-0.000343*x4)_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 使用模型模拟得到的 弹性模量:y0=7.261955 y1=7.265197 y2=7.256207 y3=7.247218 y4=7.200260 实际的 弹性模量:0=7.263600 1=7.258200 2=7.245600 3=7.200100 4=7.313000 press any key to continue.五 实践心得 这学期虽然学习了 C 语言,对 C 语言有了一定的认识,但还只
22、知道在上面运行程序而不知其真正的用途。实习的几天转眼就过去了,通过这几天的学习才发现,原来这一学期对于 C 语言的了解是非常的肤浅,没有深入的学习。对于第一个任务还算比较容易引进对付,可后面的程序就越发的困难了,有时候是寸步难行,特别是线性回归很难理解,不过到最后还是搞完了。这次的学习,不仅学到了如何利用 TC,还锻炼了计算机能力,收获颇大。经过这近半个月的 C 语言实践学习,我感觉我有了比较大的收获,对 C 语言也有了更深的认识。知道 C 语言是一种概念简洁,数据库类型丰富,表达能力强,运算符多而灵活,控制流和数据结构新颖,程序结构性和可读性好,能有利于培养良好的编程风格,易于体现结构化程序
23、设计思想。它即具有高级语言程序设计的特点,又具有汇编语言的功能;既能有效地进行算法描述,又能对硬件直接进行操作;既适合于编写应用程序,又适合于开发系统软件,它是当今世界上应用广泛,最具有影响力的程序设计语言之一。C 语言本身还具有整个语言紧凑整齐,设计精巧,编辑方便,编译与目标代码运行效率高,操作简便,使用灵活等许多鲜明的特点。以前我在 TC 中只能一个一个的输入,即使两个完全一样的程序都只能再输一次,通过这次的学习,我懂得了用 Crtl+k+b,Crtl+k+k,Crtl+k+c,来定义一个块,再复制到光标处等等。这样省去了很多麻烦,提高了编程的效率。不仅如此,我还学到了如何制作简单界面、编写“建立、读入、保存、另存”等数据文件操作、“修改、插入、添加和删除函数”和“利用线性回归建立数学模型”等等。在一元线性回归数据处理时,这样可以少用一个循环,体现了编 程的简洁性。虽然我对 C 语言的了解还只是皮毛,但是通过这次的实习我已有了很大的收获。