C语言程序设计调研报告doc14共17页.docx
《C语言程序设计调研报告doc14共17页.docx》由会员分享,可在线阅读,更多相关《C语言程序设计调研报告doc14共17页.docx(12页珍藏版)》请在冰豆网上搜索。
C语言程序设计调研报告doc14共17页
C语言程序设计实验报告
学院:
资源加工与生物工程
专业:
无机非金属材料工程
班级:
0501
姓名:
金光龙
学号:
0302050107
指导老师:
金胜明
制作日期:
05年7月9日
C语言程序设计说明书
一程序设计目的及任务;
二程序设计的内容;
三源程序;
四程序说明;
五实践心得;
一程序设计目的及任务
1、学会数据文件的建立
在实验室试验和现场生产过程中,经常要存储、处理许多数据(试验数据和生产数据),在没有在线检测的条件下,这些数据都要进行人工的输入,建立数据文件。
以前,我们都是编写建立数据文件的程序来建立数据文件,当某个数据输入错误时就要重新输入或编写数据文件修改程序,比较麻烦。
直接在编辑状态下(TC,TP等)编写数据文件简单、直观、实用。
2、理解并且学会运用文件操作函数
3、学会用线性回归法建立数学模型
二程序设计的内容
一、数据文件
1.文件操作函数
(1)文件的打开fopen
#include
FILE*fopen(char*filename,char*type);
filename—文件名,字符串变量;type—文件打开的方式(r,w,a)
函数功能:
打开由文件filename指定的文件,并把一个stream与它联系起来。
返回一个指针,该指针用来识别随后操作的文件stream。
若成功地完成打开,则返回最近打开的文件stream,若出现错误,则返回NULL。
(2)文件的关闭fclose
#include
intfclose(FILE*stream);
filename—文件名,字符串变量;type—文件打开的方式(r,w,a)
函数功能:
关闭指定的流式文件。
(3)fscanf—从流中执行格式化输入
#include
intfscanf(FILE*stream,char*format[,argument,…]);
函数功能:
从指定的输入流中按规定的格式把数据读入由地址参数&arg1,…&argn给定的单元中。
(4)fprintf—发送格式化输出到流
#include
intfprintf(FILE*stream,char*format[,argument,…]);
函数功能:
按规定的格式把数据输出到指定的流式文件stream中。
例:
#include“stdio.h”
main()
FILEfp,*fopen();
floatd,date[10][2];
inti,j;
fp=fopen(“试验数据.dat”,“r”);
for(i=0;i<10;i++)
or(j=0;j<2;j++)
fscanf(fp,“%f”,&d);
date[i][j]=d;
fclose(fp);
例如,建立存储下列数据的数据文件,并对它进行读、写操作。
序号
Na2O
K2O
CaO
SiO2
弹性模量
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
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
二、线性回归法建立数学模型
1建立数学模型的方法
(1)机理分析法
(2)数据分析法
回归分析法---静态数模
时间序列分析法—动态数模(系统辨识)
(3)综合分析法
2建立线性回归模型的步骤
(1)第一步
一组试验数据(m组,m>n)
目标:
求βj的估计值bj。
使。
用最小二乘法,使
由试验数据计算系数。
第二步求方程的解
第三步判断模型的显著性
1统计量
2给出显著水平
α(0.1,0.05,0.01)
3判断
F>Fα显著呈线性关系
F例:
(m=6,n=1)
X132147163179198222
Y00.61.11.82.43.1
Y=-4.688566+0.035669X
利用得到的Y的一个表达式,可以算出相应的弹性模量。
三源程序
1、立存储数据的数据文件,并对它进行读、写操作:
数据如上面的表格
(1)
#include
main()
charch;
FILE*fp;
if((fp=fopen("F:
\\TC\\shujiu.txt","r"))==NULL)
printf("filecannotbeopened\n");
exit
(1);
while((ch=fgetc(fp))!
=EOF)
fputc(ch,stdout);
fclose(fp);
上机调试通过
运行结果如下:
N0.Na2OK2OCaOSiO2Model
17.268.1612.68727.2636
26.767.6611.68727.2582
36.267.1610.68727.2456/*此程序为对F:
\\TC\\shujiu.txt的
47.267.6610.68747.2001文件进行输出*/
56.767.1612.68747.3130
66.268.1611.68747.2560
77.267.1611.68767.2558
86.768.1610.68767.1988
96.267.6612.68767.3086
(2)
#include
main()
FILE*fp;
floatd,date[9][6];
inti,j;
fp=fopen("F:
\\TC\\shujiu.txt","r");
printf("\nPutthenumber:
\n");
for(i=0;i<9;i++)
for(j=0;j<6;j++)
{fscanf(fp,"%f",&d);
date[i][j]=d;
printf("%6.4f",date[i][j]);
printf("themunber:
\n");
for(i=0;i<9;i++)
{printf("%8.2f",date[i][0]);
printf("%8.2f",date[i][1]);
printf("%8.2f",date[i][2]);
printf("%8.2f",date[i][3]);
printf("%4.2f",date[i][4]);
printf("%8.4f",date[i][5]);
printf("\n");}
fclose(fp);
上机调试通过
运行结果如下:
1.007.268.1612.6872.007.2636
2.006.767.6611.6872.007.2582
3.006.267.1610.6872.007.2456
4.007.267.6610.6874.007.2001
5.006.767.1612.6874.007.3130
6.006.268.1611.6874.007.2560
7.007.267.1611.6876.007.2558
8.006.768.1610.6876.007.1988
9.006.267.6612.6876.007.3086、
/*此程序为先对F:
\\TC\\shujiu.txt的文件进行打开,再导入到
一个二维数组里进行输出*/
2、璃弹性模量与成分之间的数学模型
源代码如下:
#include"stdio.h"
inti,j,k,n,m;
charcele;
voidhead()
{for(i=0;i<8;i++)
printf("%c",003);
printf("请选择要进行的操作:
");
for(i=0;i<8;i++)
printf("%c",003);
printf("\n");
{for(i=0;i<8;i++)
printf("%c",020);
printf("a.运行程序\n");
for(i=0;i<8;i++)
printf("%c",020);
printf("b.退出程序\n");
cele=getchar();
if(cele=='a')printf("\n");
else
exit
(1);
main()
{for(i=0;i<20;i++)
printf("%c%c",001,002);
printf("\n");
for(i=0;i<8;i++)
printf("%c%c",001,002);
printf("欢迎使用本程序");
for(i=0;i<8;i++)
printf("%c%c",001,002);
printf("\n\n\n\t\t^_^本程序根据已知的数据构件一个数学模型^_^\n\t其作用是通过分析构成物质,用计算机模拟出材料的弹性模量。
\n\n\n");
printf("\t\t资源加工与生物工程学院\n\t\t\t\t\t\t\t%c无机0501班\n\n");
printf("\t\t\t姓名:
金光龙\n");
printf("\n\t\t\t\t\t\t\t学号:
0302050107\n\n");
head();
printf("请输入行数m:
\t");
scanf("%d",&m);
printf("请输入列数n:
");
scanf("%d",&n);
floats[n][n+1],b[n],x[m+1][n+1],y[5];
floatr,t;
charcelect;
FILE*fp1;
fp1=fopen("date1.txt","r");
/*date1.txt数据为100000
17.268.1612.68727.2636
16.767.6611.68727.2582
17.267.6610.68747.2001
16.767.1612.68747.3130
16.268.1611.68747.2560
17.267.1611.68767.2558
16.768.1610.68767.1988
16.267.6612.68767.3086*/
for(i=0;i<10;i++)
for(j=0;j<6;j++)
{fscanf(fp1,"%f",&t);
x[i][j]=t;}
fclose(fp1);
/*把文件中数赋给x[10][6]*/
for(i=0;i<5;i++)
for(j=0;j<10;j++)
{s[i][j]=0;
for(k=1;k<10;k++)
s[i][j]+=x[k][i