C语言上机实验报告_第1页
C语言上机实验报告_第2页
C语言上机实验报告_第3页
C语言上机实验报告_第4页
C语言上机实验报告_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、青岛理工大学课程实验报告课程名称计算机程序设计(C)班级软件111实验日期2011.04.21姓名赵业乐学号201107209实验成绩实验名称实验一 C程序的运行环境和运行C程序的方法1.熟悉 Visual C+6.0环境:实2. 了解建立控制台应用程序的基本步骤。验3初步了解 Visual C+6.0的环境设置。目4.初步学会简单的程序调试方法。的5.学会编写简单的C程序。及6.初步熟悉C谛言操输入scanf函数、输出printf函数的使用。要7.掌握C语言基本数据类型,熟悉变量的定义及变量的初始化和赋求值操作。8.掌握不同的类型数据之间赋值的规律。9.掌握C谛言的算术运算符的使用以及算术表

2、达式的使用;掌握自加自减运算符的特点及使用。实Visual 6.0+Windows 7验环境实验内容.按照上述步骤,创建一个基于控制台的应用程序,该程序项目中只包含一个源程序文件。功能为求两个整数的和,数据从键盘输入。.创建一个基于控制台的应用程序,求一元二次方程的根。使得当输入三个实数a,b,c (满足 b*b-4*a*c0 ),能够求出方程 a*x*x+b*x+c=0 的两个实根,并显示在屏幕上。分析提示:通过键盘输入方程系数a,b,c的值,而后根据求根公式计算并输出它的两个根。法 描 述 及 实 验 步 骤1、先定义两个变量a,bo 2、键入a和b。3、输出两个数的和实验二1、定义并输入

3、a b c。2、判断d=bA2-4ac零则无解,等于零有一个解,的大小。3、如果小于x1=(-b)/(2*a) 。 4、大于零有两个解x1=(-b+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);5、输出结果。实验调试过程i KEEXSlKEn鸟个解:xl=-2 , x2 =-3个解: x=-i2嚼嘲11TMEany key to continue及实验结果总结掌握了掌握C语言基本数据类型,变量的定义及变量的初始化和赋值操作,不同的类型数据之间赋值的规律。了解了 C谛言的算术运算符的使用以及算术表达式的使用, 自加自减 运算符的特点及使用。附录实验一 1#includev

4、oid main()int a,b,s;scanf(%d%d”,&a,&b);printf(s=%dn,a+b);实验一 2#include#includevoid main()double a,b,c,d,x1,x2;printf(a b c :);scanf(%lf%lf%lf,&a,&b,&c);d=b*b-4*a*c;if (d0)printf(无解n);else if (d=0)x1=(-b)/(2*a);printf( 一个解:x=%gn,x1);elsex1=(-b+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);printf(两个解:x1=%g,x2=%g

5、n,x1,x2);青岛理工大学课程实验报告课程名称计算机程序设计(C)班级软件111实验日期2012.4.28姓名赵业乐学号201107209实验成绩实验名称实验二选择结构程序设计实.掌握赋值语句的使用方法。.掌握各种类型数据的输入输出方法, 能正确使用各种格式转换符。验 目 的 及 要 求.能正确使用关系运算符及表达式、逻辑运算符及表达式。.熟练掌握if语句,学会使用if-else语句设计双分支和多分支结构 程序。.熟练掌握switch语句的特点,学会使用switch语句设计多分支 结构程序。实验环境Visual 6.0+Windows 7实验内容3.编写程序,根据输入的学生成绩,给出相应的

6、等级。 90分以上的 等级为A, 60分以下的等级为E,其余每10分为一个等级。要求分 别用if语句和switch语句实现。4,使用switch语句编写简单的四则运算程序。算法描述实验3用if语句时:先输入学生成绩,判断等级,然后直接输出等级代号 A,B,C,D,E。用switch语句时:先输入学生成绩,除以十,取整。根据数值6到9判断等级。然后输出等级代号 A,B,C,D,E。实验4先定义字符变量c和数值变量a,bo然后判断字符变量为何种运算符号。最后输出相应结果。3日Press anto continue*8fpesa any key to continue掌握了赋值语句的使用方法,各种类

7、型数据的输入输出方法,能正确使用各种格式转换符、关系运算符及表达式、逻辑运算符及表达掌握了 if语句,学会使用if-else语句设计双分支和多分支结构程序;掌握了 switch语句的特点,学会使用switch语句设计多分支结构程序附录实验二3用if语句:#includevoid main()int a;printf(请输入学生成绩:n);scanf(%d,&a);if (a90)printf(该学生成绩等级是 An);else if (a80)printf(该学生成绩等级是 Bn);else if (a70)printf(该学生成绩等级是 Cn);else if (a60)printf(该学生

8、成绩等级是 Dn);elseprintf(该学生成绩等级是 En);用switch语句:#includevoid main()int a,m;printf(请输入学生成绩:n);scanf(%d,&a);m=a/10;switch(m)case 9:printf(该学生的成绩等级是:An);case 8:printf( 该学生的成绩等级是:Bn);case 7:printf(该学生的成绩等级是:Cn);case 6:printf( 该学生的成绩等级是:Dn);default:printf(该学生的成绩等级是:En);实验二 4#includevoid main()float a,b;char

9、c;scanf(%f%c%f,&a,&c,&b);switch(c)case +:printf(%fn,a+b);break;case -:printf(%fn,a-b);break;case *:printf(%fn,a*b);break;case /:printf(%fn,a/b);break;青岛理工大学课程实验报告课程名称计算机程序设计(C)班级软件111实验日期2012-5-2姓名赵业乐学号201107209实验成绩实验名称实验三循环结构程序设计实验 目的 及 要 求.熟练掌握 while、do-while 、for语句的特点,学会设计循环结构程序。.掌握break语句以及conti

10、nue 语句的特点及使用范围。.学会编写循环嵌套程序。.结合程序掌些简单的算法。.进一步学习调试程序。实验环境Visual 6.0+Windows 7实验内容2n.编程练习。求ex 1 x 的部分和。直到最后一项的值小于1.0e-4 。2!n!提示:第 n 项 un=xn/n!,第 n+1 项 un+1 = x n+1/(n+1)!及 u n+1 = u n(x/(n+1).编程练习。有1、2、3、4四个数字,能组成多少个互不相同且无重复数字的三位数?分别是多少?算 法 描 述 及 实 验 步 骤头验四1、调用函数。2、止义x s i j。输入x。3、直到n大于10000。4、i=i*(x/(

11、j+1);s=s+i; 5、输出 s实验五 1、定义 i j k fre=0。2、利用二重 for 语句。for(i=1;i=4;i+)for(j=1;j=4;j+); for(k=1;k=4;k+)。3、if(i!=k&i!=j&k!=j),输出 i*100+j*10+k 。4、最后输出(”总数为:%dn,fre)95=9103.0839103、Press ny key to continucta123 124 132134 42 143213214 2312m4 241243312314321324|341 342 412413 421 423431432区数为二24Press any k

12、ey tocontinue实验结果(对实验结果进行分析,问题回答,实验心得体会及改进意见)总实验三3附#include录#includevoid main()int x;double s,i,j;scanf(%d,&x);s=1,j=0;for(i=1;i=pow(10,-4);j+)(i=i*(x/(j+1);s=s+i;printf(s=%fn,s);实验三4#include void main() int i,j,k,fre=0;for(i=1;i=4;i+)for(j=1;j=4;j+)for(k=1;k=4;k+)if(i!=k&i!=j&k!=j)printf(%5d,i*100+

13、j*10+k);fre=fre+1;printf(n);printf(总数为:%dn,fre);青岛理工大学课程实验报告课程名称计算机程序设计(C)班级软件111实验日期2012-5-2姓名赵业乐学号201107209实验成绩实验实验四数组程序设计名称实1.掌维数组、二维数组的定义、引用及其存储方式。验2.掌握字符数组、字符串以及字符串数组的含义及区别。目3.掌握常用字符函数及字符串函数的使用。的4.掌握常用数组的排序、查找等算法。及要求实Visual C+6.0Windows XP2 .编写程序,定义一个含有30个元素的int类型数组.依次给数组元素赋奇数3、5、7;然后按每行十个数顺序输出

14、,最后再按每行十个数逆序输出。3.已知数组中的值在 0-9的范围内,统计每个整数的个数。实验2 1、定义一个一维数组a30,i,j=1 。 2、利用for循环输出,ai+1=ai+2;printf(%6d,ai)3、输出数组,定义初始值1或者59。确定顺、逆序。3 1、定义一个一维随机数组含20个数。2、输出该一维数组。利用 for 循环 int m,n,k; for(m=0;m=9;m+)for(n=0;n20;n+)if(m=an) 。4、输出每个数各有几个。调试过程及2、P个个个个个个个个 1420331321 1有有有有有有有有有有1711527&key to continue掌握常用

15、字符函数及字符串函数的使用,掌握常用数组的排 序、查找等算法。实验2#includevoid main()int a30,i,j=1;for(i=1;i31;i+)a1=1;ai+1=ai+2;printf(%6d,ai);if(i%10=0)printf(n);printf(n);for(i=1;i31;i+)a1=59;ai+1=ai-2;printf(%6d,ai);if(i%10=0)printf(n);实验4#include#includevoid main()int i,a20;for(i=0;i20;i+)ai=rand()%10;printf(%3d,ai);printf(n)

16、;int m,n,k;for(m=0;m=9;m+)k=0;for(n=0;n20;n+)if(m=an)k+;printf(%d 有 个n,m,k);青岛理工大学课程实验报告课程名称计算机程序设计(C)班级软件111实验日期2012-5-7姓名赵业乐学号2011072实验成绩09实验名称实验五函数实 验 目 的 及 要 求.掌握函数定义的各个要素。如函数返回值的类型、形式参数与实际参数等。.掌握变量的作用域和生存期的概念。.掌握局部变量与全局变量的区别、静态局部变量和局部变量的区别、静态 全局变量和全局变量的区别;理解外部变量和外部函数的概念。.理解数组作为函数的参数的含义。.理解函数的嵌套

17、调用。.掌握函数的递归调用。实验环境Visual C+6.0window7实验内容.求100200 之间的素数。要求:每行10个数输出;定义子函数isprime,函数原型为int isprime( intn);.设 f(x)=(2x 3+3x 2-4x+1)/(10 x 2+3),q(x)=3f(x)3+2f(x) 2+f(x),编程实现输入x的值,计算输出q(x)的值,要求有q(x)和f(x)的定义。.求菲波那契数列1 , 1 , 2, 3, 5, 8, 13 , 21 , 34的前20项。要求:使用递归;每行输出5个数。实验3 1、定义函数isprime(int n)。2、当(n%i=0)

18、时,返回0.否则返回1。3、定义main函数。确定范围100200. 4、当isprime函数成立,每五个一行输出。实验4 1、定义函数 f= (2*pow(x,3)+3*pow(x,2)-4*x+1)/(10*pow(x,2)+3);o 2、定义main函数。3、q= 3*pow(f(x),3)+2*pow(f(x),2)+f(x);输出q函数。实验51、定义fib函数。前两项为1.2、利用递归函。Fib(x)= fib(x-1)+fib(x-2);。 3、每五项一行输出。101 103 109 109 112 127 131 137 139 149151 157 163 167 173 1

19、79 181 191 193 1971993、1ess any key to cant;inue TOC o 1-5 h z 1123SB1321345GB914429237761958715972584410167654、1.165650ess an51 key to c0nt inue5、Press any key to continue1,掌握了函数定义的各个要素。总结2,如函数返回值的类型、形式参数与实际参数等.3,需要进一步掌握函数。附录实验3#includeint isprime(int n)int i;for(i=2;in;i+)if(n%i=0)return 0;return

20、1;main()int n,m=0;for(n=100;n=200;n+)if(isprime(n)printf(%5d,n);m+;if(m%10=0)printf(n);printf(n);实验4#include#includedouble f(float x)double c;c=(2*pow(x,3)+3*pow(x,2)-4*x+1)/(10*pow(x,2)+3);return c;double q(float x)double c;c=3*pow(f(x),3)+2*pow(f(x),2)+f(x);return c;main()float x;double y;scanf(%f

21、,&x);y=q(x);printf(%lfn,y);实验5#includeint fib(int x)if(x=1|x=2)return 1;elsereturn fib(x-1)+fib(x-2);main()int n,s;for(n=1;n=20;n+)s=fib(n);printf(%-5d,s);if(n%5=0)printf(n);printf(%n);青岛理工大学课程实验报告课程名称计算机程序设计(C)班级软件111实验日期2012-5-16姓名赵业乐学号201107209实验成绩实验名称实验六指针实1.理解指针的定义,学会指针变量的初始化以及指针可以参与的运验算。目2.掌握指

22、针和一维数组的关系。的3.理解指针和二维数组的关系、理解行指针(或数组指针)的概念。及4.理解指针数组和数组指针的区别。要5.理解指针和函数的关系以及指针函数和函数指针的含义。求6.了解指针的指针(即二级指针)o实Visual C+6.0window7验环境实6.编写程序。读入三个浮点数,将整数部分和小数部分分别输出。验要求使用指针作形参。内7.编写一个函数,返回数组元素中最大值的地址,并在主函数中输容出该儿素。算法描实验6 1、定义函数,指针做形参。2、定义a为整数部分,*p-a述及实既是小数部分。然后输出。3、主函数中,键入三个浮点型数。并使验用fu函数。步实验71、定义dizhi函数,指

23、针做形参。返回地址。2、定义主函数,骤以及一个数组。3、调用dizhi函数,输出数组和最大值。调 试 过 程 及 实 验 结 果 总结6、7、3尸卬F为-H三三2 BBS.整整整&-是是是7 12 6k、数部分是8.30000 、教部分是。的目色时 、教部分是时.700000fro cont inue_1740948824最大数是w 9地址是:1244912Pibeg ani/ Id continue -1.运用指针时应时刻注意指针指向的改变,避免逻辑上的错误,加大编程时的难度。2.通过指针变量可以提高程序质量,编写程序方便灵活,可以实现多个值的返回实验6#includevoid fu(flo

24、at *p)int a;a=(int)*p;printf(整数部分是%d 小数部分是%fn,a,*p-a);main()float a3;int i;for(i=0;i3;i+)scanf(%f,&ai);fu(&ai);实验7#includeint dizhi(int *p)int s;p=&s;printf(地址是:dn,p);return p;main()int i,s,a10,*p;for(i=0;i10;i+) ai=rand()%10;printf(%d,ai);printf(n);s=a0;for(i=0;i10;i+)if(sai+1)s=ai;printf(最人数是;%dn,

25、s);dizhi(&s);青岛理工大学课程实验报告课程名称计算机程序设计(C)班级软件111实验日期2012-5-16姓名赵业乐学号201107209实验成绩实验名称指针实验目.理解指针的定义,学会指针变量的初始化以及指针可以参与的运算。.掌握指针和一维数组的关系。的及要求.理解指针和二维数组的关系、理解行指针(或数组指针)的概念。.理解指针数组和数组指针的区别。.理解指针和函数的关系以及指针函数和函数指针的含义。.了解指针的指针(即二级指针)o实验环境Visual C+6.0window7实验内容.编写程序。读入三个浮点数,将整数部分和小数部分分别输出。要求使用指针作形参。.编写一个函数,返

26、回数组元素中最大值的地址,并在主函数中输 出该儿素。算法描述及实验步骤实验6 1、定义函数,指针做形参。2、定义a为整数部分,*p-a 既是小数部分。然后输出。3、主函数中,键入三个浮点型数。并使 用fu函数。实验71、定义dizhi函数,指针做形参。返回地址。2、定义主函数,以及一个数组。3、调用dizhi函数,输出数组和最大值。调 试 过 程 及 实 验 结 果 总结6、7、1.3 2.3 b-y整数部分是1 整数部分是2 / 整数懿是白 Pi*ess 可r*y key 口 lle 0S0U 是是是ifl J七 77z?z. n 子E 4 0 立口1口力QIC 数热数口 卜卜卜七17409

27、48824最大数是.9地址是:1244912Pfess any keg to centinue -1.运用指针时应时刻注意指针指向的改变,避免逻辑上的错误,加大编程时的难度。2.通过指针变量可以提高程序质量,编写程序方便灵活,可以实现多个值的返回实验6#includevoid fu(float *p)int a;a=(int)*p;printf(整数部分是%d 小数部分是%fn,a,*p-a);main()float a3;int i;for(i=0;i3;i+)scanf(%f,&ai);fu(&ai);实验7#includeint dizhi(int *p)int s;p=&s;print

28、f(地址是:dn,p);return p;main()int i,s,a10,*p;for(i=0;i10;i+) ai=rand()%10;printf(%d,ai);printf(n);s=a0;for(i=0;i10;i+)if(sai+1)s=ai;printf(最人数是;%dn,s);dizhi(&s);青岛理工大学课程实验报告课程名称计算机程序设计(C)班级软件111实验日期2011-5-30姓名赵业乐学号201107209实验成绩实验名称实验七链表实验.掌握结构体类型变量的定义和使用。.掌握结构体类型数组的概念和应用。.掌握链表的概念,初步学会对链表进行操作。目的及要求实验环境V

29、C+6.0实验内.编写程序。有5个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入5个学生数据,要求车出3门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、 3门课的成绩、平均分数)。.建立一个学生链表,每个结点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。容算 法 描 述 及 实 验 步 骤第一题定义一个结构体变量,包含学号、姓名、3门课的成绩定义一个可以输入学生信息的函数。定义一个函数可以求平均分并返回。输出3门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课的成绩、平均分数)。第二题定义一个结构体变量,包

30、括 学号、姓名、性别、年龄和指向卜一个节点的指针。创建链表,输入学生信息。定义一个可以输出学生信息函数。定义一个可以删除节点的函数,当输入一个年龄时,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。调 试 过 程 及 实 验 结 果1麟能舞矗H姓生性别、年龄001 yadonf n 20输入第2个学生信息032 xzuiabln 4f 21输入第3个学生信息003 dapeng n 1?创建链表4-显示链表.3-删除相同年龄4什退出操作%A要删除的年龄20MS 霞%示链表H删除相同年龄.回-退出操作2xiaobin n21第2个学生信息:3dLapeng n19创建链表浮-显示链表.3

31、 -删除相同年龄目-退出操作熟练地掌握共用体;总在写程序时可以熟练地使用链表进行数据操作/第一题代码如下:附#include录#define N 5void input(struct student stud);double av1(struct student stud);double av2(struct student stud);double av3(struct student stud);int max(struct student stud);struct student int no;char name10;double degree1;double degree2;doubl

32、e degree3;void main() struct student studN;double aver3,avg;int a,i;input(stud);aver0=av1(stud);aver1=av2(stud);aver2=av3(stud);a=max(stud);avg=(studa.degree1+studa.degree2+studa.degree3)/3.0;for(i=0;i3;i+)printf(第 门平均分:t,i+1);printf(%.2lfn,averi);printf(分数最高的学生信息如下:n);printf(%dt%st%.21f%.2lf%.2lf %

33、.2lfn,studa.no,,studa.degree1,studa.degree2,studa.degree3,avg);void input(struct student stud口)输入 N 个学生的信息int i;printf(学生信息输入格式:学号、姓名、分开输入三门分数n);for(i=0;iN;i+)printf(输入第d个学生信息:n,i+1);scanf(%d%s%lf%lf%lf,&studi.no,,&studi.degree1,&studi.degree2,&studi.degree3);double av1(struct st

34、udent stud口)int i;double a=0.0,b;for(i=0;iN;i+)a+=studi.degree1;b=a/N;return b;double av2(struct student stud口)int i;double a=0.0,b;for(i=0;iN;i+)a+=studi.degree2;b=a/N;return b;double av3(struct student stud口)int i;double a=0.0,b;计算第一门课的平均分计算第二门课的平均分计算第三门课的平均分for(i=0;iN;i+)a+=studi.degree3;b=a/N;re

35、turn b;int max(struct student stud口)查找分数最大的学生下标double m=0,aN;int i,k=0;for(i=0;iN;i+)ai=studi.degree1+studi.degree2+studi.degree3;if(mai)m=ai;k=i;return k;/第二题代码如下:#include#include#define N 3typedef struct studint no;char name10;char sex10;int age;struct stud *next;Stud;Stud *create();void show(Stud

36、 *head);void delet(Stud *head);Stud *getnode(Stud *head,int n);void shan(Stud *head);void main()/ 主函数Stud *head;int n;doprintf(1-创建链表,2-显示链表,3-删除相同年龄。退出操作n);scanf(%d,&n);switch(n)case 1:head=create();break;case 2:show(head);break;case 3:delet(head);break;defaultbreak;while(n!=0);Stud *create()/创建链表储存学生信息Stud *p,*head,*r;int i;head=(Stud *)malloc(sizeof(Stud);r=head;printf(输入学生信息格式:学号、姓名、性别、年龄n);for(i=1;ino,p-name,p-sex,&p-age);r-next=p;r=p;r-next=NULL;return

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论