c实验报告答案

2024-08-28

c实验报告答案(通用10篇)

1.c实验报告答案 篇一

一、实验目的

1、掌握C语言中的变量、数组、函数、指针、结构体等主要知识点。

2、掌握C程序的结构化程序设计方法,能使用C语言开发简单的应用程序。

二、实验内容

编写一个学生信息排序程序。要求:

1、程序运行时可输入n个学生的信息和成绩(n预先定义)。

2、学生信息包括:学号、英文姓名、年龄;学生成绩包括:语文、数学、计算机。

3、给出一个排序选择列表,能够按照上述所列信息(学号、姓名、年龄、语文、数学、计算机)中的至少一个字段进行排序,并显示其结果。

1、使用函数方法定义各个模块。

三、步骤与过程

四、调试记录

2.c实验报告答案 篇二

C/C复合材料的历史较短,诞生于1958年,是在美国一次实验失误中意外产生的。前期发展缓慢,到20世纪60年代投入工程使用,再到20世纪七八十年代的应用和开发,目前已经进入C/C复合材料的新工艺开发和民用应用阶段。短短的几十年,C/C复合材料的发展突飞猛进。由于其具有质轻(约1.7 g/cm3)、高强、耐腐、耐磨、耐高温等优良性能,并且性能稳定,因而在航空航天、航海、汽车、IT等各大领域有着广泛应用[1,2],使其成为目前最受关注的一种新型材料。

现如今,学者们都采用实验方法来研究复合材料的断裂韧性[3]。在计算机模拟方面,多数学者采用有限元法(FEM)对复合材料性能和工程实况进行模拟研究[4]。有限元法在工程应用上用得较多,但在复合材料上很难考虑到界面性能及微裂纹对界面的影响。杨东民等[5]通过离散元法,用颗粒流(Particle flow code, PFC)软件对复合材料界面强度进行研究,用位移软化模型来表征纤维树脂复合材料的界面属性,对单向纤维增韧复合材料的拉伸断裂进行模拟,并对裂纹的走势进行分析,从而进一步阐述了复合材料的特性。基于DEM这些优势和特点,本研究采用离散元法,用PFC软件建立纤维增韧多层C/C复合材料离散元模型,每层纤维呈0°、90°交错排布;通过对DEM微观参数的设置和调试对C/C宏观性能进行校核,并对比单边切口梁实验DEM模拟及其实验,发现实验结果和现象都能够较好地吻合,从而验证了该模型的有效性,同时再现了单边切口梁实验中微裂纹的扩展过程。

1 离散元法简介

离散元法起源于1971年,由分子动力学发展而来,简称DEM(Discrete element method)。DEM首先由Cundall提出,用于研究岩石力学;1979年,Cundall和Strack又提出了适用于土力学的离散元法。DEM发展至今已经在陶瓷[6,7]、岩石[8,9]和混凝土[10,11]等脆性材料的大变形和断裂失效过程上成熟应用,并且在粉体压实与烧结[12,13]、爆炸与冲击[14,15]、两相流[16,17]等问题上也得到了广泛的应用。

在块体离散元法中,由一系列的刚性颗粒通过键相互连接起来的颗粒集合体可以模拟块体材料的力学属性。颗粒的形态有圆盘(2D)和球(3D)之分。连接键主要有两种形式:一种是接触键,只能传递力的信息;另一种是平行键,能同时传递力和力矩信息。学者通常形象地把连接键比喻成弹簧,键的断裂便形成了裂纹。在离散元中,颗粒在任意时步内的运动都满足牛顿第二定律,且任意相连接的两颗粒间的接触都符合力与位移法则[18]。

2 C/C层合板DEM结构模型的建立

PFC中的平行键连接模型适于模拟脆性块体材料,研究采用该连接模型对C纤维和基体进行建模,并对其基本的力学性能进行校准。为了简化模型,把C基体和C纤维的属性近似看成是一样的,并在界面引入位移软化接触模型来表征其界面属性,最后通过单轴压缩实验DEM模型对其弹性模量和压缩强度进行校准,结果如表1所示。从表1分析可知校准误差较小,可以用来表征C纤维和基体的基本属性。

按照C/C层合板的结构模型进行DEM三维(3D)建模,材料共6层,每层碳纤维按照0°、90°排列。层基体用黑色或灰色颗粒集合表示,纤维用灰色颗粒集合表示,界面处用黑色线段表示,如图1所示。然而其二维(2D)模型可能出现两种结构,分别如图2(a)和(b)所示,两种结构都能近似体现出C/C层合板的结构。

通过3D模型与2D模型的对比,从材料结构上讲,2D模型只是多层C/C的一种近似模型,没有3D模型逼真,但是2D模型所需颗粒数与3D模型相比则大大减少了,可以节约程序运行时间。经过综合考虑, 采用C/C层合板2D模型进行模拟研究,并选取较为简便的第二种结构进行模拟,以提高模拟效率。

3 C/C力学实验及DEM模拟

3.1 C/C力学实验

纤维增韧多层C/C复合材料板材由湘潭碳素高科有限公司提供,其纤维为C_t300,板材共6层,板材厚度为6~7 mm,每层的碳纤维以0°、90°排列,材料密度为1.34 g/cm3。通过线切割,按照国标从一整块C/C板材连续加工出3个单边切口梁试样,试样尺寸为35 mm×7 mm×3 mm(长×宽×厚),切口尺寸为2 mm×3.5 mm(宽×深)。在100 kN微机控制电子万能材料试验机上完成单边切口梁实验,其加载速度为v=5×10-5 m/s (3 mm/min),如图3(a)所示。把实验后失效C/C试样放在电镜(SEM)下观察,发现C/C试样的裂纹在切口处沿着界面呈S形扩展,如图3(b)所示。

3.2 C/C力学实验DEM模型

在PFC2D中,采用BPM模型(平行键连接模型,适于模拟脆性块体材料)建立相互连接的颗粒集合,通过改变颗粒颜色来区分基体和纤维(纤维为灰色,基体为浅黑色),并且在不同颜色颗粒接触间引入位移软化接触模型,最后得到离散元纤维增韧多层C/C复合材料结构模型(C/C复合板材一共有6层,每层的碳纤维以0°、90°交错排列)。为了得到C/C复合材料力学模型,需要建立实验模型(单边切口梁实验)对C/C复合材料进行力学性能校准。离散元模型的二维尺寸与实验试样一致,如图4(a)所示。建模所用颗粒数选在6000~10000之间[20],既可以使计算快捷,又减少了离散元尺寸效应造成的误差。通过反复设置和调试离散元模型的微观参数来校准C/C复合材料的力学性能,最后得到与C/C复合材料力学性能相符的离散元模型。

而在实验模拟中,黑色线段代表微裂纹,单边切口梁试样失效图中的微裂纹(黑色线段)显示不清楚,只在压头处有点黑色裂纹。为了让黑色的裂纹显示清楚,在PFC2D中另外做一些处理。把颗粒的颜色改为浅色(层基体为浅黑色时,灰色代表纤维),并且去除颗粒的黑色边框,可以清楚地看到裂纹在试样切口处沿着界面呈S形走向,如图4(b)所示,与单边切口梁实验失效图(图3)的裂纹现象吻合较好。

把得到的DEM模拟结果与实验数据进行对比,如表2所示。模拟得到的C/C多层复合板材的力学性能参数与实验数据比较吻合,误差都较小。由此可以表明:通过DEM建立的此模型能够较好地表征C/C复合板材的力学性能,模拟的现象和结果都能很好表征C/C层合板的属性。

4 结论

(1)采用BPM模型可以较好地模拟C基体和纤维的属性,并且DEM可以对结构更为复杂的复合材料进行模拟研究。

(2)通过单边切口梁实验DEM模拟与实验的对比,发现结果与现象吻合较好,验证了该DEM模型的有效性,断裂裂纹在试样切口处沿着界面呈S形状。

(3)随着DEM的发展,可以用它来研究复合材料的工艺加工过程和其使用过程中损伤等情况,并对其进行预测。

3.C语言实验报告 篇三

第1次实验: 时间 2010-9-15

项目名称:创建第一个C语言程序

仪器设备:电脑一台,操作系统WindowsXP,开发环境Visual C++ 6.0

实验程序:

1、单击“开始”“程序”“Microsoft Visual Studio 6.0”“Microsoft Visual C++ 6.0”,打开VC++。

2、在菜单中选择“文件”“新建”,在“工程”选项卡中选择“Win32 Console Application”,输入一个名称,点“确定”,新建一个新的工程。

3、再选择“文件”“新建”命令,在“文件”选项卡中选择“C++ Source File”,输入一个

名称,点“确定”,新建一个C++源文件。由于C++全面支持C,因此可以在此输入C语言的源代码,进行实验。

4、在代码框中输入如下代码:

#include

void main()

{

int a,b,sum;

a=123;b=456;

sum=a+b;

printf(“sum is %dn”, sum);

}

5、编译、连接、运行:在“编译”中选择“编译”,没有错误和警告以后,在“编译”中

选择“构建”最后在“编译”中选择“执行”。

实验结果:

sum is 579

讨论:本实验让我们了解了如何创建一个C语言的控制台应用程序,并学会了C语言程序的基本构架和个别特殊语句如“main”“printf”等。

实验地点:3B-20

3第2次实验:时间:2010-10-6

项目名称:顺序结构程序设计实验

(书89页4.9题,先把题抄下来)

仪器设备:电脑一台,操作系统WindowsXP,开发环境Visual C++ 6.0

实验程序:

1、打开VC++6.0,新建一个C++源程序,在代码窗口输入程序如下:

(自己写代码)

2、编译、连接、运行:在“编译”中选择“编译”,没有错误和警告以后,在“编译”中选择“构建”最后在“编译”中选择“执行”。

实验结果:„„

讨论:„„

实验地点:3B-20

3第3次实验:时间:2010-10-27

项目名称: 选择语句switch的使用

(书111页5.6题,先抄题)

仪器设备:电脑一台,操作系统WindowsXP,开发环境Visual C++ 6.0 实验程序:

1、打开VC++6.0,新建一个C++源程序,在代码窗口输入程序如下:

(自己写代码)

2、编译、连接、运行:在“编译”中选择“编译”,没有错误和警告以后,在“编译”中选择“构建”最后在“编译”中选择“执行”。实验结果:„„ 讨论:„„ 实验地点:3B-20

3第4次实验:时间:2010-11-17 项目名称:循环语句for的使用(书129页6.1,先抄题)

仪器设备:电脑一台,操作系统WindowsXP,开发环境Visual C++ 6.0 实验程序:

1、打开VC++6.0,新建一个C++源程序,在代码窗口输入程序如下:

(自己写代码)

2、编译、连接、运行:在“编译”中选择“编译”,没有错误和警告以后,在“编译”中选择“构建”最后在“编译”中选择“执行” 实验结果:„„ 讨论:„„

实验地点:3B-20

3第5次实验:时间: 2010-12-8 项目名称: 数组的应用(书134页例题7.3,先抄题)

仪器设备:电脑一台,操作系统WindowsXP,开发环境Visual C++ 6.0 实验程序:

1、打开VC++6.0,新建一个C++源程序,在代码窗口输入程序如下:(自己写代码)

2、编译、连接、运行:在“编译”中选择“编译”,没有错误和警告以后,在“编译”中选择“构建”最后在“编译”中选择“执行” 实验结果:„„ 讨论:„„

实验地点:3B-20

3第二学期实验:

第1次实验: 时间 2011-2-25 项目名称:编写函数

(在主函数中输入两个数,分别调用四个自定义函数,实现两个数的加、减、乘、除并输出结果。)

仪器设备:电脑一台,操作系统WindowsXP,开发环境Visual C++ 6.0 实验程序:

6、打开VC++6.0,新建一个C++源程序,在代码窗口输入程序如下: #include void main(){

int add(int x,int y);int sub(int x,int y);int mul(int x,int y);float div(int x,int y);int c,a,b;float d;

scanf(“%d,%d”,&a,&b);c=add(a,b);

printf(“%d+%d=%dn”,a,b,c);c=sub(a,b);

printf(“%d-%d=%dn”,a,b,c);c=mul(a,b);

printf(“%d*%d=%dn”,a,b,c);

d=div(a,b);printf(“%d/%d=%fn”,a,b,d);}

int add(int x,int y){

return x+y;

}

int sub(int x,int y){}

return x-y;

int mul(int x,int y){} {

return x*y;

float div(int x,int y)

return(float)x/(float)y;

}

2、编译、连接、运行:在“编译”中选择“编译”,没有错误和警告以后,在“编译”中选择“构建”最后在“编译”中选择“执行”。实验结果:„„ 讨论:„„。

实验地点:3B-20

1第2次实验:时间:2011-3-11 项目名称:指针的应用(书278页10.3,先抄题)

仪器设备:电脑一台,操作系统WindowsXP,开发环境Visual C++ 6.0 实验程序:

1、打开VC++6.0,新建一个C++源程序,在代码窗口输入程序如下:(自己写代码)

2、编译、连接、运行:在“编译”中选择“编译”,没有错误和警告以后,在“编译”中选择“构建”最后在“编译”中选择“执行”。实验结果:„„ 讨论:„„

实验地点:3B-20

3第3次实验:时间:2011-4-8

项目名称:顺序结构程序设计实验(书318页11.3题,先把题抄下来)

仪器设备:电脑一台,操作系统WindowsXP,开发环境Visual C++ 6.0 实验程序:

1、打开VC++6.0,新建一个C++源程序,在代码窗口输入程序如下:

(自己写代码)

2、编译、连接、运行:在“编译”中选择“编译”,没有错误和警告以后,在“编译”中选择“构建”最后在“编译”中选择“执行”。实验结果:„„ 讨论:„„

实验地点:3B-203

9.1

#include

#define S(A,B,T)T=A;A=B;B=T void main(){} 9.6

#include #define PR printf #define NL “n”

int a,b,t;

scanf(“%d,%d”,&a,&b);S(a,b,t);

printf(“%d,%dn”,a,b);

#define F “%6.2f”

#define F1 F NL #define F2 F F NL #define F3 F F F NL void main(){

float a,b,c;a=1;b=2;c=3;PR(F1,a);

PR(F2,a,b);PR(F3,a,b,c);}

作业:

#include

#include

void main(){

void fun1(float a,float b, float c);void fun2(float a,float b ,float c);void fun3(float a,float b, float c);float a,b,c,disc;

scanf(“%f%f%f”,&a,&b,&c);disc=b*b-4*a*c;if(disc>0)fun1(a,b,c);else if(disc==0)fun2(a,b,c);else

fun3(a,b,c);}

void fun1(float a,float b,float c){

float d=b*b-4*a*c;float x1,x2;

x1=(-b+sqrt(b*b-4*a*c))/(2*a);x2=(-b-sqrt(b*b-4*a*c))/(2*a);printf(“%f,%fn”,x1,x2);}

void fun2(float a,float b,float c){

float d=b*b-4*a*c;float x1,x2;

x1=x2=(-b)/(2*a);

printf(“%f,%fn”,x1,x2);}

void fun3(float a,float b,float c){

printf(“此函数无解”);} P278

#include void main(){void aa(int x[],int n);int i,a[10];

for(i=0;i<10;i++)scanf(“%d”,&a[i]);

printf(“交换前:n”);

for(i=0;i<10;i++)printf(“%d,”,a[i]);printf(“n”);aa(a,10);

printf(“交换后:n”);for(i=0;i<10;i++)

printf(“%d,”,a[i]);printf(“n”);

}

void aa(int x[],int n){

int

temp,max=x[0],min=x[0],max_n=0,min_n=0,i;//假设第一个数是最大和最小的数,那么max,min的下标就=0for(i=1;i

max=x[i];max_n=i;}

if(min>x[i]){min=x[i];

min_n=i;

}}

if(min_n!=0){temp=x[0];x[0]=x[min_n];

x[min_n]=temp;

}

if(max_n!=n-1){temp=x[n-1];x[n-1]=x[max_n];x[max_n]=temp;

}

} eee:

#include

void main(){void jiaohuan(int *pt1,int *pt2);int a,b;

scanf(“%d,%d”,&a,&b);printf(“n交换前:n”);printf(“a=%d,b=%dn”,a,b);jiaohuan(&a,&b);printf(“n交换后:n”);printf(“a=%d,b=%dn”,a,b);

}

void jiaohuan(int *pt1,int *pt2){int temp;temp=*pt1;*pt1=*pt2;*pt2=temp;

}

习题11.3 方法一: #include void main(){int i;

struct student{int num;

char name[10];int score[3];

}stu[5]={{101,“A”,50,60,80},{102,“B”,9

0,67,45},{103,“C”,30,40,50},{104,“D”,90,80,70},{105,“E”,60,70,80}};

printf(“NUM

NAME SCOREn”);for(i=0;i<5;i++)

printf(“%4d%8s%8d,%2d,%2dn”,stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2]);

}

方法二 : #include void main(){int i;

struct student{int num;

char name[10];

int score[3];}stu[5];for(i=0;i<5;i++){

printf(“

学号:”);scanf(“%d”,&stu[i].num);printf(“姓名:”);scanf(“%s”,&stu[i].name);printf(“成绩

”);scanf(“%d,%d,%d”,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);}printf(“NUMNAME SCOREn”);for(i=0;i<5;i++)

4.c语言实验报告实验4.doc 篇四

1、实验目的、要求

(1)C语言表示逻辑量的方法。

(2)学会正确使用逻辑运算符和逻辑表达式。

(3)熟悉掌握if语句和switch语句。

(4)掌握简单的算法及程序调试。

2、实验内容:

(1)输入程序并运行,观察运行结果并分析。

#include

int main()

{int a=1,b=3,c=5,d=4,x;

if(a

If(c

Else „„„„„„„„„„„„„„„„„„„„„„„„2

If(a

If(b

Else x=3;„„„„„„„„„„„„„„„„„„„„„„„„4

Else x=6;„„„„„„„„„„„„„„„„„„„„„„„„2

Else x=7;„„„„„„„„„„„„„„„„„„„„„„„„1

printf(“x=%dn”,x);

Return(0);}

实验前分析:因已知:A,B,C,D分别为1,3,5,4,故可知只有A

(2)、编写程序:

Y=X(X<1);Y=2X-1(1==10).要求用SCANF输入X的值,输出Y的值。

程序编写如下:

#include

Int main()

{int x,y;

Scanf(“%d”,x);

If(x<1)y=x;

If(x>=1&&x,10)y=2*x-1;

If(x>=10)y=3*x-11;

Printf(“%d”,y);

Return(0);}

进行检验,发现程序有错误,无法运行。

将程序改为:

#include

Int main()

{int x,y;

Scanf(“%d”,x);

If(x<1)y=x;

Else if(x>=1&&x<10)y=2*x-1;

Else if(x>=10)y=3*x-11;

Printf(“%d”,y);

Return(0);}

实验分析:

1、在if语句中,要注意IF和ELSE的配合使用,不能单独使用IF。

2、此程序中还应注意if语句的嵌套和各层之间的逻辑关系。

3、再输入该程序时,涉及到乘法运算的表示,应注意计算机语言与书面语言的区别,在C语言中,*表示乘法运算。

在程序中加入clrscr()运算符,清空遗留数据:

#include

Int main()

{int x,y;

Scanf(“%d”,x);

Clrscr();

If(x<1)y=x;

Else if(x>=1&&x<10)y=2*x-1;

Else if(x>=10)y=3*x-11;

Printf(“%d”,y);

Return(0);}

运行该程序,得到预期结果,但输入数据被清除;将clrscr()移动到scanf之前。再次运行,得到了预期的输入和输出数据,故可知,clrscr()函数的作用是清楚该语句之前的所有的输出的数据和输入的数据。以后用此语句时要注意输入位置。

(3)补足程序并运行。

输入两个数,将较小者输出,应用条件运算符。

#include

Int main()

{int a, b,min;

Printf(“n please input two numbersn”);

Scanf(“%d%d”,&a,&b);

Min=min(a,b);

Printf(“min=%d”,min);

Return(0;)}

运行该程序,显示程序错误,无法输出结果。

将程序改为:

#include

Int main()

{int a, b,min;

Printf(“n please input two numbersn”);

Scanf(“%d%d”,&a,&b);

Min=(a>b?b:a);

Printf(“min=%d”,min);

再次运行程序,屏幕上显示“please input two numbers”,输入两个数字6和9,输出数字为6,再换多组数字,结果与与其相同,可知实验成功。

实验分析:输入比较两数大小的函数时,不能想当然,如认为“min=min(a,b)”就是输出较小数的函数,而应使用三目运算符(A?B:C)来表示。

(5)给出一个百分制成绩,要求输出成绩等级A,B,C,D,E:90分以上为A,80——89分为

B,70——79分为C,60——69分为D,60分以下为E。

1、分别用IF和SWITCH语句来实现。

2、输入成绩为大于100分或小于0分时,显示出错成绩,程序结束。

用IF函数表示:

#include

Int main()

{int a;

Printf(“n please input your scoren ”);

Scanf(“%d”,&a);

If(a>=90&&a<=100)printf(“A”);

Else if(a>=80&&a<=89)printf(“B”);

Else if(a>=70&&a<=79)printf(“C”);

Else if(a>=60&&a<=69)printf(“D”);

Else if(a>=0&&a<=59)printf(“E”);

Else printf(“data error”);

Return(0);}

检查无错误,运行程序,无论输入数值为多少,输出结果均为“data error”。

将程序改为:

#include

Int main()

{int a;

Printf(“n please input your scoren ”);

Scanf(“%d”,&a);

{If(a>=90&&a<=100)printf(“A”);

Else if(a>=80&&a<=89)printf(“B”);

Else if(a>=70&&a<=79)printf(“C”);

Else if(a>=60&&a<=69)printf(“D”);

Else if(a>=0&&a<=59)printf(“E”);

Else printf(“data error”);}

Return(0);}

即在if函数外套一组大括号,使之成为一个语句。再次输入数据,得到正确结果。实验分析:

1、注意if和else的配套使用,不能遗漏。

2、逻辑运算符&&表示“并且”,除此之外,“!”表示“非”,“||”表示“或”,以后使用注

意区分。

3、使用switch语句:

#include

{int a,b;

Printf(“n please input your scoren”);

Scanf(“%d”,&a);

If(a<=100&&a>=0)

{b=a/10;

Switch(b)

{case 10 printf(“A”);break;

Case 9 printf(“A”);break;

Case 8 printf(“B”);break;

Case 7 printf(“C”);break;

Case 6 printf(“E”);break;

Case 5 printf(“E”);break;

Case 4 printf(“E”);break;

Case 3 printf(“E”);break;

Case 2 printf(“E”);break;

Case 1 printf(“E”);break;

Case 0 printf(“E”);break;

Default printf(“data error”);}}

Else printf(“data error);

Return(0);}

运行程序,显示程序有误,经检验,错误为case语句后没有加冒号,加上后,限制结果与预期相同。

实验改进:该程序中,反复输入case语句,效率低下,可将条件相同的情况进行合并,进行简化,变成如下形式:

#include

Int main()

{int a,b;

Printf(“n please input your scoren”);

Scanf(“%d”,&a);

If(a<=100&&a>=0)

{b=a/10;

Switch(b)

{case 10:Case 9 :printf(“A”);break;

Case 8 :printf(“B”);break;

Case 7 :printf(“C”);break;

Case 6 :Case 5 :Case 4 :Case 3 :Case 2 :Case 1 :Case 0:printf(“E”);break;Default printf(“data error”);}}

Else printf(“data error);

Return(0);}

运行后,得到相同的结果,故简化成功。

实验分析:此实验中,应注意break语句的使用,不能遗漏;case语句应用大括号括住,表示整体的使用;条件允许可以对程序进行适当的简化,提高运算效率;区分IF和SWITCH函数的共性与区别,提高对两者的认识。

实验心得:

1、注意IF语句的使用规则,要与ELSE搭配使用,掌握了多层IF函数的使用方法。

2、掌握了关系运算符与逻辑运算符“与”“或”“非”的使用法方法,“&&”“||”“!”。

3、注意区分数学表达语句与计算机语句的区别,了解计算机语句的特点。

4、必要时可以利用辅助设计语句对程序进行改进,或对程序进行简化,便于加深理解,方

便操作。

5.C语音 文件 实验报告 篇五

一、设计思想的简单描述:

在设计要求1中,首先要用只读方式打开文件,然后将文件中的数据读入结构体。之后再通过fopen写入方式打开一个二进制文件CLASS01_1001_15.dat,将结构体中的数据写入二进制文件中。在设计要求2中,首先根据实验要求定义三个结构体,然后将DataForLab8中的数据分别存入这三个结构体中。然后编写输出函数将三中结构体中的数据输出到屏幕上。查询函数即是将学生的某科成绩与两个端点数值比较,在区间内的即可输出。再设计要求3中,首先写一个排序函数,将学生成绩按某科成绩排序,然后将其按照和设计要求1中相类似的方法将其写入相应文件中。然后按照实验要求二中的查询方法查询某一区间内的学生。

二、程序结构及流程的简单描述:

6.C语言实验教学探讨--实例教学 篇六

许多学生都有这种感觉, 在理论课时教师讲的内容都理解, 实验课的时候也按照教师要求完成了相应的实验任务, 但C语言一个学期学习下来, 合上课本甚至连一个完整的程序也编不出来 (当然他们中的好些也能在考试中取得高分, 然而他们的秘诀却是"背程序") , 这其中主要的原因就是他们的实验课没有上好, 动手编程和解决问题的能力不强。

实例教学就是在教学中运用围绕课程内容设置的实例, 以实际应用为出发点, 结合理论教学, 让学生针对实例中涉及的具体问题提出解决的方法、手段和途径, 并在实际应用中加以掌握, 同时"任务驱动"则巩固和深化对知识点的理解和掌握, 这种模式更注重培养学生灵活运用知识创造性解决实际问题的能力。

在C语言实验教学中灵活运用实例教学, 它使得教学内容具有生动活泼的立体感, 从而能极好地开发和增加学生的实践能力, 极大地提高教学水平、改善教学效果。

一、激发学生学习的兴趣和主动性

在传统的C语言实验教学中, 大都以其教材或相应的实验指导书为主。这种形式的实验教学有它的不足。

首先过于简单。虽说C语言是许多学生接触的第一门程序设计语言, 但C语言也是相对比较容易入门的语言, 其中的决大部分内容, 学生在通过教师理论课的讲解或自习后即可理解掌握。所以对于大部分的实验任务, 学生无须多加思考, 只要通过对课本或实验指导书上现成的例子稍做修改即可完成。可能好多教师都被学生问过类似于这样的话:我们学这东西 (turboc2) 有什么用吗?能做些什么呢?因此, 上机实验基本属于验证性实验, 抹煞了学生实验的自主性和创造性。

其次, 内容过于枯燥。对于这些简单的实验程序, 其大部分输出的都是枯燥的字符或数字。所以学生即使完成了, 在其他同学看来也没什么值得欣赏的地方。不像其他科目的实验课, 比如网页制作, 虽然难度不大 (甚至还很烦琐) , 但不少学生对此还是乐者不倦, 经常在其他实验课时间也在做网页之类的内容。原因很简单, 网页做出了后他们有成就感, 可以和其他同学分享他们的成果。

所以, 使用传统的实验教学办法, 开始的时候大部分学生可能还很认真, 但由于他们的学习是被动的, 到后来他们的兴趣也就慢慢地淡下来了。但如果C语言实验教学中通过引用分析、修改实例, 最后仿造完成相应的实例, 其效果就不同了。

首先内容丰富多彩。为培养学生学习兴趣, 可以使用带有图形界面的完整C语言程序 (如一些小游戏程序) 作为实例教学的素材。实践证明学生对游戏编写的兴趣是最高的, 因为他们编写出来后通过不断修改完善, 既可自娱, 重要的是也可以让其他同学来分享其完成一个程序后的成就感。

其次是增强了难度。一个完整的特别是带图形界面的C语言游戏小程序, 其中不少内容 (如图形方面) 在现在大多数的C语言教材上是没有涉及到的。而且一个可以完成某些特定功能的C语言程序少说也要上百条语句, 对于学生来说, 不是随便翻翻书就可以弄明白的。这样自然能激发学生强烈的求知欲, 他们的学习也就会由被动变为主动。例如在学期末教师先演示一个经典的俄罗斯方块程序, 然后让他们分析该程序的算法和执行过程, 最后给出一定的图形结构体和一些相关的函数, 让学生自己完成类似的游戏程序, 这样激发学生上机操作的兴趣, 从而达到良好的教学效果。

二、增加学生间的交流

传统的C语言实验教学由于内容简单、枯燥, 学生的兴趣不高, 所以他们相互间很少进行交流, 从而导致他们的理解误区很难及时得到矫正。使用实例教学模式, 促使学生为分析、解决问题而增加相互间的交流, 这无论是对教学还是学生学习, 无疑是最好的。

三、提高综合编程能力

传统的C语言实验教学中, 上机操作编写的是课本或指导书上的例子, 学生思考不多, 语法印象不深, 编程能力不强。实例教学通过循序渐进的实例作业, 使学生的编程思维不断创新和改进, 通过不断地上机操作, 既巩固了理论语法知识, 又提高综合编程能力。避免了类似"合上课本甚至连一个完整的程序也编不出来"的情况。

四、树立信心

通过学期末综合实例的实现, 树立学生分析、解决实际问题的信心, 这将对学生以后的发展起到重要作用。

最后, 总结在应用实例教学过程中应注意的一些问题:

在C语言实验教学中, 应用实例教学重点和难点在于实例的选择上, 过易或过难都不理想, 选择实例应注意循序渐进, 每个实例和任务都是独立的, 但又是联系的, 是成一系统的。由于C语言的程序实例经常涉及到其他学生未接触过的方面, 教师应根据学生具体的水平, "屏蔽"掉一些语句。即对于一些复杂的程序, 教师要把它细化, 哪些是这节课需要掌握的重点, 哪些是可以忽略的 (只要知道是怎么引用即可) 。这一点在实例教学中也非常重要。

摘要:传统的C语言实验教学中, 大都以其教材或相应的实验指导书为主, 然而其枯燥、单一的语法实验很难激发学生学习的主动性。本文通过实例教学与传统教学的对比, 阐述了实例教学模式在提高教学质量和激发学生学习兴趣等方面的几个重要作用。

关键词:C语言,理论教学,实例教学,学习兴趣

参考文献

[1].何迪.C语言课程教学方法探析.中国培训.2005年第7期

7.c语言的实验报告 篇七

一、实验目的1、熟练掌握C语言编程环境的使用。

2、掌握C语言程序的基本框架。

3、理解程序调试的思想,能找出并改正C程序中的语法错误。

二、实验内容和步骤

(一)实验11、实验题目:求三角形的面积和周长

2、上机过程

①正确的程序清单

#include

#include

int main()

{

int x, repeat;

float a, b, c, area, perimeter, s;

scanf(“%d”, &repeat);

for(x=1;x<=repeat;ri++)

{

scanf(“%f%f%f”, &a, &b, &c);

s=(a+b+c)/2;

if(a+b>c&&a+c>b&&b+c>a)

{

area=sqrt(s*(s-a)*(s-b)*(s-c));

perimeter=a+b+c;

printf(“area=%.2f;perimeter=%.2fn”,area,perimeter);}

else

printf(“These sides do not correspond to a valid

trianglen”);

}

}

②本题小结:上机时会遇到main,stdio.h等会打错,会忘记双引号。

所以在检查时要仔细,认真。

(二)实验21、实验题目:计算个人所得税

2、上机过程

①正确的程序清单

②本题小结:本题主要检测的是对C语言编程环境的使用,还要注意要写分号来结束一个语句。并且n是代表在执行时的换行,要在分号内的。

(三)实验31、实验题目:求华氏温度100°F对应的摄氏温度

2、上机过程

①正确的程序清单

#include

int main(void)

{

int celsius, fahr;

fahr = 100;

celsius = 5 *(fahr-32)/ 9;

printf(“fahr =% d, celsius = %dn”, fahr, celsius);

return 0;

}

②本题小结:该题测试的是对%d的认识,如果只有d那输出的只有d,而加上%意义就不同,输出的则是函数中计算的数。当然要注意main等词的拼写。分号是结束一个语句,所以在 定义celsius与 fahr两个变量时要用逗号。

(四)实验41、实验题目:求一元二次方程的根

2、上机过程

①正确的程序清单

② 本题小结:本题还是要注意stdio等词的拼写。但更关键的是:在“/* 输出”中后面要加上“*/”来结尾,起解释作用;还有

“%d=%d*%d”后必须要有三个用逗号分开的所要求的字母,来表示

“%d=%d*%d”所表示的内容。

(五)实验51、实验题目

2、上机过程

① 正确的程序清单

② 本题小结

总结:上机时要仔细,认真。更重要的是熟练掌握C语言编程环境的使用

实验报告完成人:周笑莉

8.2012华水C语言实验报告3 篇八

(三)2012--2013学年第二学期

2012级专业:学号:姓名:………………………………………………………………………………………………

一、实验题目:循环结构程序设计

二、实验目的:(略)

三、实验内容

1.程序验证(略)

2.程序设计

1)找出100-900之间的无暇素数。所谓无暇素数是指本身为素数,且其逆序数也是素数的数。例如:113是一个素数,311也是一个素数,113就是无暇素数。源代码:

#include

#include

int fun(int x)

{

int k;

for(k=2;k<=sqrt(x);k++)

if(x%k==0)

return 0;return 1;}

main()

{

int i,count=0;

for(i=100;i<=900;i++)

{

int temp1=i%10;

int temp2=(i)/10%10;

int temp3=i/100;

int temp4=temp1*100+temp2*10+temp3;

if(fun(i)&&fun(temp4))

{

count++;

printf(“%d ”,i);

if(count%9==0)

printf(“n”);

}

}

printf(“n”);return 0;

}

运行结果101 107 113 131 149 151 157 167 179181 191 199 311 313 337 347 353 359

373 383 389 701 709 727 733 739 743

751 757 761 769 787 797

Press any key to continue

2)编程:用迭代法求某数a的平方根。平方根的迭代公式如下:xn+1=(xn+a/xn)/2;设x0=a/2;

当迭代相邻两项差的绝对值小于10-5时,迭代结束。

源代码:

#include

#include

void main()

{

float a,x0,x1;

printf(“Input a number:”);

scanf(“%f”,&a);

if(a<0)

printf(“Error!n”);

else

{

x0=a/2;

x1=(x0+a/x0)/2;

do

{

x0=x1;

x1=(x0+a/x0)/2;

}

while(fabs(x0-x1)>1e-6);

printf(“sqrt(%f)=%fn”,a,x1);

}

}

运行结果:

9.维生素C的碘时钟实验的探究 篇九

一、碘时钟实验的背景

普通高中课程标准实验教科书《实验化学》专题4课题1“硫代硫酸钠与酸反应速率的影响因素”中介绍了“蓝瓶子”实验, 学生对该实验在振荡前后蓝色变为无色又变为蓝色的实验现象十分感兴趣, 纷纷要求再做一个类似的振荡实验。后来笔者发现在美国化学教育杂志刊登的碘时钟反应, 是将碘酸钾溶液、亚硫酸氢钠溶液、淀粉溶液混合反应, 间隔一定时间会出现从无色到琥珀色再到蓝黑色的有趣现象。基于此, 我们设计了维生素C的碘时钟振荡实验, 旨在挖掘与锻炼学生的实验探究能力。

但高中化学实验室中一般没有碘酸钾, 所以我们尝试用碘、维生素C和双氧水等常见试剂来完成类似的碘时钟实验。经实践后发现使用生活中的这些用品进行碘时钟实验现象明显, 可操作性强, 既适合在课堂演示, 又可以开发成学生课外化学实验活动, 且融知识性、趣味性、启发性和活动性于一体。

二、碘时钟实验的三维目标

1. 初步了解化学振荡实验, 提高学生学习化学的兴趣。

2. 了解并认识试剂浓度、温度等因素对于化学反应的影响程度及某些规律。了解维生素C的碘时钟的原理, 初步探究影响维生素C的碘时钟实验变色快慢的诸因素。

3. 尝试用控制变量法来寻找实验的最佳反应条件, 认识控制变量法的价值。体会观察和分析实验现象在化学实验中的重要作用, 提高处理实验数据和分析实验结果的能力。

三、碘时钟实验的设计过程

1. 实验原理

维生素C (C6H8O6) 分子中的烯二醇基具有还原性, 能被I2氧化成二酮基。维生素C的碘时钟实验的原理如下:

I2+C6H8O6=2HI+C6H6O6 (慢)

C6H8O6+H2O2=2H2O+C6H6O6 (快)

H2O2+2HI=I2+2H2O (快)

维生素C将碘单质还原为碘离子, 双氧水又把碘离子氧化为碘单质, 溶液就逐渐变色。反应速率主要由双氧水和碘离子的浓度决定。

2. 实验方法

控制变量法。通过只改变一种变量, 如改变某一试剂浓度或温度而在其他条件不变的情况下探究实验。

3. 实验准备

(1) 药品

维生素C:药房购买, 每片药片含维生素C100mg;1%淀粉溶液:淀粉0.2g溶解于20mL的沸水, 冷却;3%的双氧水:药房购买 (过氧化氢含量:35.00g/L-41.00g/L) ;2%碘酒:KI 1.5g溶于3mL蒸馏水, 加碘片2g, 搅拌溶解于73mL 95%酒精中, 摇匀加蒸馏水至100mL;冰块。

(2) 实验仪器

秒表、大烧杯、量筒、药匙、研钵、玻璃棒、恒温水浴。

4. 实验步骤

(1) 在一个100mL烧杯上标记“溶液A”, 向其中加20mL水, 一粒维生素C药片 (用时捣碎成粉末状后加入) , 2mL碘酒溶液, 用玻璃棒搅拌;

(2) 在另一个100mL烧杯上标记“溶液B”, 向其中加20mL水, 10mL双氧水, 2mL淀粉溶液, 玻璃棒搅拌;

(3) 将溶液B与溶液A混合并震荡, 同时开始用秒表计时, 观察并记录溶液颜色发生变化的时间及变色状况;

(4) 改变试液剂量或实验温度, 再按以上步骤重复操作实验。

5. 实验数据

(见表1, 表2, 表3)

6. 实验结果探讨与分析

从实验现象和数据可以发现:

(1) 开始时, 维生素C量较多, 可把生成的碘单质还原, 蓝色不出现;后来随着维生素C的消耗, 溶液变色逐渐明显, 最后变为蓝色。

注:室温19℃下测定

注:室温19℃下测定

表1中随着碘酒浓度的增加, 溶液颜色变化时间缩短, 反应速率越快;表2中随着双氧水浓度的增加, 溶液颜色变化时间缩短, 反应速率越快。表明反应物浓度越高, 反应速率越快。在表3中我们设计了0℃ (冰水浴) 、19℃ (室温) 和30℃ (温水浴) 三种不同温度。 (在实验中水浴温度不宜过高, 因为超过60℃淀粉的立体螺旋结构就会被破环, 不能与碘分子形成蓝色的包合物。[2]) 表明该反应温度越高, 反应速率越快。

(2) 在实验反应过程中还看到有无色气体生成, 该气体是否是氧气?我们用一个矿泉水塑料瓶作为溶液A与溶液B的反应容器, 向矿泉水塑料瓶快速加入溶液A与溶液B的混合液, 塞上插有球形干燥管 (大头朝上) 的橡皮塞, 过一会儿轻轻挤压塑料瓶, 将带火星的木条插入球形干燥管内, 木条复燃。证明该无色气体是氧气。氧气可能是双氧水发生分解反应所致。

(3) 在表3实验1反应后的混合溶液中, 不小心加了大约半颗捣碎的维生素C粉末, 振荡蓝黑色褪去, 但是令人惊奇的是过了2分钟左右, 蓝黑色又出现了。我们把剩余的半颗捣碎的维生素C粉末加了进去, 振荡蓝黑色仍褪去, 但是经过3分50秒, 蓝黑色又出现了!笔者推测可能是反应中生成的碘酸根离子把碘单质氧化了。但条件所限, 并未获得实验论证。

四、碘时钟实验的收获与反思

1. 该实验也适用选修4中“影响化学反应速率因素”的课堂演示或在实验化学专题4化学反应条件的控制教学中作为辅助研究课题。

2. 我们用水溶C100饮料 (塑料瓶装445mL, 农夫山泉杭州千岛湖饮用水有限公司生产) 代替维生素C药片发现也能做成功, 从生活中就地取材增加了实验的趣味性和可操作性。

3. 变量控制法不仅为了帮助学生获取知识、训练其实验技能, 更重要的是为了帮助学生学习一些重要的科学方法, 形成严谨的科学态度, 并能通过对反应条件的选择及控制来体验探究问题、解决问题的过程, 从而培养学生的综合能力。实验后, 一位学生写道, “……在做某个化学实验之前必须考虑该实验的各项条件是否已经确定, 如实验装置的设计、反应物的浓度、反应的温度等, 只有各项反应条件都考虑周全, 才能在实验过程中对反应条件进行有效控制, 一个实验才能顺利进行。……我现在才真正理解了‘化学实验的本质就是在条件控制下发生的化学变化’这句话的含义。”

4. 这次实验我们从设计到操作大约花了一个星期的时间, 教学内容进度稍受影响, 但如果能让学生有所思、有所得, 我们觉得那就是值得的。尤其是一位学生在完成这个实验之后, 又搜寻了很多有关振荡实验的资料:他发现化学振荡反应不仅仅是实验室研究中感兴趣的课题, 也存在于生产过程中, 如CO的气相氧化, 烃类燃烧中的热振荡等, 甚至有人认为爆炸反应亦属此类, 尤其值得注意的是振荡现象发生在许多生物化学反应系统中, 在细胞里起着化学反应器的作用。例如, 振荡反应保持着心跳的节奏, 振荡反应出现在葡萄糖转化为ATP (三磷酸腺甙) 的糖解循环中等等, 因而更加引起人们的关注。可以说振荡反应的应用随着时间的推移将越来越广泛。这些资料的搜寻, 不仅体现了他对这一方面的兴趣, 更是在无形之中提高了他的自主学习能力, 这也是我们在日常教学中所想要达到的一种境界:授人以鱼, 不如授人以渔。因此, 创设多种类似的探究实验, 将会给学生提供更广阔的视野和更丰富多彩的学习方法。

参考文献

[1]中华人民共和国教育部.普通高中化学课程标准 (实验) [S].北京:人民教育出版社, 2003:41.

10.C语言课程实践-实践1实验报告 篇十

1.程序源代码

程序1 编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,则计算机给出提示“Right!”,否则提示“Wrong!”,并告诉人所猜的数是大还是小,然后结束游戏。要求每次运行程序时机器所“想”的数不能都一样。#include #include #include void main(){

int input_number;

int random_number;srand((unsigned)time(NULL));random_number = rand()%100+1;printf(“输入您想猜的0~100之间的数:”);scanf(“%d”,&input_number);if(input_number >= 0 && input_number <= 100){

if(input_number == random_number)

{

printf(“nright!”);

}

else if(input_number > random_number)

{

printf(“n您猜的数过大n”);

}

else

{

printf(“n您猜的数过小n”);

} }

else

{

printf(“n您猜的数应在0~100之间”);} } 程序2 编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,则结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平;否则计算机给出提示,告诉人所猜的数是太大还是太小,直到人猜对为止。#include #include #include void main(){

int input_number;

int random_number;int n;srand((unsigned)time(NULL));random_number = rand()%100+1;for(n=1;;n++){

printf(“输入您想猜的0~100之间的数:”);scanf(“%d”,&input_number);if(input_number >= 0 && input_number <= 100)

if(input_number == random_number)

{

printf(“nright!n”);

if(n==1)

{

printf(“n您猜了%d次,太牛逼了.n”,n);break;

}

else if(n>1&&n<6)

{

printf(“n您一共猜了%d次,水平还行.n”,n);break;

}

else

{

printf(“n您一共猜了%d次,才猜对,很勉强啊.n”,n);break;

}

}

else if(input_number > random_number)

printf(“n您猜的数过大n”);

else

printf(“n您猜的数过小n”);

else

printf(“n您猜的数应在0~100之间”);} } 程序3 编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,则结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平;否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中的话,结束游戏。

#include #include #include void main(){

int input_number;

int random_number;int n;srand((unsigned)time(NULL));random_number = rand()%100+1;for(n=1;n<=10;n++){

printf(“输入您想猜的0~100之间的数:”);scanf(“%d”,&input_number);if(input_number >= 0 && input_number <= 100)

if(input_number == random_number)

{

printf(“nright!n”);

if(n==1)

{

printf(“n您猜了%d次,太牛逼了.n”,n);break;

}

else if(n>1&&n<6)

{

printf(“n您一共猜了%d次,水平还行.n”,n);break;

}

else

{

printf(“n您一共猜了%d次,才猜对,很勉强啊.n”,n);break;

}

}

else if(input_number > random_number)

printf(“n您猜的数过大,您还有%d次机会n”,10-n);

else

printf(“n您猜的数过小,您还有%d次机会n”,10-n);

else

printf(“n您猜的数应在0~100之间”);} if(n==11)

printf(“n你输了!n”);}

程序4 编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平,则结束游戏;否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中的话,则停止本次猜数,然后继续猜下一个数。每次运行程序可以反复猜多个数,直到操作者想停止时才结束。#include #include #include void main(){

int input_number;

int random_number;int n,i=1;

game: srand((unsigned)time(NULL));random_number = rand()%100+1;for(n=1;n<=10;n++){

printf(“第%d轮游戏,输入您想猜的0~100之间的数:”,i);scanf(“%d”,&input_number);if(input_number >= 0 && input_number <= 100)

if(input_number == random_number)

{

printf(“nright!n”);

if(n==1)

{

printf(“n您猜了%d次,太牛逼了.n”,n);break;

}

else if(n>1&&n<6)

{

printf(“n您一共猜了%d次,水平还行.n”,n);break;

}

else

{

printf(“n您一共猜了%d次,才猜对,很勉强啊.n”,n);break;

}

}

else if(input_number > random_number)

printf(“n您猜的数过大,您还有%d次机会n”,10-n);

else

printf(“n您猜的数过小,您还有%d次机会n”,10-n);

else

printf(“n您猜的数应在0~100之间”);}

} if(n==11){ printf(“n你输了!n”);i=i+1;goto game;} 2.遇到的问题及解决方法

问题1:随机数如何调用?

解决方法:运用srand((unsigned)time(NULL))函数。

问题2:”直到人猜对为止”功能如何实现? 解决办法:运用一个“无穷循环”,另游戏能够不断进行,并运用break语句停止于猜对情况。

问题3: “以此来反映猜数者“猜”的水平”功能的实现?

解决办法:在猜对情况下的if语句中嵌套if语句实现“猜数次数”的判断,分支输出“猜”的水平。

问题4:“每次运行程序可以反复猜多个数”功能的实现?

解决办法:此功能比较困难,但反复阅读程序后,发现代码并不复杂,运用goto语句和if语句的运用进行循环,即可实现此功能,且不会因为运用goto语句造成程序模块的混乱。

3.总结(心得体会)

这是“C语言课程实践”的第一次实践,由于平时并没接触过Microsoft Visual C++ 6.0这个编译软件,因此刚开始还存在操作方面的苦难。经过一两节课的实践,能够熟悉界面和学会新建工程。

此次实践题目是“猜数游戏”,题目分成4个部分,其实内容相同,只是功能逐渐增加。鉴于这种题目,编写程序中需要思考预留部分,比如运用if语句嵌套时,要注意把“猜对”、“猜错”和“误猜”分支出来,使程序容易阅读也容易进行修改。

在编写程序过程中,遇到几个核心问题,通过学习后把困难一个个突破,并成功实现题目所要求的功能。

上一篇:经典熟悉搞笑广告词下一篇:职业病宣传资料