新疆农业职业技术学院
《C语言程序设计》
教学实习报告
部 门: 信息技术分院
专 业: 计算机网络技术 班 级: 2010高职网络2班 姓 名:雷浩
指导教师: 徐玉莲
《C语言程序设计》教学实习报告
班
一、实习时间: 2010 年 12 月 27 日至 2010 年 12 月 30 日
二、实习地点:图书馆机房
三、实习目的(小4宋体,约150字 ,行距:1.25倍)
巩固C语言知识,掌握重点难点,给完整的时间去做比较难的程序设计题,增强对上机环境的熟练程度,了解C和C++环境,锻炼独立思考的能力,完善自己程序的能力。培养了动手能力,解决实际生活中问题,将C程序和实际问题联系起来,增加了学习C语言的乐趣。还使自己有认真态度,在考虑问题方面也细心了不少。通过分小组的方式,相互讨论,共同完成,培养了我们的团队合作意识,通过在实习的过程中了解到自己的不足之处。 1、熟悉所使用的计算机系统的操作方法,了解、熟悉c语言的程序开发环境。
2、加深对课本中所讲授的理论知识的理解,进一步掌握书中重点、难点实例的编写和应用。
3、学会上机调试程序,发现并排除程序中的错误,保证程序的正确运行。
4、学会使用书中基本知识解决实际中的一些问题,掌握把实际问题转变为c语言描述的算法的方法。
5、培养学生的主观能动性、沟通表达能力和团队合作意识。
四、实习内容及方法(小4宋体,高职约3000字,中职约1500字,含源码)
实训一:
涉及的知识点是关于熟悉C上机环境,在这个任务当中看似简单,但是如果真正了解每一个英文的意思也是很不容易的。我们了解了大部分常用语句的意思。如“上机的具体步骤”这也是我们刚学C语言就应该了解的,这次又强化了一遍。主要考点应该就是后缀名文件分别编辑.c、编译.obj、连接.exe 运行、显
示在屏幕上。
实训二: C语言数据类型、运算符及表达式:
1、C语言数据类型:整型(整形int、短整型short、长整型long)、实型、字符型;
2、运算符及表达式:
(1)算术运算符:+、-、*、/、%及++、--。
(2)赋值运算符:=及复合赋值运算符(+=、-=、*=、/=、%=等)。
(3)逗号运算符:,。
(4)条件运算符:? :
(5)指针运算符: * &
例:编写一程序完成如下功能:从键盘上输入学生3门课成绩,计算总成绩和平均成绩。
#include"stdio.h"
main()
{ float s1,s2,s3,isum,ave; |定义变量|
printf("please input 3 ingeter(1-100)\n"); |打印出三门成绩|
scanf("%f%f%f%f%f",&s1,&s2,&s3); |接收并存入|
isum=s1+s2+s3; |求三门成绩之和| ave=isum/3; |求平均值| printf("%4.2f",isum); |打印输出成绩之和|
printf("%4.2f",ave); |打印输出成绩的平均值|
}_
实训三:C程序的三种基本结构的应用:
1、顺序结构:
2、选择结构:if??else,switch语句。
3、循环结构:while、do-while、for
案例一:打印输出如下图形:
1
222
33333
4444444
555555555
66666666666
7777777777777
66666666666
555555555
4444444
33333
222
1
要求打印如上图的图像,具体程序如下:
main() (主函数) {
int i,j,k; (定义)
for(i=1;i<=7;i++) (控制7行)
{ for(j=1;j<20-i;j++) (每一行的空格依次输出,一次只能输出一个空格,所以循环输出)
printf(" ");
for(k=1;k<=2*i-1;k++) (输出数字,并根据每行之间的规律,循环输出个数)
{printf("%d",i);
printf("\n");
}
}
for(i=6;i>=1;i--) (因为是对称的,所以和上面程序一样) {
for(j=1;j<20-i;j++)
printf(" ");
for(k=1;k<=2*i-1;k++)
{printf("%d",i);
printf("\n");
}
}
案例二:打印输出九九乘法表。如下所示:
解题步骤
【解题步骤】
1、定义行变量。列变量。
2、循环输出行乘列的值。
3、每行最后输出一个换行符。
【程序代码】
#include”stdio.h”
Void main()
{ int iRoe,iCol; /*定义行变量与列变量*/
for(iRow=1;iRow<=9;iRow++)
{for(iCol=1;iCol<=iRow;iCol++)
Printf(“%d*%d=%d “,iCol,iRow,iRow*iCol);
/输出带格式的乘法表/
Printf(“\n”);
}
getch();
}
【说明】
1、输出时,每个表达式中间用空格隔开,因此格式符%d*%d=%d后多加两个空格。
2、两个循环嵌套时,第一个循环语句为外循环,第二个循环为内循环。外循环执行一次,内循环从头到尾执行一遍(可能执行多次循环体),因此本题的执行次数为:1+2+3+4+5+6+7+8+9=45。
实训四:数组的定义和应用:
1、一、二维数组的定义、引用及初始化
一位数组的定义:数据标识符 数组名【常量表达式】;
引用形式:数组名【下表表达式】;
初始化的一般格式:类型说明符 数组名【常量表达式】={初值表};
二维数组的定义:类型标识符 数组名【常量表达式1】【常量表达式2】; 引用形式:数组名【行下标】【列下标】;
初始化的一般格式:同一维数组一样,二维数组可在定义时给出初始化数据,每一行数据可用大括号分开,也可以不使用括号,未被初始化的数据自动赋值为0。
2、一、二维数组的应用。
例:打印杨辉三角,输出前10行数据。
int a[10][10]; |定义一个二维数组| printf("\n"); |打印输出|
for(x=0;x<10;x++)
{ a[x][0]=1;
a[x][x]=1;
}
for(x=2;x<10;x++)
for(y=1;y<x;y++) |循环|
a[x][y]=a[x-1][y-1]+a[x-1][y];
for(x=0;x<10;x++)
{ for(y=0;y<=x;y++)
实训五:函数的应用:
1、函数的定义和调用:
函数定义的一般格式:类型标识符 函数名(形式参数列表)
{
声明部分
语句部分
}
此时,称函数为有参函数,“形式参数列表”中的参数被称为形式参数,简称形参。有些函数可以没有参数,即:
类型标识符 函数名()
{
声明部分
语句部分
}
此时,称函数为无参函数。
2、函数的嵌套调用和递归调用:
函数的嵌套调用是指:在执行被调用函数时,被调用函数又调用了其它函数。 函数的递归调用是指:一个函数在他的函数体内,直接或间接的调用该函数
本身,能够递归调用的函数是一种递归函数。
3、局部变量和全局变量以及变量的存储类别:
在函数内定义的变量称为局部变量
例:用函数和递归实现求n!
#include"stdio.h"
long fnfact(int n)
{ int i;
long lfact=1;
for(i=1;i<=n;i++) |构造循环分别将函数求的阶乘之和保存到isum中| lfact=lfact*i;
return lfact;
}
long fnfactsum(int n)
指针的应用
1、指针、指针变量的概念
一个变量的首地址称为该变量的指针。
专门用来存放变量首地址的变量称为指针变量。
2、数组的指针
数组的指针是指数组在内存中的起始地址
3、指向字符串的指针 返回指针的函数
指向字符串的指针作为函数参数时,在函数形参说明中,既可以是字符数组名,也可以是字符指针,在函数体中通过指针或数组元素的下标存取。
4、指针数组及指向指针的指针
例:任意输入10个数,将它们按照从大到小的顺序输出。
main()
{
int *p,i,a[10]; |定义一个指针,一变量,一个数组|
p=a;
for(i=0;i<10;i++)
scanf("%d",p++); |循环接受十个数放进数组| p=a;
sort(p,10);
for(p=a,i=0;i<10;i++)
{printf("%5d",*p);
p++;}
}
sort(int x[],int n)
{int i,j,k,t; | 从大到小开始排序| for(i=0;i<n-1;i++)
{ k=i;
for(j=i+1;j<n;j++)
if(x[j]>x[k]) k=j;
if(k!=i)
{t=x[i];x[j]=x[k];x[k]=t;}
}
}
+%d!=%ld\n",inum,lfactsum);
}
实训六:指针的应用
1、指针、指针变量的概念
一个变量的首地址称为该变量的指针。
专门用来存放变量首地址的变量称为指针变量。
2、数组的指针
数组的指针是指数组在内存中的起始地址
3、指向字符串的指针 返回指针的函数
指向字符串的指针作为函数参数时,在函数形参说明中,既可以是字符数组名,也可以是字符指针,在函数体中通过指针或数组元素的下标存取。
4、指针数组及指向指针的指针
例:任意输入10个数,将它们按照从大到小的顺序输出。
main()
{
int *p,i,a[10]; |定义一个指针,一变量,一个数组|
p=a;
for(i=0;i<10;i++)
scanf("%d",p++); |循环接受十个数放进数组| p=a;
sort(p,10);
for(p=a,i=0;i<10;i++)
{printf("%5d",*p);
p++;}
}
sort(int x[],int n)
{int i,j,k,t; | 从大到小开始排序|
for(i=0;i<n-1;i++)
{ k=i;
for(j=i+1;j<n;j++)
if(x[j]>x[k]) k=j;
if(k!=i)
{t=x[i];x[j]=x[k];x[k]=t;}
}
}
五、结论(小4宋体,约1500字)
1、收获:C语言课程设计和现代计算机技术的实际应用相结合,是我们在本阶段学完理论课程之后对自己该方面的能力的一次很好的检验,从开始的算法思路到运行调试后的美观的图形界面以及另人兴奋的可用程序,都是一个很好的学习和锻炼的过程。使我们巩固了原有的理论知识,培养了我们灵活运用和组合集成所学过知识及技能来分析、解决实际问题的能力。使我们体会到自身知识和能力能在实际中的应用和发挥。不但可以激发创新意识,还可以开发创造能力、培养沟通能力。这次实习时间虽然仅有一个星期,但确实使我受益非浅。通过实习我丰富了计算机操作经验,更加深了对C语言的了解,熟悉了其环境,更增强了对Turbo C的使用技巧。
另外,实习中老师对我们进行了细心、耐心的指导,鼓励我们对程序进行合理改进,培养了我们的创新意识和创新能力。原来是我认为可怕的课程设计,就在种种辅助条件下完成了,心里有说不出的高兴。虽说捧着自己的成果很高兴,但成果背后总是付出很大的努力。
一个多礼拜的时间我们经历了很多,也收获了很多。与其说它是体力与脑力的作业,不如说它是合作精神和毅力的考验。经过这次课程设计,我不仅学到了很多知识和技能,更重要的是我们学会了如何运用所学知识去解决实际问题.
2、不足:经过这四天的学习我学到了很多,也认识到了自己的不足:比如自己写的写的小程序出了问题,不会解决了就叫老师帮忙,虽然说一定意义上增加了师生之间的感情,但是会养成一种依赖的心理,碰到问题了第一个想到的是求助而不是自己独立解决,所以以后要多多锻炼自己的信心和增加自己的能力,争取做到老师不在身边的时候也可以完成一些简单的程序编写与错误排除。还有自己的基础知识不扎实,遇到的问题,没有很好的逻辑思维,亲自编写一个陌生的程序的时候会有种无法下手的感觉,找不到突破口。通过实训,逐渐理清了顺序,对于简单的程序和一些相对比较繁琐的嵌套,循环,不在是看着一头雾水。其实只要理清了思路,把基础知识掌握了,然后有条不紊的分析,一步一步理解,c语言还是很有意思的课程。我会继续学习c语言,使我对c语言学的更好。
C语言是一门较难的语言,我感觉学的蛮累的,尤其是这两周的课程设计,我更体会到了这一点,虽然我们是在同一条起跑线上学习的,可每个人的能力都是不同的,有人掌握的好,也有人掌握的不是很好。而我属于后者,因此,在做设计的时候,单单靠我自己的能力是不行的,需要靠大家的帮忙,需要运用集体的智慧,需要大家团结合作。所以,通过两个礼拜的努力和同学的帮忙,我终于做出了比较传统的计算器,在此过程中,我体会到了失败后的失落,同时也体会到了成功后的喜悦,也许在以后的学习生活中我会更加体会到这一点。通过这次
实习,让我知道了自身存在的许多不足,对书本上的知识理解的不够透彻,许多知识点都不是太明白,有的问题还是必须经过同学的帮助才能完成的。因为对书上许多知识点理解的不够透彻,所以导致我做起程序来比其他同学慢,每天的实习内容不能够按时完成。还有如果遇到运行不出来的程序或者是一点小小的麻烦就感到烦躁,不想再做了,甚至有时都对自己失去了信心。所以在以后的学习生活中要戒骄戒躁。还有就是:当时上课的时候对老师讲的东西没有完全理会清楚,也没有大胆的提出来,导致自己本次实习感觉比其他同学吃力,所以在以后的学习中,遇到不懂得就要大胆的提出来。本次实习让我认识到了许多自身存在的不足,所以在放寒假的这段时间里,要好好复习一下以前学过的知识,争取能够更好地理解,消化
六、致谢
首先感谢学校给我们提供了这么好的一次实习机会,让我们有这么好的实习环境,感谢学院领导的精心安排,其次感谢带我们实习的老师,实习虽然不长,但我们的实习老师一直陪在我们身边,给我们指导帮助我们完成实习任务,老师一遍一遍的给我们讲解,感谢老师这四天来给我的指导与帮助,使我顺利完成实习任务,再次谢谢老师,最后感谢我身边的同学,在实习的期间大家给了我很多的帮助,在遇到一些小问题时,他们都可以帮我解决,尤其是一些简单程序的调试,给了我很大的帮助,在此我要感谢我身边的同学们。
再次感谢老师的辛勤指导,和同学的帮助,希望以后学校能够多提供一些这样的机会让我们能够拓展自己。