C语言见习报告6篇
C语言见习报告怎么写?C语言是一种计算机程序设计语言,属高级语言范畴,它既具有高级语言的特点,又具有汇编语言的特点。通过见习做一报告,下面是小编为你整理的C语言见习报告6篇_C语言实习工作报告,希望对你有用!
C语言见习报告一:
班级:姓名:
实验名称:
电话订餐信息处理
实验目的:
题目要求:
一个小饭馆的生意非常红火,要想用餐必须提前一天打电话预订,假设我们是饭馆负责接受
电话预订的服务员,我们需要做些什么呢?首先,需要准备一张大小适当的白纸,等待顾客的电话。李红最先打进了电话,她预约第2天中午12点用餐,用餐人数5人,服务员在纸上做了如下记录:“李红 12点 5人”;接着,刘娜、汪涵、孙杰和赵君分别来了电话,服务员根据他们的要求做了记录,此时纸上记录的内容是:
李红 12点 5人
刘娜 11点 2人
汪涵 11点20分 3人
孙杰 10点30分 5人
赵君 13点20分 6人
孙杰随后又来电话,将用餐时间推后一个小时,那么记录的内容也应该做相应的修改。刘娜来用餐以后,可以将其信息从纸上划去
编写程序处理电话订餐的情况
实验步骤:
首先建立结构体类型,然后函数声明,编写主函数,定义函数,调用函数。完成后,对程序进行调试,确定所编写的程序是否能够运行。
实验内容:
#include
#include
#define ma_ 30
struct guest
{ intnum;
char name[40];
char time[20];
int sum;
}guestlink[ma_];
void insert(int _p);
void inquire(int);
void change(int);
void dele(int _p);
void show(int);
void main()
{ inti;
int count=0;
do
{0
printf("1.......插入\n");
printf("2.......查询\n");
printf("3.......修改\n");
printf("4.......删除\n");
printf("5.......显示\n");
printf("6.......退出\n");
scanf("%d",&i);
switch(i)
{
case 1: insert(&count);break;
case 2: inquire(count);break;
case 3: change(count);break;
case 4: dele(&count);break;
case 5: show(count);break;
case 6:break;
default:printf("输入错误!");break;
}
}while(i!=6);
}
void insert(int _p)
{ inti,number;
if(_p==ma_)
{ printf("用餐已满\n");return;}
printf("请输入编号:");
scanf("%d",&number);
for(i=0;i<_p;i++)
if(guestlink[i].num==number)
{ printf("已有相同的编号");return;}
guestlink[i].num=number;
printf("请输入姓名:");
scanf("%s",guestlink[i].name);
printf("请输入人数:");
scanf("%d",&guestlink[i].sum);
printf("请输入用餐时间:");
scanf("%s",guestlink[i].time);
(_p)++;
}
void inquire(int p)
{ inti,number,flag=1;
printf("请输入要查询的编号");
scanf("%d",&number);
for(i=0;i
if(guestlink[i].num==number)
{ printf("姓名:%s",guestlink[i].name);
printf("用餐时间:%s",guestlink[i].time);
printf("人数:%d\n",guestlink[i].sum);
flag=0;
}
if(i>=p&&flag==1) printf("所查询的编号不存在");
}
void change(int p)
{ inti,number,flag=1;
printf("请输入要修改的编号");
scanf("%d",&number);
for(i=0;i
if(guestlink[i].num==number)
{ printf("请输入姓名:");
scanf("%s",guestlink[i].name);
printf("请输入用餐时间:");
scanf("%s",guestlink[i].time);
printf("请输入人数:");
scanf("%d",&guestlink[i].sum);
flag=0;
}
if(i>=p&&flag==1) printf("所查询的编号不存在");
}
void dele(int _p)
{ inti,j,number,flag=1;
printf("请输入要删除的编号");
scanf("%d",&number);
for(i=0;i<_p&&flag;i++)
if(guestlink[i].num==number)
{for(j=i;j<_p-1;j++)
guestlink[j]=guestlink[j+1];
flag=0;
(_p)--;
}
if(i>=_p&&flag==1) printf("输入的编号不存在");
}
void show(int p)
{ inti;
printf("编号 姓名 用餐时间 人数\n ");
for(i=0;i
{ printf("%d",guestlink[i].num);
printf("%8s",guestlink[i].name);
printf("%8s",guestlink[i].time);
printf("%8d\n",guestlink[i].sum);
}
}
实验结果:
实验体会:
通过这次实践让我觉得用C语言在生活中的应用占有很大的比重,这次编程,让我体会到了学习C语言的乐趣,以及运用c语言给人们带来的方便。作为一名初学者,我了解到了计算机语言的神秘性和逻辑性,将算法与数据结构的充分结合,体现了程序的内涵,也同时展现了C语言的深度。也是因为这次实践的过程,加深了我对c语言的兴趣,也意识到学习c语言是需要耐心和细心的。只有透彻的学习,才能有熟练的运用。
C语言见习报告二:
一、实习时间:20__年_月_日—20__年_月_日
二、实习地点:第一微机室
三、实习目的:
1、熟悉我们自己所用的计算机的C语言开发环境,并且能够熟练掌握,达到错误能找到原因并且加以改正。
2、加深对课本理论知识的理解,进一步掌握书中重点、难点实例,锻炼自己的编写程序能力和实际应用能力。
3、上机调试程序的过程中,发现错误,解决错误,保证程序的正确运行,运行结果与给定结果完全相同。
4、学会用书中基本知识解决实际中的一些问题,将书本所学的内容与实际操作相结合,掌握把实际问题转变为C语言描述的算法的方法,明确思路。将自身的不足与缺陷改掉,养成良好编辑风格
5、培养我们的主观能动性、沟通、表达能力和团队合作意识,为我们以后的发展打下基础。
四、实习内容及方法:
在本次实习中,我们采用了由浅及深、由易到难的实习方法,而且也是按照书本的教学进程内容进行的,同时采取了实际应用与理论相结合的方法,在机房里面实习,一边理解,思考做题的思路与解法,另一边就可以马上进行上机实际操作。这对于我们加深对C语言的理解、操作以及动手能力都有了很大的帮助与提高。
实训的内容主要分为了七个版块:
第一版块:
1、Turbo C运行环境。
了解TC的基本环境,熟悉常用菜单项和快捷键:在这一小节中,需要熟练的掌握并应用Turbo C的运行环境,和基本配置。Turbo C是在计算机上广泛使用的一个C语言开发环境,它具有方便、直观、易用的界面和丰富的函数库。它把程序的编辑、编译、连接和运行等操作去不都集中在一个界面上进行,使用非常方便。并且Turbo C不需要特别安装,只需要将其拷贝到硬盘上就可以使用了。 为了方便管理用户的程序文件和维Turbo C2.0的运行环境,客户应在机子
上建立自己的工作目录,一边用来存放自己所需要开发的源程序文件。下面就是建立怎样自己文件夹,在空白区域内输入自己所建立的文件夹路径即可。
2、C程序的编辑、编译、连接和运行过程。
掌握C程序的运行步骤,初步了解C程序的特点。在Turbo C的运行中,快捷键使用非常方便,只需Ctrl+菜单栏中菜单名的首字母即可。
上面是一个程序编译与链接的截屏。第一个Compile to OBJ将源程序编译为OBJ文件,Make E_E file 编译连接一次进行,Link E_E file将OBJ文件连接为E_E文件。
3、VC6.0环境的熟悉,自己按照软件并在软件中能够调试简单的C语言程序。
第二版块:
1、C语言数据类型:整型、实型、字符型。
C语言的函数类型非常丰富,除了这几类以外,还有实型、数组、指针、结构体等,在这一小节中,主要了解关于数据类型的定义、用法以及他们的存储类型,一边与以后灵活运用。
C语言中还有常量与变量之分,常量是在程序执行过程中其值不变的量。二且在C语言中常量不需要类型说明就可以直接使用,常量的类型是由常量的本身隐含决定的。
2、运算符及表达式。
在C语言中,预算符非常丰富运算灵活,常用的有以下几个:
(1)算术运算符:+、-、_、/、%(取余)及++(自增)、--(自减)。
(在这里需要注意的是:“/”运算符,在C语言中两边都是整数的话,运算结果只取整数部分;“%”他的两边都必须是整数才可以运行;“__、--”运用这个运算符时要注意“先用后加(减)、先加(减)后用”的问题)
(2)赋值运算符:=及复合赋值运算符(+=、-=、_=、/=、%=等)。
(在这里需要注意的是“=、==”的区别,要明确用法及所用的地方,“=”它的作用是赋值,“==”它的作用是判断相等)
(3)逗号运算符:,(对于逗号表达式索要注意的是要明确它所用的地方以及在使用时所要注意的细节)。
了解三种运算符的优先级,掌握三种运算符及相应表达式的应用(详见附录)。
第三版块:在这一节里,我们实习了C语言的三大结构:
1、顺序结构:
2、选择结构:if??else,switch语句。
在这里许啊哟我们学习的很多,因为只要是程序,就脱离不了这个三大结构的范畴。在这个学习里我编写了
(1)、输入某年某月某日,判断这一天是这一年的第几天?。
(2)、给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
(3)、某市不同车牌的出租车3公里的起步价和计费分别为:夏利7元,3公里以外,2.1元/公里;富康8元,3公里以外,2.4元/公里;桑塔纳9元,3公里以外,2.7元/公里。编程:从键盘输入乘车的车型及行车公里数,输出应付工资。
源程序减附录;
经过这几个程序的练习,让我聊股的掌握了选择语句的用法以及精髓,同是这个用法和技巧已经深深的可在了我的脑海里,还有同过这些个程序的编写,让我对以前有的丝丝而非的地放完全通透理解,获益匪浅。
循环结构:while、do-while、for
在循环这一节里,我们主要做了以下程序:
(1)、求200-300之间所有素数,每5个换行。
(2)、猜数字游戏。规则为:输入一个0-10之间的数字,有5次猜测机会。如果输入0-4之间的数字,提示“太小了”;如果输入5-7之间的数字,提示“接近了”;如果输入9-15之间的数字,提示“太大了”;如果输入8,提示“correct!”;如果次数超过5次,提示“没有机会了,退出!”。
(3)、打印输出如下图形:(“◇”菱形)
(4)、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
提示:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。
(5)、打印输出九九乘法表。
我以前就对循环这一节里的内容就理解的比较好,现在做这些题很顺利的就做下去了,但在做的同是也会出现以写小的问题,但这个让我也更深一步的理解了循环语句的用法、思路以及其中的精华。
总的对这一节来说,使自己更神一步的理解了选择、过程中需要注意的一些细节问题。
第四版块:
1、一、二维数组的定义、引用及初始化。初始化:
一维数组:初始化赋值的一般形式为: static 式]={值,值??值}; 其中static表示是静态存储类型,态存储数组和外部存储数组才可作初始化赋值二维数组:
a.可以只对部分元素赋初值,未赋初值的元素自动取b.如对全部元素赋初值,则第一维的长度可以不给出。2、一、二维数组的应用。
在一维数组的应用中,要与循环嵌套使用,用,但是在这里,嵌套还要是循环的嵌套,因为只有这样使用才可以使程序更加简洁、简便。就像第五题:有一个班4个学生,(1)求每一门课程的平均分; (2)求每一个学生的平均分;
思路:定义一个二维数组,用二重循环输入这个数组,然后进行相加,在求平均直,最后在用二重循环进行输出。
循环的用法以及在使用类型说明符 数组名[常量表达 C语言规定只有静0值。 门课。编程实现如下功能:
在这里,进行了求平均值的过二维数组要与也要与循环嵌套使5程。这里进行了二重循环输出。
第五版块:
1、函数的定义和调用
函数可分为库函数和用户定义函数两种。
(1)库函数
库函数只不需要用户自己定义的,只需要在用的时候将其调用出来用就可以了,非常方便,并且C语言有这丰富的函数库。
(2)用户定义函数
用户自己定义的函数,是属于一个自定义范畴,自己定义的函数不仅要在程序中定义函数本身, 而且在主调函数模块中还必须对该被调函数进行类型说明,然后才能使用。
2、函数参数和函数值
(1)无 参函数
函数定义、函数说明及函数调用中均不带参数。 主调函数和被调函数之间不进行参数传送。 此类函数通常用来完成一组指定的功能,可以返回或不返回函数值。
(2)有参函数
也称 为带参函数。在函数定义及函数说明时都有参数, 称为形式参数(简称为形参)。在函数调用时也必须给出参数, 称为实际参数(简称为实参)。 进行函数调用时,主调函数将把实参的值传送给形参,供被调函数使用。
(1)有返回值函数
此类函数被调用执行完后将向调用者返回一个执行结果, 称为函数返回值。由用户定义的这种要返回函数值的函数,必须在函数定义和函数说明中明确返回值的类型。
(2)无返回值函数
此类函数用于完成某项特定的处理任务, 执行完成后不向调用者返回函数值。这类函数类似于其它语言的过程。 由于函数无须返回值,用户在定义此类函数时可指定它的返回为“空类型”, 空类 型符的类型说明为“void”。
2、函数的嵌套调用和递归调用
C语言中不允许作嵌套的函数定义。因此各函数之间是平行的,不存在上一级函数和下一级函数的问题。 但是C语言允许在一个函数的定义中出现对另一个函数的调用。 这样就出现了函数的嵌套调用。即在被调函数中又调用其它函数。
这以小节内容经过几个练习题的联系,让我掌握到了其中的主要部分,对此也比较的明确。
4、局部变量和全局变量及变量的存储类别
局部变量:局部变量也称为内部变量。局部变量是在函数内作定义说明的。其作用域仅限于函数内, 离开该函数后再使用这种变量是非法的。
全局变量:全局变量也称为外部变量,它是在函数外部定义的变量。 它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。在函数中使用全局变量,一般应作全局变量说明。 只有在函数内经过说明的全局变量才能使用。全局变量的说明符为e_tern。 但在一个函数之前定义的全局变量,在该函数内使用可不再加以说明。
在C语言中,对变量的存储类型说明有以下四种:auto 自动变量 register 寄存器变量 e_tern 外部变量 static 静态变量
在局部变量中所定义的变量,只能在该函数中使用,在函数编辑时,预处理命令下定义的变量属于全局变量,在每个函数中都可以使用,传递参数时,不用传递全局变量。
在这里,我主要说的是第二个练习题,它的思想是一个加密算法。思路是:现编写一个主程序,实现函数调用,在子函数中实现加密算法并且输出。是将接收的值设置为一个全局变量。就像下面的这个例子:在这里,将所输入的值进行分解成个、十、百、千位,分别进行加密算法。
加上与第四位对调,第三位与第二位对调。在最后输出结果。 第六版块:
1、指针、指针变量的概念
指针的基本概念 在计算机中,所有的数据都是存放在存储器中的。存储器中的一个字节称为一个内存单元, 不同的数据类型所占用的内存单元数不等,如整型量占2个单元,字符量占1个单元等,绍。为了正确地访问这些内存单元, 必须为每个内存单元编上号。存单元的编号即可准确地找到该内存单元。内存单元的编号也叫做地址。 并且在使用函数在输入
除以8以后的余数,在将第一位 一般把 在第二章中已有详细的介 根据一个内
既然在这里进行加密算法,每位上的数6
根据内存单元的编号或地址就可以找到所需的内存单元,所以通常也把这个地址称为指针。“指针变量”是指取值为地址的变量
2、数组的指针
一个数组是由连续的一块内存单元组成的。 数组名就是这块连续内存单元的首地址。一个数组也是由各个数组元素(下标变量) 组成的。每个数组元素按其类型不同占有几个连续的内存单元。 一个数组元素的首地址也是指它所占有的几个内存单元的首地址。 一个指针变量既可以指向一个数组,也可以指向一个数组元素, 可把数组名或第一个元素的地址赋予它。如要使指针变量指向第i个元素可以把i元素的首地址赋予它或把数组名加3、指向字符串的指针 返回指针的函数(1)、 字符串指针变量本身是一个变量,串本身是存放在以该首地址为首的一块连续的内存空间中并以‘结束。字符数组是由于若干个数组元素组成的,它可用来存放整个字符串。(2)、 对字符数组作初始化赋值,必须采用外部类型或静态类型,串指针变量则无此限制;
(3)、对字符串指针方式 char _ps="C Language";ps="C Language";而对数组方式:static char st[]={"C Language"}char st[20]; st={"C Language"};而只能对字符数组的各元素逐个赋值。3、指针数组及指向指针的指针
指针数组的说明与使用一个数组的元素值为指针则是指针数组。是一组有序的指针的集合。 指针数组的所有元素都必须是具有相同存储类型和指向相同数据类型的指针变量。
指针数组说明的一般形式为: 类型说明符在指针这一小节,主要是用指针实现:输入数对换,把最大的数与最后一个数对换。写3个函数:输入个数。
在这里进行函数的调用,一个输入函数,一个操作函数,一个输出函数。
i赋予它。
而字符
C语言见习报告6篇
C语言见习报告怎么写?C语言是一种计算机程序设计语言,属高级语言范畴,它既具有高级语言的特点,又具有汇编语言的特点。通过见习做一报告,下面是小编为你整理的C语言见习报告6篇_C语言实习工作报告,希望对你有用!
C语言见习报告一:
班级:姓名:
实验名称:
电话订餐信息处理
实验目的:
题目要求:
一个小饭馆的生意非常红火,要想用餐必须提前一天打电话预订,假设我们是饭馆负责接受
电话预订的服务员,我们需要做些什么呢?首先,需要准备一张大小适当的白纸,等待顾客的电话。李红最先打进了电话,她预约第2天中午12点用餐,用餐人数5人,服务员在纸上做了如下记录:“李红 12点 5人”;接着,刘娜、汪涵、孙杰和赵君分别来了电话,服务员根据他们的要求做了记录,此时纸上记录的内容是:
李红 12点 5人
刘娜 11点 2人
汪涵 11点20分 3人
孙杰 10点30分 5人
赵君 13点20分 6人
孙杰随后又来电话,将用餐时间推后一个小时,那么记录的内容也应该做相应的修改。刘娜来用餐以后,可以将其信息从纸上划去
编写程序处理电话订餐的情况
实验步骤:
首先建立结构体类型,然后函数声明,编写主函数,定义函数,调用函数。完成后,对程序进行调试,确定所编写的程序是否能够运行。
实验内容:
#include
#include
#define ma_ 30
struct guest
{ intnum;
char name[40];
char time[20];
int sum;
}guestlink[ma_];
void insert(int _p);
void inquire(int);
void change(int);
void dele(int _p);
void show(int);
void main()
{ inti;
int count=0;
do
{0
printf("1.......插入\n");
printf("2.......查询\n");
printf("3.......修改\n");
printf("4.......删除\n");
printf("5.......显示\n");
printf("6.......退出\n");
scanf("%d",&i);
switch(i)
{
case 1: insert(&count);break;
case 2: inquire(count);break;
case 3: change(count);break;
case 4: dele(&count);break;
case 5: show(count);break;
case 6:break;
default:printf("输入错误!");break;
}
}while(i!=6);
}
void insert(int _p)
{ inti,number;
if(_p==ma_)
{ printf("用餐已满\n");return;}
printf("请输入编号:");
scanf("%d",&number);
for(i=0;i<_p;i++)
if(guestlink[i].num==number)
{ printf("已有相同的编号");return;}
guestlink[i].num=number;
printf("请输入姓名:");
scanf("%s",guestlink[i].name);
printf("请输入人数:");
scanf("%d",&guestlink[i].sum);
printf("请输入用餐时间:");
scanf("%s",guestlink[i].time);
(_p)++;
}
void inquire(int p)
{ inti,number,flag=1;
printf("请输入要查询的编号");
scanf("%d",&number);
for(i=0;i
if(guestlink[i].num==number)
{ printf("姓名:%s",guestlink[i].name);
printf("用餐时间:%s",guestlink[i].time);
printf("人数:%d\n",guestlink[i].sum);
flag=0;
}
if(i>=p&&flag==1) printf("所查询的编号不存在");
}
void change(int p)
{ inti,number,flag=1;
printf("请输入要修改的编号");
scanf("%d",&number);
for(i=0;i
if(guestlink[i].num==number)
{ printf("请输入姓名:");
scanf("%s",guestlink[i].name);
printf("请输入用餐时间:");
scanf("%s",guestlink[i].time);
printf("请输入人数:");
scanf("%d",&guestlink[i].sum);
flag=0;
}
if(i>=p&&flag==1) printf("所查询的编号不存在");
}
void dele(int _p)
{ inti,j,number,flag=1;
printf("请输入要删除的编号");
scanf("%d",&number);
for(i=0;i<_p&&flag;i++)
if(guestlink[i].num==number)
{for(j=i;j<_p-1;j++)
guestlink[j]=guestlink[j+1];
flag=0;
(_p)--;
}
if(i>=_p&&flag==1) printf("输入的编号不存在");
}
void show(int p)
{ inti;
printf("编号 姓名 用餐时间 人数\n ");
for(i=0;i
{ printf("%d",guestlink[i].num);
printf("%8s",guestlink[i].name);
printf("%8s",guestlink[i].time);
printf("%8d\n",guestlink[i].sum);
}
}
实验结果:
实验体会:
通过这次实践让我觉得用C语言在生活中的应用占有很大的比重,这次编程,让我体会到了学习C语言的乐趣,以及运用c语言给人们带来的方便。作为一名初学者,我了解到了计算机语言的神秘性和逻辑性,将算法与数据结构的充分结合,体现了程序的内涵,也同时展现了C语言的深度。也是因为这次实践的过程,加深了我对c语言的兴趣,也意识到学习c语言是需要耐心和细心的。只有透彻的学习,才能有熟练的运用。
C语言见习报告二:
一、实习时间:20__年_月_日—20__年_月_日
二、实习地点:第一微机室
三、实习目的:
1、熟悉我们自己所用的计算机的C语言开发环境,并且能够熟练掌握,达到错误能找到原因并且加以改正。
2、加深对课本理论知识的理解,进一步掌握书中重点、难点实例,锻炼自己的编写程序能力和实际应用能力。
3、上机调试程序的过程中,发现错误,解决错误,保证程序的正确运行,运行结果与给定结果完全相同。
4、学会用书中基本知识解决实际中的一些问题,将书本所学的内容与实际操作相结合,掌握把实际问题转变为C语言描述的算法的方法,明确思路。将自身的不足与缺陷改掉,养成良好编辑风格
5、培养我们的主观能动性、沟通、表达能力和团队合作意识,为我们以后的发展打下基础。
四、实习内容及方法:
在本次实习中,我们采用了由浅及深、由易到难的实习方法,而且也是按照书本的教学进程内容进行的,同时采取了实际应用与理论相结合的方法,在机房里面实习,一边理解,思考做题的思路与解法,另一边就可以马上进行上机实际操作。这对于我们加深对C语言的理解、操作以及动手能力都有了很大的帮助与提高。
实训的内容主要分为了七个版块:
第一版块:
1、Turbo C运行环境。
了解TC的基本环境,熟悉常用菜单项和快捷键:在这一小节中,需要熟练的掌握并应用Turbo C的运行环境,和基本配置。Turbo C是在计算机上广泛使用的一个C语言开发环境,它具有方便、直观、易用的界面和丰富的函数库。它把程序的编辑、编译、连接和运行等操作去不都集中在一个界面上进行,使用非常方便。并且Turbo C不需要特别安装,只需要将其拷贝到硬盘上就可以使用了。 为了方便管理用户的程序文件和维Turbo C2.0的运行环境,客户应在机子
上建立自己的工作目录,一边用来存放自己所需要开发的源程序文件。下面就是建立怎样自己文件夹,在空白区域内输入自己所建立的文件夹路径即可。
2、C程序的编辑、编译、连接和运行过程。
掌握C程序的运行步骤,初步了解C程序的特点。在Turbo C的运行中,快捷键使用非常方便,只需Ctrl+菜单栏中菜单名的首字母即可。
上面是一个程序编译与链接的截屏。第一个Compile to OBJ将源程序编译为OBJ文件,Make E_E file 编译连接一次进行,Link E_E file将OBJ文件连接为E_E文件。
3、VC6.0环境的熟悉,自己按照软件并在软件中能够调试简单的C语言程序。
第二版块:
1、C语言数据类型:整型、实型、字符型。
C语言的函数类型非常丰富,除了这几类以外,还有实型、数组、指针、结构体等,在这一小节中,主要了解关于数据类型的定义、用法以及他们的存储类型,一边与以后灵活运用。
C语言中还有常量与变量之分,常量是在程序执行过程中其值不变的量。二且在C语言中常量不需要类型说明就可以直接使用,常量的类型是由常量的本身隐含决定的。
2、运算符及表达式。
在C语言中,预算符非常丰富运算灵活,常用的有以下几个:
(1)算术运算符:+、-、_、/、%(取余)及++(自增)、--(自减)。
(在这里需要注意的是:“/”运算符,在C语言中两边都是整数的话,运算结果只取整数部分;“%”他的两边都必须是整数才可以运行;“__、--”运用这个运算符时要注意“先用后加(减)、先加(减)后用”的问题)
(2)赋值运算符:=及复合赋值运算符(+=、-=、_=、/=、%=等)。
(在这里需要注意的是“=、==”的区别,要明确用法及所用的地方,“=”它的作用是赋值,“==”它的作用是判断相等)
(3)逗号运算符:,(对于逗号表达式索要注意的是要明确它所用的地方以及在使用时所要注意的细节)。
了解三种运算符的优先级,掌握三种运算符及相应表达式的应用(详见附录)。
第三版块:在这一节里,我们实习了C语言的三大结构:
1、顺序结构:
2、选择结构:if??else,switch语句。
在这里许啊哟我们学习的很多,因为只要是程序,就脱离不了这个三大结构的范畴。在这个学习里我编写了
(1)、输入某年某月某日,判断这一天是这一年的第几天?。
(2)、给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
(3)、某市不同车牌的出租车3公里的起步价和计费分别为:夏利7元,3公里以外,2.1元/公里;富康8元,3公里以外,2.4元/公里;桑塔纳9元,3公里以外,2.7元/公里。编程:从键盘输入乘车的车型及行车公里数,输出应付工资。
源程序减附录;
经过这几个程序的练习,让我聊股的掌握了选择语句的用法以及精髓,同是这个用法和技巧已经深深的可在了我的脑海里,还有同过这些个程序的编写,让我对以前有的丝丝而非的地放完全通透理解,获益匪浅。
循环结构:while、do-while、for
在循环这一节里,我们主要做了以下程序:
(1)、求200-300之间所有素数,每5个换行。
(2)、猜数字游戏。规则为:输入一个0-10之间的数字,有5次猜测机会。如果输入0-4之间的数字,提示“太小了”;如果输入5-7之间的数字,提示“接近了”;如果输入9-15之间的数字,提示“太大了”;如果输入8,提示“correct!”;如果次数超过5次,提示“没有机会了,退出!”。
(3)、打印输出如下图形:(“◇”菱形)
(4)、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
提示:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。
(5)、打印输出九九乘法表。
我以前就对循环这一节里的内容就理解的比较好,现在做这些题很顺利的就做下去了,但在做的同是也会出现以写小的问题,但这个让我也更深一步的理解了循环语句的用法、思路以及其中的精华。
总的对这一节来说,使自己更神一步的理解了选择、过程中需要注意的一些细节问题。
第四版块:
1、一、二维数组的定义、引用及初始化。初始化:
一维数组:初始化赋值的一般形式为: static 式]={值,值??值}; 其中static表示是静态存储类型,态存储数组和外部存储数组才可作初始化赋值二维数组:
a.可以只对部分元素赋初值,未赋初值的元素自动取b.如对全部元素赋初值,则第一维的长度可以不给出。2、一、二维数组的应用。
在一维数组的应用中,要与循环嵌套使用,用,但是在这里,嵌套还要是循环的嵌套,因为只有这样使用才可以使程序更加简洁、简便。就像第五题:有一个班4个学生,(1)求每一门课程的平均分; (2)求每一个学生的平均分;
思路:定义一个二维数组,用二重循环输入这个数组,然后进行相加,在求平均直,最后在用二重循环进行输出。
循环的用法以及在使用类型说明符 数组名[常量表达 C语言规定只有静0值。 门课。编程实现如下功能:
在这里,进行了求平均值的过二维数组要与也要与循环嵌套使5程。这里进行了二重循环输出。
第五版块:
1、函数的定义和调用
函数可分为库函数和用户定义函数两种。
(1)库函数
库函数只不需要用户自己定义的,只需要在用的时候将其调用出来用就可以了,非常方便,并且C语言有这丰富的函数库。
(2)用户定义函数
用户自己定义的函数,是属于一个自定义范畴,自己定义的函数不仅要在程序中定义函数本身, 而且在主调函数模块中还必须对该被调函数进行类型说明,然后才能使用。
2、函数参数和函数值
(1)无 参函数
函数定义、函数说明及函数调用中均不带参数。 主调函数和被调函数之间不进行参数传送。 此类函数通常用来完成一组指定的功能,可以返回或不返回函数值。
(2)有参函数
也称 为带参函数。在函数定义及函数说明时都有参数, 称为形式参数(简称为形参)。在函数调用时也必须给出参数, 称为实际参数(简称为实参)。 进行函数调用时,主调函数将把实参的值传送给形参,供被调函数使用。
(1)有返回值函数
此类函数被调用执行完后将向调用者返回一个执行结果, 称为函数返回值。由用户定义的这种要返回函数值的函数,必须在函数定义和函数说明中明确返回值的类型。
(2)无返回值函数
此类函数用于完成某项特定的处理任务, 执行完成后不向调用者返回函数值。这类函数类似于其它语言的过程。 由于函数无须返回值,用户在定义此类函数时可指定它的返回为“空类型”, 空类 型符的类型说明为“void”。
2、函数的嵌套调用和递归调用
C语言中不允许作嵌套的函数定义。因此各函数之间是平行的,不存在上一级函数和下一级函数的问题。 但是C语言允许在一个函数的定义中出现对另一个函数的调用。 这样就出现了函数的嵌套调用。即在被调函数中又调用其它函数。
这以小节内容经过几个练习题的联系,让我掌握到了其中的主要部分,对此也比较的明确。
4、局部变量和全局变量及变量的存储类别
局部变量:局部变量也称为内部变量。局部变量是在函数内作定义说明的。其作用域仅限于函数内, 离开该函数后再使用这种变量是非法的。
全局变量:全局变量也称为外部变量,它是在函数外部定义的变量。 它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。在函数中使用全局变量,一般应作全局变量说明。 只有在函数内经过说明的全局变量才能使用。全局变量的说明符为e_tern。 但在一个函数之前定义的全局变量,在该函数内使用可不再加以说明。
在C语言中,对变量的存储类型说明有以下四种:auto 自动变量 register 寄存器变量 e_tern 外部变量 static 静态变量
在局部变量中所定义的变量,只能在该函数中使用,在函数编辑时,预处理命令下定义的变量属于全局变量,在每个函数中都可以使用,传递参数时,不用传递全局变量。
在这里,我主要说的是第二个练习题,它的思想是一个加密算法。思路是:现编写一个主程序,实现函数调用,在子函数中实现加密算法并且输出。是将接收的值设置为一个全局变量。就像下面的这个例子:在这里,将所输入的值进行分解成个、十、百、千位,分别进行加密算法。
加上与第四位对调,第三位与第二位对调。在最后输出结果。 第六版块:
1、指针、指针变量的概念
指针的基本概念 在计算机中,所有的数据都是存放在存储器中的。存储器中的一个字节称为一个内存单元, 不同的数据类型所占用的内存单元数不等,如整型量占2个单元,字符量占1个单元等,绍。为了正确地访问这些内存单元, 必须为每个内存单元编上号。存单元的编号即可准确地找到该内存单元。内存单元的编号也叫做地址。 并且在使用函数在输入
除以8以后的余数,在将第一位 一般把 在第二章中已有详细的介 根据一个内
既然在这里进行加密算法,每位上的数6
根据内存单元的编号或地址就可以找到所需的内存单元,所以通常也把这个地址称为指针。“指针变量”是指取值为地址的变量
2、数组的指针
一个数组是由连续的一块内存单元组成的。 数组名就是这块连续内存单元的首地址。一个数组也是由各个数组元素(下标变量) 组成的。每个数组元素按其类型不同占有几个连续的内存单元。 一个数组元素的首地址也是指它所占有的几个内存单元的首地址。 一个指针变量既可以指向一个数组,也可以指向一个数组元素, 可把数组名或第一个元素的地址赋予它。如要使指针变量指向第i个元素可以把i元素的首地址赋予它或把数组名加3、指向字符串的指针 返回指针的函数(1)、 字符串指针变量本身是一个变量,串本身是存放在以该首地址为首的一块连续的内存空间中并以‘结束。字符数组是由于若干个数组元素组成的,它可用来存放整个字符串。(2)、 对字符数组作初始化赋值,必须采用外部类型或静态类型,串指针变量则无此限制;
(3)、对字符串指针方式 char _ps="C Language";ps="C Language";而对数组方式:static char st[]={"C Language"}char st[20]; st={"C Language"};而只能对字符数组的各元素逐个赋值。3、指针数组及指向指针的指针
指针数组的说明与使用一个数组的元素值为指针则是指针数组。是一组有序的指针的集合。 指针数组的所有元素都必须是具有相同存储类型和指向相同数据类型的指针变量。
指针数组说明的一般形式为: 类型说明符在指针这一小节,主要是用指针实现:输入数对换,把最大的数与最后一个数对换。写3个函数:输入个数。
在这里进行函数的调用,一个输入函数,一个操作函数,一个输出函数。
i赋予它。
而字符\0’作为串的
而对字符可以写为: char _ps; 不能写为:
指针数组_数组名[数组长度]
10个整数,将其中最小的数与第一个
10个数;进行处理;输出10
用于存放字符串的首地址。在这里用数组实现了输入。
在这里用指针实现了将最小的数与第一个数对换,
把最大的数与最后一个数对换。
在最后进行输出。 第七版块:
实训七属于一个综合类型的题目,他要求的比较高,必须在自己王权理解通透了课本知识以后才有可能理解这道题,并且进行修改完善。主要这道题本身是在VC环境下运行的,将其移植到Turbo C环境下运行,这其中牵扯到一些语法不同,在Turbo C中不可以运行,要进行慢慢调试。经过不懈的努力、修改,终于将其成功的在Turbo C环境下可以正常运行了。(详见附录)
五、结论 收获
我的收获:在本次实习中,我学到了很多实际有用的东西,而且基本上都是在课本上学不到的,并且也在实习中梳理了自己对C语言这门课程所学的所有内容,让自己对C这门课程有了更进一步的认识,有了一个良好的基础,为自己的以后打下了坚实基础。从开头到现在,所有的内容实习完了,上机实验是学习程序设计语言必不可少的实践环节,在 C语言灵活、简洁中,更需要通过编程的实践来真正掌握它。
历时4天的《C语言程序设计》已经结束了,在这几天编程的过程中感触颇多,实训编程的同时暴露出了许多我自身存在的问题,同时也对自身有了很大的提高。
首先,对我以前做题做事非常马虎的毛病有了很大的改进,通过在这几天编程的过程中的锻炼,我现在做题比以前仔细多了,会小心翼翼地去看每一个地方,会仔细地检查程序的每一个字母、标点,以及每个可能出错的地方,更会特别仔细,生怕自己一不小心搞错了,而导致整个程序都无法运行。
其次,在编程的过程当中弥补了我许多知识上的缺陷,弄清楚了我不懂的地方和似是而非的地方,使我及时补上了欠缺,为自己以后的人生道路打下了良好基础,同时也让我对每一件事都有了一个好的心态去对待它,更让自己在编写程序的过程中每时每刻都处于充足的状态。
再次,通过几天综合实训编程使我的知识形成了一个完整的框架结构,而不再是零散的知识个体,使我在使用时更加的方便,更加灵活,以前有好多题目要写十行八行的,还有些地方弄得不是太懂,现在只需要五六行就可以搞定,而且还对于思路特别清晰、明确。
第四,在实习结束后,我对做完的习题检查比再是一切的走马观花,而是仔细核对、认真检查,和以前相比明显改善了好多,以前自己对于检查程序总是没有耐心,不好好检查,有问题总是找老师,相对于实习之后来说,有了很大的改善,自己不但可以坐下来耐心检查,还能够自己将程序调试成功,这对于现在的我来说是一个明显的进步。
第五,通过实习改变了我做题时心烦气燥的习惯,现在做题可以平和静气的完成。
第六,通过实习我的自制能力更强了,基本完全可以控制自己,避免外界的干扰,安心地完成自己的工作。
第七,在学习过程中,由于天气炎热,心里烦躁,同时也是每天都盯着频幕看,脑袋都看大了,但是我却一直坚持了下来,这对于我来说,也是一个非常好的习惯。这同时也是我的一个收获。
第八,实训过程中,充分发挥团队协作精神,共同进步,帮助同学顺利完成实训课程,有困难一起解决,同时也使我在他们身上学到了很多东西。
总之,通过实习使我自身的知识体系得到巩固、提高以及使团队工作的能力得到锻炼。
不足
我的不足:
首先,我的第一个,同时也是一个最大的缺点,自己对于理论知识掌握的还不是很通透,理解的不够彻底,对于一些问题似似而非,给自己编写程序的过程中带来了很大的麻烦。
其次,我不能够精心的去完成每一个程序,对于每个程序而言,都是马马虎虎,只要运行结果是对的,那就可以了。虽然我自己也知道这样是不好的,但是自己就是不愿意去改,在经过实习之后虽然有所改善,但在我看来,改进的不是很大。
第三,自己做题时还有些马虎,一些小的细节在编写程序过程中不注意,只有在编译连接是才可以发现、对其进行修改,对于一些小程序还不能实现一次就可以完成编译连接。
第四,做题时自己不能心平气和的去做。
第五,自己的子宅里不够强,不能持之以恒的坐在自己的座位上编写程序,
歇一会就要起来转转。
六、致谢
在此,我仅代表我自己,对老师您致以崇高的敬意和深深的感谢,没有您,就没有我那么多的收获,您不辞辛苦,在这炎热天气里,放弃您的休息时间来为我们辅导,在辅导过程中,您更是尽心尽力,从来没有少过一节课,更没有过迟到早退,对我们是全程陪同,在我们实习中随时出现问题,随时解决。只要发现问题,您从来没有说是不管过,从来没有烦躁过,对我们提出的问题,也是耐心解决,一边不懂,接着再讲一边,脸庞流下的汗水,您却从来没有在意过。对我们泥更是不计报酬的为我们服务,让我们有一个好的学习环境,不用为自己遇到问题而烦恼,在这里我想对您说一声:老师,您辛苦了!请接受您的学子的深深谢意与感激。
在这里,也对学校表示由衷的谢意,感谢学校为我们提供了良好的实习环境,让我们在这炎热的天气里,能够舒爽的坐在教室里实习,而不用操心任何问题,在这里,对我们学校表示谢意。
C语言见习报告三:
1.课程设计目的
了解基于C语言的软件开发基本过程与方法,熟悉结构化程序设计的基本方法,了解计算机工作模式,掌握开发一个小型实用系统的基本方法,学会调试一个较长程序的基本方法,养成良好的程序设计习惯和严谨的工作态度,初步获得应用编写C语言程序来解决实际问题的能力。
2.问题需求分析
根据题目要求,由于要录入、读取、保存学生成绩信息,因而要实现文件的输入和输出功能;要求用户可以查询各个学生的成绩,并且可以添加学生成绩信息等,因而要提供查找和添加功能;另外,还应提供键盘式选择菜单以实现功能选择。
3.系统设计
3.1数据结构
由于该系统涉及多个学生的成绩存储,因此,定义一个数据结构,用于存储这些信息。现仅对学生英语成绩、数学成绩、C语言成绩进行统计管理。 建立以下数据结构:
typedef struct student
{
int no; //存储学生学号 char name[MA__NAME]; //存储学生姓名 double english; //存储学生英语成绩 double math; //存储学生数学成绩 double Programming; //存储学生C语言成绩 double mark_ave; //平均成绩 double mark_tot; //总成绩
} STUDENT;
3.2总体软件框架
3.3程序模块设计
将学生成绩管理系统划分为以下几个模块:
1、显示菜单模块:用void paint()来实现
2、输入初始的学生信息:输入信息包括学生的姓名、学号以及学生的成绩等相关信息;用函数void input(STUDENT _data, int _len)来实现此操作。
3、成绩输出模块:输出学生的信息以及成绩,用函数void output(STUDENT _data, int len)来实现:通过学生的姓名来查看学生的相关成绩。
4、排序模块:用函数void sort(STUDENT _data, int len)来实现
5、成绩查询模块:用void find(STUDENT _data, int len) 来实现,找到就输出此学生全部信息。
6、插入模块:用函数void insert(STUDENT _data, int _len)来实现,插入到合适的位置。
7、保存文件:用函数void save(STUDENT _data, int len)来实现,将信息保存到文件中,再关闭文件。
8、主函数:使用switch条件语句调用主菜单函数,选择菜单中要选择对象来执行不同的模块。
4.编程实现
4.1
4.2将输入的所有学生成绩输出
4.3成绩排序模块【流程图】
4.4成绩查询模块:【流程图】
4.5成绩插入模块
4.6成绩保存模块
将所有学生的成绩信息保存到成绩统计表.t_t中
4.7主函数【流程图】
5.系统测试
运行开始:
选择1输入成绩:
选择2输出成绩:
选择3按平均分排序:
选择4查找(输入学号1):
选择5插入新数据:
选择6保存:
选择0退出
6.实习总结
课程设计是培养学生综合运用所学知识 ,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C语言又是最常见,功能最强大的一种高级语言,因此做好C语言课程设计是十分必要的。 回顾起此次课程设计,至今我们仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在这几天里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到许多问题,可以说得是困难重重。这毕竟是第一次做,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固。通过这次课程设计之后,我们把前面所学过的知识又重新温故了一遍。 通过学习《C语言课程设计》使我了解到C语言是一门实践性很强的课程,以及C语言的基本语法规则.程序设计.以及解题的全过程,加深对C语言的了解,得到程序设计的基本方法和技巧的训练,从而更加深一步的对知识的了解,真正能使C语言这个强有力的编程工具去解决实际问题。
7.附:关键源程序
#include
#include
#include
#define MA_N 35
#define MA__NAME 256
typedef struct student //学生信息
{
int no;
char name[MA__NAME];
double english;
double math;
double Programming;
double mark_ave;
double mark_tot;
} STUDENT;
/_---------------显示信息子程序------------_/
void paint()
{
int i;
system("cls");
printf("%55s\n", "中国地质大学(武汉)学生成绩管理系统\n");
for (i=0; i<80;i++)
putchar('=');
putchar('\n');
printf(" 1 输入信息 2 输出信息\n");
printf(" 3 按平均分排序 4 按学号查找\n");
printf(" 5 插入 6 保存到文件\n");
printf(" 0 退出\n");
for (i=0;i<=79;i++)
putchar('=');
putchar('\n');
printf("%s\n", "请输入各操作对应的序号:");
}
/_-----------输入信息子程序---------_/
void input(STUDENT _data, int _len)
{
int no;
putchar('\n');
printf("%s\n", "请输入新的记录,如果需要退出当前菜单请输入-1.");
printf("%s\n", "格式:\n");
printf("%s\n", "学号 姓名 英语 数学 C语言");
putchar('\n');
scanf("%d", &no);
while(no != -1)
{
data[_len].no = no;
scanf("%s %lf %lf %lf", data[_len].name, &data[_len].english, &data[_len].math,&data[_len].Programming);
data[_len].mark_ave=(data[_len].english+data[_len].math+data[_len].Programming)/3.0;
data[_len].mark_tot=data[_len].english+data[_len].math+data[_len].Programming;
(_len)++;
scanf("%d", &no);
}
}
/_---------------输出信息子程序---------------_/
void output(STUDENT _data, int len)
{
int i;
system("cls");
printf("%8s", "学号");
printf("%8s", "姓名");
printf("%8s", "英语");
printf("%8s", "数学");
printf("%10s", "C语言");
printf("%12s", "平均分");
printf("%10s", "总分");
putchar('\n');
for (i =0; i < 80; i++)
putchar('=');
putchar('\n');
for (i = 0; i< len; i++)
{
printf("%8d", data[i].no);
printf("%8s", data[i].name);
printf("%8.1lf", data[i].english);
printf("%8.1lf", data[i].math);
printf("%10.1lf", data[i].Programming);
printf("%12.1lf", data[i].mark_ave);
printf("%10.1lf", data[i].mark_tot);
putchar('\n');
}
for (i =0; i < 80; i++)
putchar('=');
putchar('\n');
printf("按回车键继续.");
getchar(); /_存储enter_/ getchar(); /_存储输入内容_/ }
/_--------------排序子程序------------_/
void sort(STUDENT _data, int len)
{
int i,j,k;
STUDENT temp;
for (i=0; i
{
for (k=i, j=i+1; j
if (data[k].mark_ave > data[j].mark_ave) k=j; if (k != i)
{
temp = data[i];
data[i] = data[k];
data[k] = temp;
}
}
printf("%s\n", "下面显示排序结果,如果需要退出当前菜单请输入 -1."); for(i=0;i
{
printf("%8d", data[i].no);
printf("%8s", data[i].name);
printf("%8.1lf", data[i].english);
printf("%8.1lf", data[i].math);
printf("%10.1lf", data[i].Programming);
printf("%12.1lf", data[i].mark_ave);
printf("%10.1lf", data[i].mark_tot);
putchar('\n');
}
int no=1;
while(no!=-1)
{
scanf("%d",&no);
}
}
/_--------------------查找子程序-----------------------_/
void find(STUDENT _data, int len)
{
int find_no, result;
int i;
int inde_=1;
while(inde_==1)
{
result=0;
printf("%s\n", "请输入需要查找的学生的学号,退出当前菜单请输入 -1.");
scanf("%d", &find_no);
if (find_no == -1) return; /_e_it the fine sub program_/ while( data[result].no != find_no && result < len) result ++; if (result >= len )
{
printf("%s\n", "未查询到相关信息");
inde_=1;
continue;
}
else
{
system("cls");
printf("%s\n", "查询信息如下:");
for (i =0; i < 80; i++)
putchar('=');
putchar('\n');
printf("%8s", "学号");
printf("%8s", "姓名");
printf("%8s", "英语");
printf("%8s", "数学");
printf("%10s", "C语言");
printf("%12s", "平均分");
printf("%10s", "总分");
putchar('\n');
printf("%8d", data[result].no);
printf("%8s", data[result].name);
printf("%8.1lf", data[result].english);
printf("%8.1lf", data[result].math);
printf("%10.1lf", data[result].Programming);
printf("%12.1lf", data[result].mark_ave);
printf("%10.1lf", data[result].mark_tot);
putchar('\n');
for (i =0; i < 80; i++)
putchar('=');
putchar('\n');
inde_=1;
continue;
}
inde_=0;
}
}
/_-----------------插入子程序-------------_/
void insert(STUDENT _data, int _len)
{
int no, pos;
double english, math, Programming, mark_ave, mark_tot;
int i;
char name[MA__NAME];
while(1)
{
printf("%s\n", "输入新的记录,退出当前菜单请输入-1."); printf("%s\n", "格式:");
printf("%s\n", " 学号 姓名 英语 数学 C语言"); scanf("%d", &no);
if (no == -1) return; /_e_it_/ data[_len].no = no;
scanf("%s %lf %lf %lf", name, &english, &math, &Programming);
mark_ave=(english+math+Programming)/3.0;
mark_tot=english+math+Programming;
pos = 0;
while ((data[pos].mark_ave < mark_ave) && (pos < _len) ) pos ++;
for (i = _len-1; i >= pos; i--)
data[i+1] = data[i];
data[pos].no = no;
strcpy(data[pos].name, name);
data[pos].english = english;
data[pos].math = math;
data[pos].Programming = Programming;
data[pos].mark_ave = mark_ave;
data[pos].mark_tot = mark_tot;
(_len)++;
}
}
void save(STUDENT _data, int len)//将数据保存到文件
{
int i;
FILE _fp;
fp=fopen("成绩统计表.t_t","w");
fprintf(fp,"%8s", "学号");
fprintf(fp,"%8s", "姓名");
fprintf(fp,"%8s", "英语");
fprintf(fp,"%8s", "数学");
fprintf(fp,"%10s", "C语言");
fprintf(fp,"%12s", "平均分");
fprintf(fp,"%10s\n", "总分");
fprintf(fp,"========================================================================\n");
putchar('\n');
for (i = 0; i< len; i++)
{
fprintf(fp,"%8d", data[i].no);
fprintf(fp,"%8s", data[i].name);
fprintf(fp,"%8.1lf", data[i].english);
fprintf(fp,"%8.1lf", data[i].math);
fprintf(fp,"%10.1lf", data[i].Programming);
fprintf(fp,"%12.1lf", data[i].mark_ave);
fprintf(fp,"%10.1lf\n", data[i].mark_tot);
}
fprintf(fp,"========================================================================\n");
fclose(fp);
printf("文件已保存到\"成绩统计表.t_t\"");
getchar();
getchar();
}
/_-----------主程序--------------_/
void main()
{
STUDENT data[MA_N];
int len = 0;
char sele;
paint();
scanf("%c", &sele);
while (sele != '0')
{
switch(sele)
{
case '1':
input(data, &len);
break;
case '2':
output(data, len);
break;
case '3':
sort(data, len);
break;
case '4':
find(data, len);
break;
case '5':
insert(data, &len);
break;
case '6':
save(data, len);
break;
default:
if (sele != '\n') printf("%s\n", "
break;
}
if (sele != '\n') paint();
scanf("%c", &sele);
} 输入错误!");
}
而对字符可以写为: char _ps; 不能写为:
指针数组_数组名[数组长度]
10个整数,将其中最小的数与第一个
10个数;进行处理;输出10
用于存放字符串的首地址。在这里用数组实现了输入。
在这里用指针实现了将最小的数与第一个数对换,
把最大的数与最后一个数对换。
在最后进行输出。 第七版块:
实训七属于一个综合类型的题目,他要求的比较高,必须在自己王权理解通透了课本知识以后才有可能理解这道题,并且进行修改完善。主要这道题本身是在VC环境下运行的,将其移植到Turbo C环境下运行,这其中牵扯到一些语法不同,在Turbo C中不可以运行,要进行慢慢调试。经过不懈的努力、修改,终于将其成功的在Turbo C环境下可以正常运行了。(详见附录)
五、结论 收获
我的收获:在本次实习中,我学到了很多实际有用的东西,而且基本上都是在课本上学不到的,并且也在实习中梳理了自己对C语言这门课程所学的所有内容,让自己对C这门课程有了更进一步的认识,有了一个良好的基础,为自己的以后打下了坚实基础。从开头到现在,所有的内容实习完了,上机实验是学习程序设计语言必不可少的实践环节,在 C语言灵活、简洁中,更需要通过编程的实践来真正掌握它。
历时4天的《C语言程序设计》已经结束了,在这几天编程的过程中感触颇多,实训编程的同时暴露出了许多我自身存在的问题,同时也对自身有了很大的提高。
首先,对我以前做题做事非常马虎的毛病有了很大的改进,通过在这几天编程的过程中的锻炼,我现在做题比以前仔细多了,会小心翼翼地去看每一个地方,会仔细地检查程序的每一个字母、标点,以及每个可能出错的地方,更会特别仔细,生怕自己一不小心搞错了,而导致整个程序都无法运行。
其次,在编程的过程当中弥补了我许多知识上的缺陷,弄清楚了我不懂的地方和似是而非的地方,使我及时补上了欠缺,为自己以后的人生道路打下了良好基础,同时也让我对每一件事都有了一个好的心态去对待它,更让自己在编写程序的过程中每时每刻都处于充足的状态。
再次,通过几天综合实训编程使我的知识形成了一个完整的框架结构,而不再是零散的知识个体,使我在使用时更加的方便,更加灵活,以前有好多题目要写十行八行的,还有些地方弄得不是太懂,现在只需要五六行就可以搞定,而且还对于思路特别清晰、明确。
第四,在实习结束后,我对做完的习题检查比再是一切的走马观花,而是仔细核对、认真检查,和以前相比明显改善了好多,以前自己对于检查程序总是没有耐心,不好好检查,有问题总是找老师,相对于实习之后来说,有了很大的改善,自己不但可以坐下来耐心检查,还能够自己将程序调试成功,这对于现在的我来说是一个明显的进步。
第五,通过实习改变了我做题时心烦气燥的习惯,现在做题可以平和静气的完成。
第六,通过实习我的自制能力更强了,基本完全可以控制自己,避免外界的干扰,安心地完成自己的工作。
第七,在学习过程中,由于天气炎热,心里烦躁,同时也是每天都盯着频幕看,脑袋都看大了,但是我却一直坚持了下来,这对于我来说,也是一个非常好的习惯。这同时也是我的一个收获。
第八,实训过程中,充分发挥团队协作精神,共同进步,帮助同学顺利完成实训课程,有困难一起解决,同时也使我在他们身上学到了很多东西。
总之,通过实习使我自身的知识体系得到巩固、提高以及使团队工作的能力得到锻炼。
不足
我的不足:
首先,我的第一个,同时也是一个最大的缺点,自己对于理论知识掌握的还不是很通透,理解的不够彻底,对于一些问题似似而非,给自己编写程序的过程中带来了很大的麻烦。
其次,我不能够精心的去完成每一个程序,对于每个程序而言,都是马马虎虎,只要运行结果是对的,那就可以了。虽然我自己也知道这样是不好的,但是自己就是不愿意去改,在经过实习之后虽然有所改善,但在我看来,改进的不是很大。
第三,自己做题时还有些马虎,一些小的细节在编写程序过程中不注意,只有在编译连接是才可以发现、对其进行修改,对于一些小程序还不能实现一次就可以完成编译连接。
第四,做题时自己不能心平气和的去做。
第五,自己的子宅里不够强,不能持之以恒的坐在自己的座位上编写程序,
歇一会就要起来转转。
六、致谢
在此,我仅代表我自己,对老师您致以崇高的敬意和深深的感谢,没有您,就没有我那么多的收获,您不辞辛苦,在这炎热天气里,放弃您的休息时间来为我们辅导,在辅导过程中,您更是尽心尽力,从来没有少过一节课,更没有过迟到早退,对我们是全程陪同,在我们实习中随时出现问题,随时解决。只要发现问题,您从来没有说是不管过,从来没有烦躁过,对我们提出的问题,也是耐心解决,一边不懂,接着再讲一边,脸庞流下的汗水,您却从来没有在意过。对我们泥更是不计报酬的为我们服务,让我们有一个好的学习环境,不用为自己遇到问题而烦恼,在这里我想对您说一声:老师,您辛苦了!请接受您的学子的深深谢意与感激。
在这里,也对学校表示由衷的谢意,感谢学校为我们提供了良好的实习环境,让我们在这炎热的天气里,能够舒爽的坐在教室里实习,而不用操心任何问题,在这里,对我们学校表示谢意。
C语言见习报告三:
1.课程设计目的
了解基于C语言的软件开发基本过程与方法,熟悉结构化程序设计的基本方法,了解计算机工作模式,掌握开发一个小型实用系统的基本方法,学会调试一个较长程序的基本方法,养成良好的程序设计习惯和严谨的工作态度,初步获得应用编写C语言程序来解决实际问题的能力。
2.问题需求分析
根据题目要求,由于要录入、读取、保存学生成绩信息,因而要实现文件的输入和输出功能;要求用户可以查询各个学生的成绩,并且可以添加学生成绩信息等,因而要提供查找和添加功能;另外,还应提供键盘式选择菜单以实现功能选择。
3.系统设计
3.1数据结构
由于该系统涉及多个学生的成绩存储,因此,定义一个数据结构,用于存储这些信息。现仅对学生英语成绩、数学成绩、C语言成绩进行统计管理。 建立以下数据结构:
typedef struct student
{
int no; //存储学生学号 char name[MA__NAME]; //存储学生姓名 double english; //存储学生英语成绩 double math; //存储学生数学成绩 double Programming; //存储学生C语言成绩 double mark_ave; //平均成绩 double mark_tot; //总成绩
} STUDENT;
3.2总体软件框架
3.3程序模块设计
将学生成绩管理系统划分为以下几个模块:
1、显示菜单模块:用void paint()来实现
2、输入初始的学生信息:输入信息包括学生的姓名、学号以及学生的成绩等相关信息;用函数void input(STUDENT _data, int _len)来实现此操作。
3、成绩输出模块:输出学生的信息以及成绩,用函数void output(STUDENT _data, int len)来实现:通过学生的姓名来查看学生的相关成绩。
4、排序模块:用函数void sort(STUDENT _data, int len)来实现
5、成绩查询模块:用void find(STUDENT _data, int len) 来实现,找到就输出此学生全部信息。
6、插入模块:用函数void insert(STUDENT _data, int _len)来实现,插入到合适的位置。
7、保存文件:用函数void save(STUDENT _data, int len)来实现,将信息保存到文件中,再关闭文件。
8、主函数:使用switch条件语句调用主菜单函数,选择菜单中要选择对象来执行不同的模块。
4.编程实现
4.1
4.2将输入的所有学生成绩输出
4.3成绩排序模块【流程图】
4.4成绩查询模块:【流程图】
4.5成绩插入模块
4.6成绩保存模块
将所有学生的成绩信息保存到成绩统计表.t_t中
4.7主函数【流程图】
5.系统测试
运行开始:
选择1输入成绩:
选择2输出成绩:
选择3按平均分排序:
选择4查找(输入学号1):
选择5插入新数据:
选择6保存:
选择0退出
6.实习总结
课程设计是培养学生综合运用所学知识 ,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C语言又是最常见,功能最强大的一种高级语言,因此做好C语言课程设计是十分必要的。 回顾起此次课程设计,至今我们仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在这几天里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到许多问题,可以说得是困难重重。这毕竟是第一次做,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固。通过这次课程设计之后,我们把前面所学过的知识又重新温故了一遍。 通过学习《C语言课程设计》使我了解到C语言是一门实践性很强的课程,以及C语言的基本语法规则.程序设计.以及解题的全过程,加深对C语言的了解,得到程序设计的基本方法和技巧的训练,从而更加深一步的对知识的了解,真正能使C语言这个强有力的编程工具去解决实际问题。
7.附:关键源程序
#include
#include
#include
#define MA_N 35
#define MA__NAME 256
typedef struct student //学生信息
{
int no;
char name[MA__NAME];
double english;
double math;
double Programming;
double mark_ave;
double mark_tot;
} STUDENT;
/_---------------显示信息子程序------------_/
void paint()
{
int i;
system("cls");
printf("%55s\n", "中国地质大学(武汉)学生成绩管理系统\n");
for (i=0; i<80;i++)
putchar('=');
putchar('\n');
printf(" 1 输入信息 2 输出信息\n");
printf(" 3 按平均分排序 4 按学号查找\n");
printf(" 5 插入 6 保存到文件\n");
printf(" 0 退出\n");
for (i=0;i<=79;i++)
putchar('=');
putchar('\n');
printf("%s\n", "请输入各操作对应的序号:");
}
/_-----------输入信息子程序---------_/
void input(STUDENT _data, int _len)
{
int no;
putchar('\n');
printf("%s\n", "请输入新的记录,如果需要退出当前菜单请输入-1.");
printf("%s\n", "格式:\n");
printf("%s\n", "学号 姓名 英语 数学 C语言");
putchar('\n');
scanf("%d", &no);
while(no != -1)
{
data[_len].no = no;
scanf("%s %lf %lf %lf", data[_len].name, &data[_len].english, &data[_len].math,&data[_len].Programming);
data[_len].mark_ave=(data[_len].english+data[_len].math+data[_len].Programming)/3.0;
data[_len].mark_tot=data[_len].english+data[_len].math+data[_len].Programming;
(_len)++;
scanf("%d", &no);
}
}
/_---------------输出信息子程序---------------_/
void output(STUDENT _data, int len)
{
int i;
system("cls");
printf("%8s", "学号");
printf("%8s", "姓名");
printf("%8s", "英语");
printf("%8s", "数学");
printf("%10s", "C语言");
printf("%12s", "平均分");
printf("%10s", "总分");
putchar('\n');
for (i =0; i < 80; i++)
putchar('=');
putchar('\n');
for (i = 0; i< len; i++)
{
printf("%8d", data[i].no);
printf("%8s", data[i].name);
printf("%8.1lf", data[i].english);
printf("%8.1lf", data[i].math);
printf("%10.1lf", data[i].Programming);
printf("%12.1lf", data[i].mark_ave);
printf("%10.1lf", data[i].mark_tot);
putchar('\n');
}
for (i =0; i < 80; i++)
putchar('=');
putchar('\n');
printf("按回车键继续.");
getchar(); /_存储enter_/ getchar(); /_存储输入内容_/ }
/_--------------排序子程序------------_/
void sort(STUDENT _data, int len)
{
int i,j,k;
STUDENT temp;
for (i=0; i
{
for (k=i, j=i+1; j
if (data[k].mark_ave > data[j].mark_ave) k=j; if (k != i)
{
temp = data[i];
data[i] = data[k];
data[k] = temp;
}
}
printf("%s\n", "下面显示排序结果,如果需要退出当前菜单请输入 -1."); for(i=0;i
{
printf("%8d", data[i].no);
printf("%8s", data[i].name);
printf("%8.1lf", data[i].english);
printf("%8.1lf", data[i].math);
printf("%10.1lf", data[i].Programming);
printf("%12.1lf", data[i].mark_ave);
printf("%10.1lf", data[i].mark_tot);
putchar('\n');
}
int no=1;
while(no!=-1)
{
scanf("%d",&no);
}
}
/_--------------------查找子程序-----------------------_/
void find(STUDENT _data, int len)
{
int find_no, result;
int i;
int inde_=1;
while(inde_==1)
{
result=0;
printf("%s\n", "请输入需要查找的学生的学号,退出当前菜单请输入 -1.");
scanf("%d", &find_no);
if (find_no == -1) return; /_e_it the fine sub program_/ while( data[result].no != find_no && result < len) result ++; if (result >= len )
{
printf("%s\n", "未查询到相关信息");
inde_=1;
continue;
}
else
{
system("cls");
printf("%s\n", "查询信息如下:");
for (i =0; i < 80; i++)
putchar('=');
putchar('\n');
printf("%8s", "学号");
printf("%8s", "姓名");
printf("%8s", "英语");
printf("%8s", "数学");
printf("%10s", "C语言");
printf("%12s", "平均分");
printf("%10s", "总分");
putchar('\n');
printf("%8d", data[result].no);
printf("%8s", data[result].name);
printf("%8.1lf", data[result].english);
printf("%8.1lf", data[result].math);
printf("%10.1lf", data[result].Programming);
printf("%12.1lf", data[result].mark_ave);
printf("%10.1lf", data[result].mark_tot);
putchar('\n');
for (i =0; i < 80; i++)
putchar('=');
putchar('\n');
inde_=1;
continue;
}
inde_=0;
}
}
/_-----------------插入子程序-------------_/
void insert(STUDENT _data, int _len)
{
int no, pos;
double english, math, Programming, mark_ave, mark_tot;
int i;
char name[MA__NAME];
while(1)
{
printf("%s\n", "输入新的记录,退出当前菜单请输入-1."); printf("%s\n", "格式:");
printf("%s\n", " 学号 姓名 英语 数学 C语言"); scanf("%d", &no);
if (no == -1) return; /_e_it_/ data[_len].no = no;
scanf("%s %lf %lf %lf", name, &english, &math, &Programming);
mark_ave=(english+math+Programming)/3.0;
mark_tot=english+math+Programming;
pos = 0;
while ((data[pos].mark_ave < mark_ave) && (pos < _len) ) pos ++;
for (i = _len-1; i >= pos; i--)
data[i+1] = data[i];
data[pos].no = no;
strcpy(data[pos].name, name);
data[pos].english = english;
data[pos].math = math;
data[pos].Programming = Programming;
data[pos].mark_ave = mark_ave;
data[pos].mark_tot = mark_tot;
(_len)++;
}
}
void save(STUDENT _data, int len)//将数据保存到文件
{
int i;
FILE _fp;
fp=fopen("成绩统计表.t_t","w");
fprintf(fp,"%8s", "学号");
fprintf(fp,"%8s", "姓名");
fprintf(fp,"%8s", "英语");
fprintf(fp,"%8s", "数学");
fprintf(fp,"%10s", "C语言");
fprintf(fp,"%12s", "平均分");
fprintf(fp,"%10s\n", "总分");
fprintf(fp,"========================================================================\n");
putchar('\n');
for (i = 0; i< len; i++)
{
fprintf(fp,"%8d", data[i].no);
fprintf(fp,"%8s", data[i].name);
fprintf(fp,"%8.1lf", data[i].english);
fprintf(fp,"%8.1lf", data[i].math);
fprintf(fp,"%10.1lf", data[i].Programming);
fprintf(fp,"%12.1lf", data[i].mark_ave);
fprintf(fp,"%10.1lf\n", data[i].mark_tot);
}
fprintf(fp,"========================================================================\n");
fclose(fp);
printf("文件已保存到\"成绩统计表.t_t\"");
getchar();
getchar();
}
/_-----------主程序--------------_/
void main()
{
STUDENT data[MA_N];
int len = 0;
char sele;
paint();
scanf("%c", &sele);
while (sele != '0')
{
switch(sele)
{
case '1':
input(data, &len);
break;
case '2':
output(data, len);
break;
case '3':
sort(data, len);
break;
case '4':
find(data, len);
break;
case '5':
insert(data, &len);
break;
case '6':
save(data, len);
break;
default:
if (sele != '\n') printf("%s\n", "
break;
}
if (sele != '\n') paint();
scanf("%c", &sele);
} 输入错误!");
}