c语言编程答案实验七

2024-06-23

c语言编程答案实验七(通用9篇)

篇1:c语言编程答案实验七

一 实验目的

实验七 指针 了解指针的概念,学会定义和使用指针变量。2 掌握指针、变量和数组的关系及使用方法。3 学会使用指向函数的指针变量。

二 实验内容 编写函数fun(float *sn,int n),其功能是:根据以下公式计算s,计算结果通过形参sn传回;n通过实参传入,n的值大于等于0。上机运行并记录输入输出(主函数已给出)。

s11111 3572n1fun(float *sn,int n){ 定义变量:和s,通项w,符号f,循环控制变量i; /* 其中s、f要初始化 */ 循环求累加和s { 改变符号;/* 由负变正或由正变负 */ 求通项w;累加:s+=w;} 形参指针变量sn赋值;/* 通过形参sn传回累加和s */ } main(){ float s;int n;printf(“n=”);scanf(“%d”,&n);fun(&s,n);printf(“s=%fn”,s);}

完整程序如下:

#include void fun(float *sn,int n){ float s=0.0,w,f=-1.0;int i=0;for(i=0;i<=n;i++);{ f=(-1)*f;w=f/(2*i+1);s+=w;} *sn =s;} main(){ float s;int n;printf(“n=”);scanf(“%d”,&n);fun(&s,n);printf(“s=%fn”,s);}

输出结果如下图: 想使指针变量pt1指向a和b中的大者,pt2指向小者,以下程序能否实现此目的? swap(int *p1,int *p2){ int *p;p=p1;p1=p2;p2=p } main(){ int a,b;int *pt1,*pt2;scanf(“%d,%d”,&a,&b);pt1=&a;pt2=&b;if(a

上机调试此程序。如果不能实现题目要求,指出原因并修改之。

子函数swap改成下面程序方可实现目的,主函数不变: swap(int *p1,int *p2){ int p;p=*p1;*p1=*p2;*p2=p;} 下面的程序用来实现将一个3×3的矩阵转置。#include void tranf(int(*p)[3]){ int t,i,j;for(i=0;i<3;i++)for(j=0;j

程序修改如下: #include void tranf(int(*p)[N]){ int t,i,j;for(i=0;i<3;i++)for(j=0;j char *strc(char *s1,char *s2){ char *p=s1;while(*s2!=')*p++=*s2++;return s1;} main(){ char s1[30]=“computer ok!”,s2[]=“language”,*pt;pt=strc(s1,s2);printf(“%sn”,pt);/* 第10行 */ } 将程序第10行中的%s改成%c,应该怎样修改?(只允许修改第10行)

应改为: printf(“%cn”,*pt++);

实验总结:本次实验主要掌握指针的概念,学会定义和使用指针变量,掌握指针、变量和数组的关系及使用方法,学会使用指向函数的指针变量,通过本次实验,很好的了解了指针的使用,加深了对指针的认识。

篇2:c语言编程答案实验七

一、实验目的

1、掌握函数定义的方法。

2、掌握函数实参与形参的传递方式。

3、掌握函数的嵌套调用和递归调用的方法。

4、了解全局变量和局部变量、动态变量、静态变量的概念和使用方法。

二、实验内容 1.改错题

(1)下列sub函数的功能为:将s所指字符串的反序和正序进行连接形成一个新串放在t所指的数组中。例如,当s所指字符串的内容为“ABCD”时,t所指数组中的内容为“DCBAABCD”。纠正程序中存在的错误,以实现其功能。程序以文件名sy7_1.c保存。#include #include void sub(char s[],char t[]){

int i,d;

d=strlen(s);

for(i=1;i

t[i]=s[d-1-i];

for(i=0;i

t[2*d]=’’;} main(){ char s[100],t[100];printf(“Please enter string s:”);scanf(“%s”,s);sub(s,t);printf(“nThe result is:%sn”,t);}(2)下列程序的功能为:将字符数组中的字符串逆序输出。纠正程序中存在的错误,以实现其功能。程序以文件名sy7_2.c保存。#include #include #define ARR_SIZE=80;void Inverse(char str[])main(){

char a[ARR_SIZE];printf(“Please enter a string:”);gets(a);Inverse(char a[]);printf(“The inversed string is :”);puts(a);} void Inverse(char str[]){

int len,i=0,j;

char temp;

len=strlen(str);

for(j=len-1;i

{

temp=str[i];

str[j]=str[i];

str[j]=temp;

} }

(3)下列程序的功能为:求整数n的阶乘。纠正程序中存在的错误,以实现其功能。程序以文件名sy7_3.c保存。#include int fun(int n){

static int p=1;

p=p*n;

return p;} void main(){

int n,i;

int f=0;

printf(“input member:”);

scanf(“%d”,&n);

for(i=1;i<=n;i++)

f=f*fun(i);printf(“%d!=%dn”,n,f);}

2.程序填空题

(1)下列sum()函数的功能是:计算数组x前n个元素之和。在主函数中,输入10个任意整数和下标i1、i2的值(设1<=i1<=i2<=9),调用sum()函数计算从第i1元素到第i2元素的和,并输出结果。补充完善程序,以实现其功能。程序以文件名sy7_4.c保存。#include int sum(int x[],int n){

int i,s=0;

for(i=0;______________;i++)

s=____________;

return s;} void main(){

int i,i1,i2,result;

int x[10];

for(i=0;i<10;i++)

scanf(“%d”,&x[i]);

scanf(“%d%d”,&i1,&i2);

result=sum(x+i1,___________);printf(“Sum=%dn”,result);}

(2)以下程序的功能是:输入一个字符数小于100的字符串string,然后将string所保存字符串中的每个字符之间加一个空格。补充完善程序,以实现其功能。程序以文件名sy7_5.c保存。

#include ______________________ #define MAX 100 void Insert(char s[]);main(){

char string[MAX];

scanf(“%s”,string);

Insert(_______________);

printf(“%s”,string);} void Insert(char srcStr[]){

char strTemp[MAX];

int i=0,j=0;

strcpy(strTemp,srcStr);

while(________________________)

{

srcStr[i]=strTemp[j];

i++;

_______________________

srcStr[i]=’ ‘;

i++;

}

srcStr[i]=’’;}(3)下列程序的功能为:输出如下图所示的图形。补充完善程序,以实现其功能。程序以文件名sy7_6.c保存。#include void a(int i){

int j,k;

for(j=1;j<=30-i;j++)printf(“%c”,’ ‘);

for(k=1;k<=_________;k++)printf(_____________);

printf(“n”);} void main(){

int i;

for(i=1;i<=7;i++)____________;

for(i=6;i>=1;i--)_____________;}

222

33333

4444444

555555555

66666666666

7777777777777

66666666666

555555555

4444444

33333

222

3.编程题

(1)从键盘输入10个数,用函数编程实现将其中最大数与最小数的位置对换后,再输出调整后的数组。程序以文件名sy7_7.c保存。

(2)编写一函数,判断一字符串是否为回文。所谓“回文”是指顺读和倒读都一样的字符串,如“deed”和“level”是回文。在主函数中对输入的5个字符串统计其中回文的个数。程序以文件名sy7_8.c保存。

篇3:计算机C语言编程实验教学探究

随着科学技术的不断提高, 计算机在人们的日常生活中扮演的角色越来越重要, 它已经逐渐的进入到了社会的各个领域, 并且在各个领域都发挥着举足轻重的作用。随着全球经济的不断发展, 信息化的时代已经到来, 人们对无网络技术的需求越来越广, 计算机已经成为了与人们的日常生活息息相关的物件, 因此, 在这种现象下, 高校对于计算机越来越重视, C语言已经成为了高校学生的一门必修课, 在C语言的教学过程中, 学生逐渐的了解到对于程序的编写问题。但是仅仅是在课堂上讲的一些一些理论性的知识, 还是不足以让学生更加充分的理解C语言, 因此, C语言编程的实验性教学才是大趋所向, 在C语言的实验性教学中要学生逐渐的发挥自己的思考能动性才是最终目的。因此, 对于C语言的实验性教学, 主要还是按照学生自身的能力, 老师进行指导、启发学生, 在讲完理论性的知识点之后, 让学生进行上机操作, 这样可以更好的让学生充分的理解与运用C语言。

1 教师对于C语言编程实验教学所做的前期准备

C语言编程实验性教学可以说是理论性很强的一种实验性教学, 所以老师在教学之前就应该根据教学大纲中的要求, 将教学的内容进行充分的准备, 使学生在实验动手操作的过程中能够充分的理解老师所讲的内容。在进行上机操作之前, 老师还有许多任务要进行提前处理, 在学生上实验操作课之前, 老师要将实验室的计算机进行彻底的检查, 以免在教学的过程中出现故障;其次, 老师还要讲每次需要将的课件与作业提前检查一遍, 以免在讲课的过程中出现问题, 影响上课进程;另外, 由于C语言编程实验性教学是一种新型下的教学方式, 所以学生对于这门课的了解程度并不是很高, 所以在上课的过程中难免会出现一些不想听课, 甚至是逃课的现状, 因此, 就需要要求老师在讲每一节课的时候都要有亮点, 能够吸引住学生的眼球, 让学生跟随着老师的思路走, 但是老师在讲课的过程中还不能脱离大纲, 要将大纲中要求的内容进行全面彻底地分析, 是学生能够彻底地理解。

2 C语言编程实验性教学方法

对于刚刚接触C语言编程的学生来说, C语言的学习是相当难理解的一门课程, 对于他们而言刚刚接触的C语言课程就好像是刚刚认识的一位陌生人, 对他一点都不熟悉, 在自己的认识中一切都是新的。因此, 在C语言编程实验性教学中要让学生有目标、有动力的学习, 让C语言编程学习成为一种兴趣, 使学生更好地学习C语言编程。但是如何才能让学生更好地理解C语言, 与学习C语言编程呢, 还是一项有待解决的问题。

C语言编程实验性教学是一门新的学科, 不仅仅对于学生的陌生的, 就是对于具有丰富教学经验的老师而言也是陌生的。因此在对C语言编程的教学中就要有一定的方法进行教学, 让学生更好地理解C语言编程。对于传统的C语言编程教学主要是老师在课上进行理论知识的讲解, 在上计算机课的时候, 进行实际操作训练的讲解, 然后再让学生进行操作。但是这种讲解与实际操作分开的做法, 很难让学生的对于C语言编程有更深层次的理解与运用, 学生上课也就成了只是一种形式, 而没有真正的学到任何有用的知识。所以还是要彻底的改变这种教学模式, 让学生成为课堂上的主体, 理论性知识的讲解与计算机操作一起进行讲解, 然后让学生自己完成老师布置的实验内容, 如果遇到问题老师在进行指导, 要让学生充分的融入到学习中, 让学生自己支配学习时间与内容。这种C语言编程的实验性教学不仅可以让学生学会更多的知识, 并且还在一定程度上提高了学生的互助能力与团队协作能力。

对于C语言编程的实验性教学, 这其中“实验”的设计也是非常重要的, 但是如果老师所讲的实验性内容不切合实际, 就根本不能引起学生的兴趣, 这样既无聊又乏味的实验性教学最终也没有起到任何有影响性的作用。就一个简单的例子来进行分析:例如在C语言循环编程这一章节中, 如果只是老师对于编程理论性知识的讲解, 在一定程度上根本不能引起学生的重视, 相反的, 如果在进行C语言编程教学的过程中, 让学生成为编程的主体, 学生实在给自己做生意, 这样再将一些具有典型的实例带入到C语言编程中, 学生就会自发的进行思考、讨论, 从而编写出一套完美的C语言程序。

3 学生自己动手操作

C语言编程的实验性教学教学的方式主要还是以实验为主体, 让学生自己进行C语言程序的编写, 在遇到不懂的问题的时候在询问老师, 这样不但能够启发学生的自主学习的能动性, 并且还能达到以实验为教学的最终目的。当老师在为学生进行讲解的过程中, 要表现出和蔼、耐心的情绪, 不然老师的消极情绪也会影响到学生的学习, 通过这种实验性教学, 最终一定能够培养出适应社会发展的实用性人才。

4 总结

C语言编程是一门以操作性为主的学科, 所以在进行教学的过程中老师要重视学生自己的操作能力, 让学生成为课堂上的主体, 使学生成为实验设计的主要操作者, 而老师扮演的角色就是一位指导者, 当学生有任何不明白的问的时候, 就可以向老师请教, 但是最终所有关于C语言编程的程序都是有学生独立创作, 只有这样才能让学生中分的理解C语言编程, 并能够将C语言编程应用要实践生活中。这种实验性操作最终也加强了学生对于C语言编程的认识与理解, 在以后的生活、工作、学习中也能更好的利用C语言编程, 这种C语言编程的实验操作课程也高校提供了一个平台, 为社会培养具有优秀计算机编程的人员奠定了基础。

参考文献

[1]王梦谢翠萍韩成虎.C语言实验教学中学生编程常见问题探析.中国电力教育.2010 (12)

[2]郭慧敏, 兴趣化教学方法在C语言实验教学中的应用.中国电力教育.2010 (28)

篇4:C语言实验教学方法探讨

关键词:C语言;实验;教学方法

中图分类号:G642文献标识码:A文章编号:1009-3044(2007)12-21728-02

Discussion of the Experiment Teaching Method in C-programming

LIU Han-ying

(Department of Electronic and Computer, Guilin University of Technology, Guilin 541004, China)

Abstract:C-programming experiment is important part of C-programming teaching. As the result of each kind of reason, there are some disadvantages in the experiment teaching of C-programming: the experiment passing rate of national examination is low; the teacher can't instruct because of so many students; the students written down the programs without preparation. The students don't know how to do with the errors. With some teaching examples of the C-programming experiment, this paper propose some teaching methods, The experiences show that the proposals stimulated the students' enthusiasms of studying, and improved the quality of experiment teaching.

Key words:C language; experiment; teaching method

《C语言程序设计》(以下称C语言)是计算机及相关专业的一门专业基础课,是学习其他专业课程如《C++与面向对象程序设计》、《JAVA》、《数据结构》、《数据压缩》、《计算机图形学》的基础,C语言实验是C语言教学中的一个重要环节,常常占总学时的2/5以上。C语言实验教学有利于增加学生对理论知识的理解,调动学生的学习主动性,提高学生思维能力和动手能力。然而,由于各方面的原因,C语言实验教学中存在一些问题:全国等级考试实验通过率不是很高;C语言实验往往是大班上课,学生人数较多,老师指导不过来;学生课前没有预习,上机时直接输入参考程序,实验成了打字练习;英语水平不高,对错误提示无从下手;部分学生以为编译通过就是调试成功,不会使用调试工具。笔者近年来多次承担C语言实验教学任务,总结了一些教学方法和经验,下面是笔

者对C语言实验教学方法的探讨。

1 思想上重視实验环节,提高学习兴趣

由于C语言教学往往是大班教学,在考核方式上常常采用的是理论考试,部分学生不重视实验课,课前不预习,上机时就直接输入指导书上的参考程序,实验效果很差。因此,为了提高实验教学的效果,应将上机考核作为C语言考核的重要组成部分,让学生从思想上重视实验环节,做好课前预习。同时,笔者把一些用C语言程序实现的小游戏或画的图形图像演示给学生看,激发学生的学习兴趣,取得了较好的效果。

2 编写适宜的实验指导书

目前,有许多与C语言课程配套的实验指导书,这些指导书常常配有答案[1]。学生拿到指导书后,看有答案,常常不自己思考就将书上的程序录入进去,编译出错时不是根据错误提示查找错误原因,而是从头到尾地与书上程序比对,改正录入错误,遇到书上有错,就无从下手。整个上机练习成了打字练习。笔者认为,一本适宜的实验指导书应具备以下几点:

(1)实验指导书要与理论知识配套

C语言实验教学的目的是通过实验,让学生增强对理论知识的理解,学会自己编写、调试程序。因此,实验指导书的内容要与理论教学配套,有针对性地设置实验内容,且实验时间安排要合理(略晚于理论教学),参考程序与实验指导书分离。

(2)实验内容难度适宜

由于种种原因,学生能力上有很大差异,为此,在编写实验指导书时要兼顾各个能力层次的学生,设置基础题、中等难度题和较难题多个层次。笔者从历年的考试题中抽取一些具有代表性的改错题作为基础题练习;在此基础上,设置一些程序设计题让学生编写、调试;对学有余力的学生,可设置一些难度较大的题目,组成小组讨论。

3 养成良好的编程习惯

3.1 注意编程思想

算法是程序设计的精髓,语言只是表示形式,没有正确的计算机算法,就无法用计算机正确地解决问题。对于每一道题目,首先找出解决问题的算法,画出盒图,最后才是编写程序,这样可以减少出错的可能性。

3.2 使用有意义的标识符

C语言教材常常使用i,j,k,a,b,c几个字符作为标识符,很多学生在学习C++时觉得很难,其中一点就是C++中教材中的标识符较长。笔者建议学生,在编写程序时尽量使用一些有意义的字符串作为标识符,尽量不要用l作为标识符,提高程序的可读性,如输入一系列学生成绩时使用的是score1,score2……,而不是a1,a2……。

3.3 养成良好的程序录入习惯

有的学生在录入程序时不注意书写格式,在遇到错误时常常不易查找。笔者要求学生使用锯齿形的书写格式,在录入大括号、小括号、引号等时都要做到成对录入,有较地提高了程序录入的准确率。

4 改革实验辅导方法

4.1 网络教学软件的使用

传统的实验课是老师先布置实验习题,学生练习,遇到问题举手,老师解答。然而,C语言实验往往是大班教学,学生人数较多,许多问题十分相似,老师常常为同一问题解释多次,指导不过来。针对这一问题,笔者使用了红蜘蛛软件[3],这个软件可以在局域网上实现多媒体信息的教学广播,是一款实现在电子教室、多媒体网络教室或者电脑教室中进行多媒体网络教学的非常好的软件产品,集电脑教室的同步教学、控制、管理、音视频广播、网络考试等功能于一体,并同时实现屏幕监视和远程控制等网络管理的目的。该软件是专门针对电脑教学和培训网络开发,可以非常方便地完成电脑教学任务,包括教师演示、学生示范、屏幕监视、遥控辅导、屏幕录制、屏幕回放、网络考试、网上语音广播、两人对讲和多方讨论、联机讨论、同步文件传输、提交作业、远程命令、获取远端信息、电子教鞭、电子黑板与白板、网上消息、电子举手、锁定学生机的键盘和鼠标、网络唤醒、远程关机和重启、学生机同步升级服务、远程安装、倒计时、班级和学生管理等。笔者通过文件传输功能,将实验题目(如基础改错题)发放给学生,让学生练习,然后通过提交作业功能抽一名学生的作业来讲解。

4.2 总结错误

针对一些学生英语水平不高,对错误提示无从下手的现状,笔者总结了上机时经常遇到的错误,如语法错误、逻辑错误等,罗列给学生,并从一些试题中挑选一些适宜的改错题传给学生练习,学生不用从头到尾地录入程序,提高了实验效率。

4.3 调试方法的使用

調试的目标是寻找软件错误的原因并改正错误[2],一般有以下几种调试途径:

4.3.1 蛮干法

上机时指导学生查找错误,学习使用程序调试工具,跟踪程序的执行过程,发现较隐蔽的错误,提高学生动手解决问题的能力。如学生编写如下程序计算 (用公式 )时,发现结果不对,笔者指导学生使用调试工具观察变量pi和t的值,很快找到了错误原因,同时学生也练习了调试工具的使用方法。

#include

#include

void main()

{float s,n,t,pi;

t=1;pi=0;n=1;s=1;

while(fabs(t)<1e-6)

{pi=pi+t;

n=n+2;

s=-s;

t=s/n;}

pi=pi*4;

printf("pi=%fn",pi);}

4.3.2 回溯法

从发现症状的地方开始,人工沿程序的控制流往回追踪分析源程序代码,直到找出错误原因为止。如上例中,用go to cursor执行到pi=pi*4,发现pi的值不对,则往回分析代码,很快可以查出是循环条件不对。

4.3.3 对分查找法

对分查找法的基本思路是,如果已经知道每个变量在程序中若干个关键点的正确值,可以用赋值语句或输入语句在程序中关键点附近“注入”这些变量的正确值,然后运行程序,并检查所得到的输出。如果输出结果是正确的,则错误原因在程序的前半部分;反之,错误原因在程序的后半部分。

4.4 让学生自己调试程序

由于学生多,问题多,为了快速地解决问题,有时老师会帮学生调试程序来提高效率。笔者认为,老师应指导学生调试程序,而不是帮学生调试程序,学生只有自己动手,动脑,才能真正学会调试方法。同时笔者鼓励学生之间互相帮助和交流,培养团结协作的精神,学生在帮助同学的同时自己也得到学习。

5 结束语

以上是笔者对《C语言程序设计》实验教学方法进行的探讨,通过实践发现,这些方法有助于激发学生学习自觉性和主动性,提高学生分析问题和解决问题的能力,达到提高教学质量的目的。

参考文献:

[1]谭浩强.C语言程序设计题解与上机指导[M].北京:清华大学出版社,2005.

[2]张海藩.软件工程导论[M].北京:清华大学出版社,2003.168.

[3]http://www.forclass.com/.

篇5:七:结构与联合(C语言)

在实际问题中,一组数据往往具有不同的数据类型,例如, 在学生登记表中,姓名应为字符型;学号可为整型或字符型; 年龄应为整型;性别应为字符型;成绩可为整型或实型。 显然不能用一个数组来存放这一组数据。 因为数组中各元素的类型和长度都必须一致,以便于编译系统处理。为了解决这个问题,C语言中给出了另一种构造数据类型——“结构”。 它相当于其它高级语言中的记录。

“结构”是一种构造类型,它是由若干“成员”组成的。 每一个成员可以是一个基本数据类型或者又是一个构造类型。 结构既是一种“构造”而成的数据类型, 那么在说明和使用之前必须先定义它,也就是构造它。如同在说明和调用函数之前要先定义函数一样。

一、结构的定义

定义一个结构的一般形式为:

struct 结构名

{

成员表列

};

成员表由若干个成员组成, 每个成员都是该结构的一个组成部分。对每个成员也必须作类型说明,其形式为:

类型说明符 成员名;

成员名的命名应符合标识符的书写规定。例如:

struct stu

{

int num;

char name[20];

char sex;

float score;

};

在这个结构定义中,结构名为stu,该结构由4个成员组成。 第一个成员为num,整型变量;第二个成员为name,字符数组;第三个成员为sex,字符变量;第四个成员为score,实型变量。 应注意在括号后的分号是不可少的。结构定义之后,即可进行变量说明。 凡说明为结构stu的变量都由上述4个成员组成。由此可见, 结构是一种复杂的数据类型,是数目固定,类型不同的若干有序变量的集合。

二、结构类型变量的说明

说明结构变量有以下三种方法。以上面定义的stu为例来加以说明。

1. 先定义结构,再说明结构变量。如:

struct stu

{

int num;

char name[20];

char sex;

float score;

};

struct stu boy1,boy2;

说明了两个变量boy1和boy2为stu结构类型。也可以用宏定义使一个符号常量来表示一个结构类型,例如:

#define STU struct stu

STU

{

int num;

char name[20];

char sex;

float score;

};

STU boy1,boy2;

2. 在定义结构类型的同时说明结构变量。例如:

struct stu

{

int num;

char name[20];

char sex;

float score;

}boy1,boy2;

3. 直接说明结构变量,

例如:

struct

{

int num;

char name[20];

char sex;

float score;

}boy1,boy2;

第三种方法与第二种方法的区别在于第三种方法中省去了结构名,而直接给出结构变量。三种方法中说明的boy1,boy2变量都具有图7.1所示的结构。说明了boy1,boy2变量为stu类型后,即可向这两个变量中的各个成员赋值。在上述stu结构定义中,所有的成员都是基本数据类型或数组类型。成员也可以又是一个结构, 即构成了嵌套的结构。例如,图7.2给出了另一个数据结构。 按图7.2可给出以下结构定义:

struct date{

int month;

int day;

int year;

}

struct{

int num;

char name[20];

char sex;

struct date birthday;

float score;

}boy1,boy2;

首先定义一个结构date,由month(月)、day(日)、year(年) 三个成员组成。 在定义并说明变量 boy1 和 boy2 时, 其中的成员birthday被说明为data结构类型。成员名可与程序中其它变量同名,互不干扰。结构变量成员的表示方法在程序中使用结构变量时, 往往不把它作为一个整体来使用。

在ANSI C中除了允许具有相同类型的结构变量相互赋值以外, 一般对结构变量的使用,包括赋值、输入、输出、 运算等都是通过结构变量的成员来实现的。

表示结构变量成员的一般形式是: 结构变量名.成员名 例如:boy1.num 即第一个人的学号 boy2.sex 即第二个人的性别 如果成员本身又是一个结构则必须逐级找到最低级的成员才能使用。例如:boy1.birthday.month 即第一个人出生的月份成员可以在程序中单独使用,与普通变量完全相同。

结构变量的赋值

前面已经介绍,结构变量的赋值就是给各成员赋值。 可用输入语句或赋值语句来完成。

[例7.1]给结构变量赋值并输出其值。

main{

struct stu

{

int num;

char *name;

char sex;

float score;

} boy1,boy2;

boy1.num=102;

boy1.name=“Zhang ping”;

printf(“input sex and scoren”);

scanf(“%c %f”,&boy1.sex,&boy1.score);

boy2=boy1;

printf(“Number=%dnName=%sn”,boy2.num,boy2.name);

printf(“Sex=%cnScore=%fn”,boy2.sex,boy2.score);

}

本程序中用赋值语句给num和name两个成员赋值,name是一个字符串指针变量。用scanf函数动态地输入sex和score成员值,然后把boy1的所有成员的值整体赋予boy2。最后分别输出boy2 的各个成员值。本例表示了结构变量的赋值、输入和输出的方法。

结构变量的初始化

篇6:C语言实验

实验一:C语言程序调试基础

一、实验目的

1.掌握C语言源程序的编写方法和调试方法

2.学会使用VC6开发工具及调试过程的查错纠错能力。

二、任务

调试课本例子:例2.19、例3.5、例5.9

三、实验过程及结果

1.鼠标左键双击VC,打开程序;单击打开的New的页面中,单击

键,选择键,选择,在新,最后单击键,就可以建立一个新的页面。

2.在界面中输入例2.19的内容,单击

键进行调试,底下的对话框出现

一句话时,说明我们编写的程序无错,就可以单击键,来运行程序。运行结果及编写程序内容如图:

4.关闭这两个窗口,再单击

实验二:顺序程序设计

一、实验目的:

1.掌握顺序程序的设计方法;

键,选择

2.掌握输入输出控制语句。

二、实验任务与要求

1.第3章课后习题T2 2.第3章课后习题T7

三、实验过程及结果

实验三:分支程序设计

一、目的

1.掌握分支程序控制语句的语法格式及纷争程序设计方法。2.了解分支程序的条件表达式及运算规则; 3.掌握分支程序控制语句的嵌套使用方法。

二、任务

1.第4章课后习题T6 2.第4章课后习题T8 3.第4章课后习题T12

三、实验过程及结果

实验四:循环程序设计

一、目的

1.掌握循环程序的控制语句的语法规则;

2.掌握循环程序的编写方法;

3.掌握循环程序的嵌套与退出控制方法。

二、任务

1.求100~200间的全部素数。2.第5章课后习题T8 3.第5章课后习题T10

三、实验过程及结果

实验五:数组

一、目的

1.掌握数组的定义及使用方法 2.掌握字符数组的相关操作函数。

二、任务

1.用数组求Fibonacci数列的钱40项,每5个一行。2.将一个3行8列的数组A转置为数组B。3.已知字符串str1=”abcde”,str2=”hijklm”,比阿尼写程序分别实现str1与str2的连接、求长度、比较等操作。

三、实验过程及结果

实验六:函数

一、目的

1.掌握函数的定义与调用方法。2.掌握函数参数的专递方式。

3.掌握函数的嵌套调用和递归调用方法。

二、任务

1.编写一函数,用冒泡排序法实现对数组A的排序。2.编写一函数,用选择排序法实现对数组A的排序。3.编写一函数,实现对给定年year是不是闰年。4.编写一函数,实现对给定整数m是不是素数。

5.利用递归算法,编写一函数,求Fibonacci数列的第n项。

三、实验过程及结果

实验七:变量作用域

一、目的

1.了解变量的存储类型及生命周期、作用域的性质。2.准确使用局部变量和全局变量。

二、任务

1.根据变量作用域知识,分析下列程序的运行效果。2.调试程序,分析个变量的作用范围和生命期。

#include int i=5;void fun1(){ int i=5;static int j=20;i+=5;j=j-3;printf(“i=%d.j=%dn”,i,j);} void main(){

Printf(“i=%dn”,i);

int i=40;

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

fun1();

fun1();}

三、实验过程及结果

实验八:结构体

一、目的

1.掌握结构体的定义方法和使用。

二、任务

定义一日期(年、月、日)结构体,编程实现日期的输入、日期的输出、日期加上一个整型天数、两个日期数据相减等功能。

篇7:C语言实验报告《综合实验》

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

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

二、实验内容

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

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

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

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

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

三、步骤与过程

篇8:浅论C语言实验教学改革

C语言因其丰富的功能、具有良好使用的灵活性,可移植性好,特别在嵌入式系统开发方面,C语言体现了自身的优势。本人认为将“C语言”作为计算机专业学生学习程序设计的人门课程,旨在让学生掌握基本的程序设计方法,培养学生逻辑思维能力,最终达到他们能够利用C语言来解决一些问题。传统教学过程中却存在很多问题,比如概念不能充分理解;知识结构不完善;动手能力差,写出的程序多数是从课本例题模仿而来,代码中无法体现个性化的思想,更别说涉及到软件开发;以上问题是笔者从事几年的C语言教学总结而来,特别是结合自己在实验教学方面的实践经验,提出了一些解决的方法和建议。

2 C语言实验教学中存在的几个问题

1)对实验教学认识有误区。很多学校把实验课视为理论课的附属,没有将实验教学单独开课,没有单独配备相应的硬件资源(实验室)和软件资源(实验教师),甚至实验课的课时只有理论课课时的一半。C语言是一门应用性非常强的课程,归根到底要培养学生的综合编程能力!试想,作为入门语言,编程语言对于学生来说是陌生的,2课时的理论课,可以给学生讲授3-4个比较重要的知识点,而实验教学如果只配备1个学时,单单是4个重要的知识点的验证恐怕时间都不够,更别说让学生去设计实验,来进一步理解所学的知识,能够真正地将课本上的知识转化为自己掌握的一种技能。

2)实验教学的课堂内容设置不合理,无法达到实验教学的真正目的。由于某些教师精力有限,没有专门针对理论教学的进度以及内容,对实验课的内容进行认真的设计和反复的修改。导致学生在实验课上试验内容与理论课内容错位,使得学生茫然不知所措,不能消化理论课的内容,对实验课乃至整门课程失去信心和兴趣。如果失去信心和兴趣,就会对课程产生逆反心理,产生逆反心理后又直接影响到学习的兴趣,造成恶性循环。

3)综合性实验(课程设计)没有开展,或者说效果不好。综合性实验(课程设计)是检验课程开设效果的最有力的手段,也是提高学生自身编程技能的一个非常好的契机。但是,如果实验课普通实验效果都不好,这样的综合性实验对于学生来说,简直是遥远的、不可触及的。对于以后续专业课的进一步学习,埋下了隐患。

3 实验教学方教学方法的改革和探讨

针对以上提出的实验课程教学中存在的问题,我对C语言课程教学做了一些尝试,应该说还是受到了比较明显的效果。

1)将实验教学做好定位,明确实验教学的任务,将实验教学学时应该是理论教学学时的1倍或者1.5倍。我们先看看实验教学的目的:一是让学生掌握基本的程序设计算法,能够编程实现我们课后练习的一些题目,当然这是对学生的最基本要求,也是最低要求;二是,让学生真正掌握C语言这样的一个软件开发的工具,为学生以后走向工作岗位,奠定良好的基础。因为对于计算机专业的学生,通过课程设计或者综合性实验能够用C语言开发一个小的软件(哪怕只有2个或者3个功能),对于他们来讲,会有一种成就感,能够给他们学习的信心和兴趣,或许一名优秀的软件设计人员会因此而产生。

通过上面我们不难看出,实验教学,不仅要引导同学更好理解理论课中的一些算法、语法、设计思想,更重要的是,通过实验课,我们将那些枯燥的理论转化为自己的思想,成为自己编程的利器。由此可见,增加实验教学的学时数,是提高C语言教学效果的一个前提保障,没有充足的学时数,其他的改革措施无从谈起。

2)在具体教学过程中始终贯彻任务驱动的教学机制(如图1所示)。把整个学期的实验教学活动看成完成综合性实验的一个过程,学期期末有综合性实验这样的最终的任务;对于每次课程,都有具体、明确的习题配套练习,可以看成最终任务的分割。也就是,这门课程的目的就是让学生在完成一个一个的任务中潜移默化地提高编程能力和技巧。做到这样要求,教学任务明确了,学生的学习目标自然也就明确了。任务驱动的教学机制给实验教师提出了相对比较高的要求,因而教学任务的设置变成一项非常重要的工作。表现在:

(1)实验教师要具有完整的C语言的知识结构体系,把教学大纲中的重要知识点串起来,再具体分配到每个具体的学时里,让学生掌握。最后达到让学生掌握和建立C语言的知识体系结构。

(2)实验教师要加强与理论教师之间的联系。因为学生的学习进度、基本概念、基本算法的思想都是在理论课上学习的,而实验课要巩固他们的知识,要实现算法的代码设计,要提高变成技巧,可以说任务很繁重。如果实验教学在此环节上和理论教学联系不能很紧密,会造成两个本该相辅相成的教学环节脱节,学生既没有达到实验教学的目标,理论教学的内容又得不到实践,最后我们的教学效果就难以保障了。

3)思维能力和编程能力培养并重,相辅相成。

(1)为了培养学生的良好的思维方式,我们在授课过程中应该始终贯穿结构化程序设计思想和自顶向下、逐步求精的思维方式。在分析典型问题时,要从构造算法出发,着重探讨分析问题和设计算法的思维过程,加强学生思维方式的培养。以解决闰年问题为例,这个问题本身非常经典,是一般C语言课程学习完控制结构后一般都要联习的题目,我在具体的教学过程中是这样执行的:

首先画出流程图,流程图是最能体现学生解决问题思路的方式之一。

如果学生能够画出图2这样的流程图,基本上说明他已经解决了闰年问题。剩下的部分就是将流程图的思路转化为具体的Turbo C的可执行代码。可以让学生将流程图先转化成一条条的汉语语句。

S1:测试数据Y是否能被4整除;

S2:如果S1不成立,输出“不是闰年”;

S3:如果S1成立,继续判断是否被100整除;

S4:如果S3不成立,则是闰年;

S5:如果S3成立,继续判断是否被400整除;

S6:S5成立,则输出“不是闰年”;

S7:S5不成立,则输出“是闰年”;

有了清晰的思路,学生建立了解题的方法,剩下的内容就是根据C语言的语法规则将上述语句转化为C的代码即可。

(2)C语言教材中的课后习题非常丰富,许多题目的针对性也很强,教师应该对其进行归纳、整理和分类。针对同一类问题时不要逐题练习,应该在重点练习典型题目的基础上,拓展学生思路,引导学生归纳和总结求解一类间题的基本算法,达到举一反三的效果。

4 结束语

针对“C语言”教学相关的若干问题,我们提出了正确认识实验教学,摆正实验教学的位置。并将“任务驱动”的教学法引人到实验教学的各个环节中。实践证明这些教学方面的探索,在实验教学中取得了较好的教与学的双向效果。帮助学生建立了完整的课程知识体系,激发了学生的学习积极性和主动性,培养了他们的算法思维能力,提高了综合编程能力,最终完全达到了预先的教学设想和效果。

参考文献

[1]谭浩强.C程序设计[M].2版.北京:清华大学出版社,1999.

[2]栾咏红.C语言课程案例教学模式的探究与思索[J].内江科技,2007(11):153.

篇9:C语言实验教学改革初探

关键词:C语言;实验;教学改革

作者简介:吕风杰(1973-),男,山东沾化人,滨州学院计算机科学技术系,讲师;马士明(1983-),男,山东滨州人,滨州学院计算机科学技术系,助教。(山东滨州256600)

基金项目:本文系滨州学院教学研究资助项目(项目编号:BZXYJYXM200737)的研究成果。

中图分类号:G642.423     文献标识码:A     文章编号:1007-0079(2012)10-0118-02

C语言以其结构化、灵活性好、可移植性强、效率高等优点被广大院校理工科专业选为程序设计的入门课程。[1]随着应用型人才培养改革的不断深入,学生培养目标和教育教学理念也不断更新,但自进入高校课堂20余年来,受传统应试教育的引导,大都将授课重点放在C语言的基本语法的理论讲授上,而实验教学大多用于C语言的语法规则的验证和说明,这种教学模式仅从语言的使用这个单一的角度进行教学而使得大多数学生在学完之后吃不透、用不活所学语言知识。面对这种形势,原先的实验教学计划已远不能满足要求,如何从培养学生能力的角度出发优化实验教学内容,使实验教学与理论教学形成一个目标明确、由浅入深、紧密联系的有机整体已成为当前C语言教学中的迫切性问题。本文从C语言的特点出发,对如何在当前课时、实验资源有限的情况下,通过实验教学促进、完善课堂教学效果,培养学生实践能力、创新能力和应用能力进行了深入的探讨与实践。

一、改革实验教学内容

在应用型人才培养模式下,实验教学的组织要兼顾实践性与创新性。我们在原有教学大纲的基础上,根据电子信息类专业的特点重新修订了实验大纲,教学内容中提高了设计性和综合性实验的比例。

1.改革实验内容组织结构

为了不影响专业教学计划,又能保证实验教学改革的顺利进行,我们结合理论教学进度,编写了相对开放的实验教学大纲和讲义,将实验分为基础性实验、设计性实验和综合性实验三个层次,又将每个层次的实验内容分为必做和选做两类,以供不同专业按要求进行灵活选择。根据理论教学进度安排基础性实验,让学生熟悉编程、调试环境,掌握基本指令并学会简单编程,加深对课堂理论教学内容的理解;在单元章节之后安排设计型实验,采用任务驱动教学法,验证性与应用性实验相结合,在完成基础性实验的基础上,逐步丰富功能要求,并要求学生在实验报告中加以总结归纳,培养学生的综合思维能力;综合型实验其实是一个开放性试验,安排于每个知识单元或模块(从知识的角度出发,独立于理论教材编排)完成之后,每一个项目只给出具体的功能及性能要求,对具体方法不作要求和指导,并将一个实验课题分为设计、调试、总结、改进等几个进程,先由学生根据题目要求完成功能设计并通过调试,再由教师根据学生的设计从功能及性能方面进行有针对性的分析讲解,进而提出设计建议,然后由学生完成设计改进并写出实验报告及分析总结,以达到实践性与创新性的同步提高。

2.创新实验内容

目前,高校教學过程中所用教材及参考书大都以普教为目标,极少有针对专业或行业的例题和习题出现,而各高校开设的C语言实验教学内容恰恰大多为所用教材或参考书的习题。这类经典习题专业针对性差,对学生来说缺乏趣味性,用以进行功能验证尚可,但对于能力提高或创新教育的确是勉为其难了。而且随着网络等学习资源的普及使得问题的解决极为简单,学生仅需上网搜索一下即可得到完整答案,于是实验课程就成了简单的验证,很难起到锻炼和提高的作用。

为此,我们专门针对电子信息类专业的特点精心设计了实验内容,基础性实验采用经典案例,针对性强,利于学生的入门学习;设计型和综合型实验尽量选择与学生专业相关的项目,如数字滤波的实现、数据分析与验证等。这样一方面能够贴近学生所学专业,使学生不但学会了C语言,而且使得C语言有了“用武之地”;另一方面,在实际学习过程中,能够将学过的其他专业知识融入进来,提高了学生的兴趣及学习积极性,对其他专业课程的学习以至学生的学习风貌与学习态度起到了积极的推动作用。

二、改革实验教学模式

随着各高校对高等教育应用型人才培养改革的不断深入,各专业的教学内容有了较大幅度的修改和增加,在实际教学安排中“C语言程序设计”的理论与实践课时都进行了一定程度的压缩,为保证实践教学效果,在组织教学时进行了一些改革。

1.推行任务推动教学

随着计算机技术的应用与发展,C语言作为各理工科专业的程序设计入门课程,其培养方向应该是掌握程序设计及调试的一般方法,所以在实验教学组织中应以程序设计为主线,有意识地淡化C语言本身语句、语法的介绍,并积极推行典型算法与案例教学相结合的方法,通过精心设计与编排,将复杂枯燥的语法知识分解到每个生动、有趣、实用的程序实例中,把软件工程学的思想贯穿于算法分析和程序设计的过程中。例如,在每个知识单元开始之前先提出一个典型问题,如“业绩提成计算”、“数据排序”等,从问题入手,然后循循善诱,通过任务的分解、解决、综合逐步加以解决,这样不但使学生在程序分析与解决中掌握了相关语法,而且程序设计和解决问题的能力也得到了极大的提高。[2-3]

2.突出结构化程序设计特点

结构化程序设计是C语言程序设计的一大特点,而在当前的教材中却极少涉及到相关的实例,从而使得结构化程序设计在C语言教学中成了一句实实在在的空话。有些学生平时学得很认真,对语法、语句等细节也很熟悉,但碰到稍微复杂一点的编程则无从下手。在教学中,教师应该将现代程序设计的相关理念传授给学生:一般来讲,一个较复杂的软件常可以按功能分割为若干个典型的小模块,每个小模块最终都成为功能单一、结构清晰、接口简单、容易理解和编写的小程序,而加工对象——“数据流”就是将这些模块串接起来的“主线”,只要让学生掌握了典型的算法就可将这些算法变成像搭积木一样组装成相应软件的算法。

如在学过数组部分后,教师给出一个由计时函数GetTickCount()、格式输出函数printf()函数、格式输入函数scanf()一起构成的能够测试人的反应时间的“反应计时器”函数。在此基础之上布置学生设计主函数和相关函数,通过调用“反应计时器”函数完成两个个体各一组样本的采集(如各采集并存储10个独立的反应时间),并计算各自平均值、标准差等指标;进而进行t检验,对个体差别进行分析验证。这样不但使学生学会了相应的算法实现,而且对结构化程序的灵活性和易于扩展等特点及工程应用中的程序设计方法有了较为深刻的理解,同时对工程数学中较为“死板”的统计与检验内容的实际应用有了一个感性的认识,达到了实践能力与创新能力共同提高的培养目标。

另外,在教学过程中,教师还应有意识地总结归纳一些典型算法,并作为验证型实验内容,要求学生熟练掌握,如累加、累乘、查找、排序等,在后续设计型和综合型实验中将相关内容加入,使得学生能够用会、用活,为以后的程序设计奠定基础。同时,典型算法的熟练掌握也可增加学生学习计算机语言的信心,并提高学习兴趣。[4]

3.充分利用多媒体及网络教学平台

多媒体课件具有演示直观、动态性强等特点,易于被学生所接受和理解,尤其对于实践教学,多媒体课件能够进行直观的演示与模拟,满足了实验教学的要求,把难以理解的内容或不容易观察到的事物用多媒体充分显示出来,调动学生的视觉直观功能,为突破难点创造出良好的氛围,有效地弥补传统教学的不足。

運用网络教学平台进行课后习题的布置与讨论,引导学生提出问题并找寻解决方案。一方面,充分节约了课堂教学时间,缓解了课时不足带来的影响;另一方面,能够将更多的学生吸引到问题的分析与讨论中,“讨论出真知”——相对课堂教学而言,网络讨论扩大了讨论的参与面,能够最大限度地穷尽并纠正学生在问题理解过程中可能出现的问题,极大地提高了学生的学习积极性与学习效果。

4.强化实验教学过程管理

C语言是一门实践性很强的课程,除了要把理论知识学好外,上机实践也是相当重要的一个关键环节。学习中存在的疑点或难点,学生可通过上机调试得到明确解答,同时也加深对学习内容的理解。对学生而言,在每一次的上机前应做好充分准备,编写好上机内容;对上机中出现的问题应能调试分析,编写实验报告,分析程序结果。学生只有反复上机操作才能对C语言有更深、更全面的认识和理解,逐步提高实际操作和学习的能力。对教师而言,应精心设计上机实验内容。设计上机内容时,尽量把所学的内容综合起来,达到知识的系统化。同时,也可布置一些趣味性较浓的内容,以提高学生的学习兴趣,变学生的被动学习为主动学习。另外,上机内容尽量结合学生专业,让学生觉得学有所用。

三、改革实验教学评价模式

注意综合素质的培养与评价,在“C语言程序设计”期末考核中采用实验与理论考核相结合、平时成绩与期终考核成绩相结合的综合考核评价方式,并采用实验教学成绩一票否决的形式,从而改变学生在以往课程学习中“重理论,轻实践”的思想,激发学生学习的积极性与自主性,尤其在创新性培养上。具体做法是摒弃原先那种以对错判分的一刀切的评价方式,在平时教学中对学生实验完成的成绩评判要采用个案分析的方法,在充分理解学生设计意图的基础上因势利导,对设计中的创新之处或闪光点要给予充分的肯定;对不足和错误之处要帮助学生仔细分析,然后由学生自己总结改正,以提高学生的自信心,保护其学习兴趣,最后根据学生的完成情况及钻研态度进行综合评判。

四、总结

任何一种程序设计语言都有其独有的语法特点,作为程序设计入门课程的“C语言程序设计”也不例外,但是,应该认识到在高校C语言教学中,学习语法不是学习程序设计语言的真正目的,而是应该在掌握语法的基础上,通过学习与实践,真正地学会使用C语言来解决各种实际问题,进而使学生掌握程序设计思想,真正成为学生进入程序设计领域的“敲门砖”、“导航灯”。通过对近两年的学生期终理论考试成绩对比分析发现,改革前后对于语法部分的得分率没有明显变化,而综合编程题的得分率比以前有了大约25%的提高,且学生学习的积极性比以前有较大的提高,课程结束后不少学生又通过计算机等级考试等各种形式进行了进一步的学习与提高,C语言实践教学改革取得了理想的效果。

参考文献:

[1]谭浩强.C程序设计[M].北京:清华大学出版社,2006.

[2]郑人杰,马素霞,殷人昆,等.软件工程概论[M].北京:机械工业出版社,2001.

[3]敖志广,吕振辽,高克宁.非计算机专业本科生C语言的教学实践[J].计算机教育,2007,(1):53-54.

[4]林向宝.C语言教学探讨[J].黑龙江交通科技,2007,(4):120-121.

(责任编辑:王祝萍)

上一篇:2016年校宿管会新媒体部感恩节晚会总结下一篇:快餐行业现状分析