c语言程序设计实验题

2024-08-09

c语言程序设计实验题(共9篇)

篇1:c语言程序设计实验题

述:

输入三个整数x,y,z,请把这三个数由小到大输出。输入:

输入数据包含3个整数x,y,z,分别用逗号隔开。输出:

输出由小到大排序后的结果,用空格隔开。样例输入

2,1,3

样例输出2 3

#include

int main()

{

int *p1,p,*p2,*p3,a,b,c;

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

p1=&a;

p2=&b;

p3=&c;

if(*p1>*p2)

{p=*p1;*p1=*p2;*p2=p;}

if(*p1>*p3)

{p=*p1;*p1=*p2;*p2=p;}

if(*p2>*p3)

{p=*p2;*p2=*p3;*p3=p;}

if(*p1>*p3)

{p=*p1;*p1=*p2;*p2=p;}

if(*p2>*p3)

{p=*p2;*p2=*p3;*p3=p;}

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

return 0;

}

篇2:c语言程序设计实验题

实验二 循环结构程序设计

班级 2012196 学号 201219628 姓名 李明月

一、实验目的

(1)掌握用while语句,do-while语句和for语句实现循环的方法;(2)掌握循环结构的嵌套;

(3)掌握break语句和continue语句的使用方法。

二、实验内容及步骤

1.相传国际象棋是古印度舍罕王的宰相达依尔发明的。舍罕王十分喜欢象棋,决定让宰相自己选择何种赏赐。这位聪明的宰相指着8×8共64格的象棋盘说:陛下,请您赏给我一些麦子吧,就在棋盘的第一个格子中放1粒,第2格中放2粒,第3格放4粒,以后每一格都比前一格增加一倍,依此放完棋盘上的64个格子,我就感恩不尽了。舍罕王让人扛来一袋麦子,他要兑现他的许诺。国王能兑现他的许诺吗?

程序1:试编程计算舍罕王共要多少粒麦子赏赐他的宰相,这些麦子合多少立方米?(已知1立方米麦子约1.42e8粒)总粒数为:sum=1+2+22+23+„+263 程序代码:

#include int main()//定义一个主函数 { int i;double t=1,sum=1,v;//定义变量

for(i=1;i<=63;i++)//用for循环语句实现循环运算 { t=t*2;sum+=t;//循环表达式 } printf(“总麦粒数为:%fn”,sum);v=sum/1.42e8;printf(“折合体积为: %f立方米n”,v);//对结果进行输出

return 0;} 运行结果:

2.求完数。

程序2:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6的因子为1,2,3,而6=1+2+3,因此6是“完数”。编程找出1000之内的所有完数,输出所有的完数(要求:一行显示6个数);

程序代码:

#include int main(){ int i,j,sum,n=0;printf(“ 1000以内的完数有:n”);for(i=1;i<=1000;i++){

sum=0;for(j=1;j

if(i%j==0)

{

sum=sum+j;

} } if(sum==i)

{ printf(“ %d”,i);

n=n+1;

if(n%2==0)

printf(“n”);

} } printf(“n”);return 0;} 运行结果:

3.打印九九乘法表

程序3:编程输出如下上三角形式的九九乘法表。2 3 4 5 6 7 8 9-------n“);for(i=1;i<10;i++)//i { for(j=1;j<=i;j++)// printf(” “);for(j=i;j<10;j++)//j printf(”%-2d “,i*j);// printf(”n“);}

代表行 输出空格达到来使得向右对齐代表列

输出行与列的乘积 3 1 2 3 4 5 6 7 8 9

运行结果:

三、问题讨论

break语句和continue语句在循环结构中使用时有何区别?举例说明。

break语句是跳出整个循环过程,不再判断执行循环的田间是否成立,并且break语句不能用于循环语句和switch语句之外的任何其他语句中。而continue语句则只是结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。

例子:

#include int main(){ int i;for(i=100;i<=200;i++){ if(i%3==0)continue;

printf(”%d“,i);} printf(”n");return 0;} 输出:

但是换成break之后:

四、实验心得

篇3:C语言程序设计实验课程教学探索

C语言程序设计作为一门重要的程序设计语言入门语言, 在课程体系中的地位不言而喻。盐城师范学院将C语言程序设计作为计算机专业本科生程序设计课程的基础核心课程, 已有多年历史。该课程对培养学生计算思维、编程能力、自学能力和分析解决计算机问题的能力有着至关重要的作用, 并对后续课程, 譬如算法与数据结构、数据库原理、操作系统等核心课程的学习有非常大的支撑作用。但是, C语言中概念多、难点多、语法复杂、设计到的硬件知识多、使用灵活、不易调试等特点, 容易导致学生出现畏难情绪, 极大地遏制了学生的学习兴趣。本文针对以上问题就该课程对应的实验课程做几点思考, 从课程内容、教学方法、教学手段等几个方面进行大胆改革, 积极投身教学实践, 结果显示我们的改革能取得较好的效果。

2 传统教学模式存在的问题 (Defects of traditionalteaching model)

C语言程序设计实验课程是计算机专业进入大学后要学习的第一门程序设计实践课程, 它对提高学生编程兴趣和动手能力有着至关重要的作用。或者说, 该课程是热爱编程和害怕编程的两种学生的分水岭。传统教学模式在实际教学过程会存在以下问题[1]。

(1) 生源的计算机基础参差不齐, 有些学生进入大学前就已经通过计算一级考试, 有些学生还没有接触过计算机。进入大学后同一平台学习程序设计, 后者明显感觉到有压力, 自信心受打击从而出现厌学的情绪。

(2) 传统教学模式的过程以教师为主体, 学生被动的学, 对于实践性很强的课程, 学生逐渐丧失兴趣, 缺乏学习的动力。C语言程序设计实验课程上, 如果只是简单的做些验证性实验, 则不能培养学生独立编程解决问题的能力, 极大地扼杀了学生的创造力。

(3) 由于被动的学习, 造成只是照本宣科, 缺乏钻研精神, 导致学生在后续专业课程或参加设计性、综合性实验课程时, 往往力不从心, 达不到预期的教学效果。

(4) 教师对课程教学目标不明确, 认为将该课程的语法知识传授给学生就达到教学目的, 这样就背离了通过学习C语言应该培养学生能够用编程语言去分析和解决实际问题的能力的宗旨。

3 改革方案 (Project of innovation)

C语言程序设计是一门实践应用性较强的学科, 在日常的教学过程中需要不断强化实验环节, 让学生在操作实践过程中不断地发现、分析和解决新问题。为了实现上述目标, 教师在教学过程中必须要结合有效教学理论的要求, 努力改进教学方法。

3.1 精心设计好教学内容

案例教学教学法的理论依据是构建主义学习理论[2]。构建主义者认为, 教学设计要发挥学习者在学习过程中的主动性和构建, 教师的职责在于使学习者置身于探索知识之中, 为他们提供适当的“情境”[3]。在设计案例时, 要兼顾不同基础的学生, 不能让实验课变成少数人的实验课。因此, 我们将教学内容按层次组织。第一个层次为基本知识, 所有的学生都必须能够通过自身的努力顺利完成, 这样可以极大提高学生的学习积极性。第二个层次为对所学知识简单的应用, 这个层次对基本概念和方法加深理解, 需要学生通过自己的钻研、参考课外资料, 发挥自己的学习能力。通过这一层的学习, 所有的学生应该能够学会主动积极地查阅文献, 切实提高自己的钻研和自学能力, 同时也能鼓舞学生的斗志。第三个层次是用所学知识去解决实际问题, 真正做到培养学生的创造力。这个层次需要通过大量的思考和联系才能达到, 同时也能选拔出具有一定天分的学生。

3.2 激发学生的学习兴趣

兴趣是最好的老师, 同时兴趣也是学好程序设计的关键, 而培养学生对C语言程序设计课程的兴趣关键在于实验课。激发学生的学习兴趣的关键莫过于让学生有解决实验中碰到问题的能力, 不会因为C语言本身的问题丧失学习的信心。比如, 让学生掌握调试手段。首先我们使用一个有趣的现象引出为何要使用调试工具, 以及调试工具使用方法。例如, 我们给出如下所示代码, 请学生写出运行结果。绝大部分学生会给出从246到255的十个数。运行的结果告诉他们结果应该是一个死循环, 这样会激发学生的想知道原因的兴趣。

#include

int main ()

{

unsigned char a;

for (a=246;a<256;a++)

printf (“%dt”, a) ;return 0;

}

我们用VC++ 6.0的调试工具, 在循环体语句前设置一个断点, 执行debug, 并执行单步调试, 发现当a为255后for循环并没有能停止, a的值变成了0, 如图1和图2所示。这时学生会回忆起unsigned char类型的变量取值范围为0—255。当变量a值为255时再加1就回头变成了0。这样学生会对调试工具的使用有一个非常深刻的印象, 同时也会明白掌握调试工具的重要性。更重要的是, 极大地激发了学生的学习兴趣。

3.3 设计考核体系

目前许多高等院校C语言程序设计课程学习成绩的评定, 仅以期末一张考试卷的完成情况而定, 这使得很多学生不重视实验课, 认为实验课学得好与不好对成绩影响不大, 很多学生重理论、轻实验[4]。我们将考核贯穿整个学习过程中, 每学完一个知识点进行一次考核。考核的方式灵活多样, 可以通过诸如答辩、课后撰写小论文、完成实验报告等方式。考核过程中发现的问题决定教师教的过程, 可以通过集中讲授、设计思考题、提供参考资料等方式解决学习过程发现的问题。

4 结论 (Conclusion)

多年来, 我校在C语言程序设计实验课上进行了改革的尝试, 许多老师积极参与教学改革, 取得了辉煌的成果。我们一直在努力寻找提高学生对C语言程序设计实验课程的兴趣、最有效的教学手段, 为计算机专业学生提高动手能力、编程思维能力做出自己的努力。

参考文献

[1]王创伟, 汤克明, 蔡长安.“C语言程序设计”教学改革方案与实践[J].现代计算机, 2010 (10) :23-25.

[2]温彭年, 贾国英.建构主义理论与教学改革:建构主义学习理论综述[J].教育理论与实践, 2002, 23 (5) :17-22.

[3]储岳中, 秦锋, 刘哄申.“C语言程序设计”理论与实践一体化教学的几点实践[J].计算机教育, 2012 (12) :22-25.

篇4:c语言程序设计实验题

【摘要】本系统主要研究C语言编程题目中“编译运行结果对比”、“编译错误原因恢复与评阅”、“得分点分割正则动态测试”三种手段,将研究内容运用到自动阅卷系统中,实现对编程题目的自动评分,并实现基于J2EE技术的具有在线考试、自动评分等功能的C语言编程题目自动阅卷考试系统,提高阅卷的准确度的同时能够节省大量的人力物力财力。

【关键词】C语言;编程题;自动评分

随着计算机技术的发展以及互联网的普及,办公自动化已无处不在。作为一门基础课程,C语言考试应用系统也给批阅试卷的工作人员带来了很大的工作量,自上世纪六十年代起,国内外就陆续出现了许多关于语言类课程考试的软件系统,虽然很多已具有基本的随机答卷、上机考试及自动评阅等功能,但只针对客观题,因自然语言的刻画、人工智能、模式识别等核心技术发展缓慢,制约了编程题目阅卷系统研究发展。所以,本系统针对C语言编程题目进行整体规划,致力于做出更精确的C语言编程题自动阅卷的方法,填补自动阅卷软件开发空白,减少人工操作的资源浪费。

1.系统运行环境

智能C语言考试系统、自动评分系统的运行环境是根据我校现有的教学机房的硬件环境(每个机房有70台学生机和一台教师机)规划的,教师端和学生端都采用window 7操作系统,每个机房都采用校园公共网络提供的局域网,运用Myeclipse开发环境、MySQL数据库建立一套具有在线考试、自动评分等功能的C语言编程题目自动阅卷系统,并辅以AJAX技术,确定了用FreeMarker表现层技术增强用户与系统间的交互,加快系统运行效率,同时,尽可能细化评分点,增加准确性。

2.系统运行模式的选择

系统采用B/S三层架构模式,系统的用户可通过Internet网络,客户端不需要手动安装软件,只要有浏览器就可以对系统进行访问和一般操作,本次对阅卷系统主要分析了的C语言编程题目评分功能,充分考虑到系统对灵活性和准确性的要求,并保证安全性的前提下,本系统采用B/S结构以达到轻客户端需求。

3.系统研究内容

通过研究C语言程序结构,从编译原理角度设计评价模型,通过内部运行编译器对比动态运行结果,并且本课题创造性提出利用关键字对比、控制结构判断和正则表达式匹配三种静态测试技术作为结果比对方案的补充,既保证了程序判断的正确性,又确保了相对公正性。

编译结果对比要实现程序内部对C语言编译器的动态调用技术,通过比对测试结果和标准答案进行评分,对于不能编译部分,研究关键字库建立、控制结构规范化和正则表达式建立的具体方案。

其中重点研究C语言编程题目评分标准的两个方面:一是如何检验运行结果的正确性,二是如何评价程序代码包含的分点。

为突出本系统对主观题的评分机制,在试题主观题程序可运行以及不可运行的情况下分别给出了相应的评分策略,以此来一步步细化评分机制。

4.评分核心模块设计

详细设计自动阅卷系统中的关键技术——程序题评分。系统首先采用动态测试技术,编译运行待评价程序,和标准答案进行对比给出分数;需要数值型输入参数的程序,通过均匀分布随机数给出随机输入;需要字符型输入参数的程序,首先在数据库中保存预选文字段,然后随机选取其中的一部分给出随机输入。对于编译运行报错的程序代码,课题会采取错误恢复技术,通过编译信息给出的错误位置尝试以标准答案修复代码,从而给出扣分点。最后对于不能编译运行的代码片段,系统提出关键字对比、控制结构标准化和提取、正则表达式规则匹配相结合的静态测试方法,加入权重处理,分析得分点给出更全面客观的评分结果。

通过对软件模式的对比和分层架构模型的研究,系统拟采用B/S结构,方便用户在线答题和管理操作;在具体实现技术方面,拟采用J2EE技术和SSH开源框架——利用Java语言提供的公开接口开发调用C语言编译器模块和正则表达式匹配模块,利用MySQL数据库完成题库和答案库的建立和开发工作,利用Ajax技术提高系统的整体响应速率,利用FreeMarker表现层技术增强用户与系统之间的交互。

建立计算机矫正机制和完善的评价方案,并对试题多次进行人工阅卷与机器阅卷的对比测试。

5.数据库设计

因需要评测本系统自动阅卷功能和人工阅卷的准确度,给出测评结果,并对仍存在的问题和不足提出进一步改进方案;特别是对系统不能正常评分的特殊题目,建立特例题库,以便在今后的工作进行研究并从中提出新的解决方案。

考生提交试卷首先由c语言编译器自动编译后生成可执行文件并运行输出结果,进行评阅步骤校验结果时,通过试题编号(id)调用试题表数据,对比答案进行准确性校对,调用纠错参考库数据,比对出错原因并根据错因扣除相应分数,通过模糊匹配替代出错关键字,迭代匹配错因至无错,若迭代五次还未改正视为崩溃性错误,不可弥补,判定本段分数为零崩溃性错误,不可弥补,判定本段分数为零,通过题目编号获取相应评分关键点库,通过正则表达式匹配得分点,通过得分点数量给出相应分数,完成试卷评阅。

当程序不能正常编译运行时,系统判定进入系统纠错,系统自动运行修复性算法,代码中个别关键字错误,为此我们把c语言中所有的关键字整理出来,建立关键字库,对错误的关键字进行模糊匹配,通过字符的顺序、相同字符的数量、键盘键位的keycode尽可能的匹配出相似度最高的的关键字替换错误的关键字。

纠错主要是语句拼写错误,我们分了下面三种情况:

1)测试用例由测试输入数据和与之对应的预期输出结果组成,人们常用白盒法和黑盒法设计测试用例,其中白盒法主要是为了检查是否有数据结构或外部数据库访问错误等,对比通过单元测试的模块或组件、编程规范、集成测试来检查测试的准确性。

通过正误判断匹配正误判断表进行结果判定,判定结果是否符合题目,若是则给分,否则进行结果范围判断及结果属性判断,比对结果是否适用本题范围,并进行分数评估。

2)本表主要有三个主要信息id、name、keyword。分别用来存储错误的id、错误的名称、题目中的关键字。Id的数据类型为int(整型),name的数据类型为varchar(字符型),keyword的数据类型为varchar(字符型),id需要主键非空自增,name与keyword非空。通过建立本数据库表可以实现对错误信息的收集归类,同时可以实现判断系统中出现的错误的功能。

定位捕捉错误点,抛出错误原因并与数据库进行比对,并根据错因给予相应分数,运用模糊匹配寻找替代关键词,进行替代继续检查错误,若连续替代五次后仍然不能进行下一步骤视为程序崩溃行错误,不可弥补,判定本段分数为零。

3)正则表达式,又称正规表示法、常规表示法(英语:RegularExpression,在代码中常简写为regex、regexp或RE),正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串,在本字段里,正则表达式通常被用来检索、替换那些符合模式的程序段,进行分步得分。

本数据库包含关键字类库,通过正则表达式匹配关键词多寡,大概率的确定了答题者的思路范围及答题思路的正确与否,给以步骤分,极大的提高了批卷的人性化,拉近了机器阅卷与人工阅卷的阅卷水平,更有说明行的体现了机器阅卷更好的使用性。

C语言考试系统已普遍在各高校使用,对于客观题方面,有了相对完善公平的系统,但是在自动评分方面,还有很多不足之处,有待改善,本系统就是针对这一空白区域,设计公平而相对更准确的算法,主要对C语言考试系统中的编程题部分进行得分点分割,对考生的程序一步步细致分析,做到该得分的地方给考生相应的分数,这样避免了某一点小错误导致的大幅度扣分的不公平性,同时,将系统应用到学生的日常学习中后,能够更好地检验教师的教学成果,查找教学过程中需要注意的地方,对于学生,也能够更好地发现自己的错误,及时改正,这样,在学习的过程中,在保证公平的前提下,培养学生注意细节的习惯,最重要的是,应用到高校的二级C语言考试后,能够更好的给考生更公平更合理的考试成绩,同时也使得阅卷更加节约、方便、快捷,这也顺应了如今社会计算机行业的飞速发展,提高办公自动化的程度及效率。

参考文献

[1]K.A.Redish,W.F.Smyth.Pragram style analysis:a natural by-product of prograrn compilation[J].Cornnnunications of the ACM,1986.(3):126-133.

[2]Yasuhiro Ajiro,KazunoriUeda.Kima:An Automated Error Correction System for Concurrent Logic Progrrams.Automated Software Engineering 2002.9(2):67-94.

[3]王甜甜,基于语义相似度的编程题自动评分方法的研究,哈尔滨工业大学硕士论文,2001;1-52.

[4]李永浩,居于程序理解的编程题自动评分系统愤愤研究与应用,哈尔滨工业大学硕士论文,2001:1-60

[5]王华东.刘国柱.基于局域网下C语言考试系统的设计与实现[J].计算机与信息技术,2006.

篇5:C语言程序设计实验九

【实验题目1】

写几个函数:(1)输入10个职工的姓名和职工号;

(2)按职工号由小到大排序,姓名顺序也随之调整;

(3)要求输入一个职工号,找出该职工的姓名。

从主函数输入要查找的职工号,输出该职工姓名。

【实验题目2】有一行电文,已经按下面规律译成密码:

A → Za → z

B → Yb → y

C → Xc → x

篇6:C语言程序设计实验安排

实验一 顺序结构程序设计(2学时)

一、实验目的熟悉在VC运行环境下,编辑调试C语言程序的一般步骤。掌握顺序结构程序设计的基本思想和基本方法。

二、实验要求

1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。

3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。

5.最后提交带有注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。

6.源程序注释信息可以包括以下几方面内容:

⑴ 程序功能描述。

⑵ 程序版本号、创作日期。

⑶ 作者信息描述:班级、学号、姓名。

⑷ 问题分析描述。

⑸ 算法设计描述。

⑹ 关键语句注释说明。

⑺ 调试运行过程中出现的错误及改正方法。

⑻ 输入数据样例。

⑼ 输出数据样例。

三、实验内容

以下两题,任选其一解答。

你知道淄博到北京的地面距离是多少千米吗,淄博到纽约的地面距离又是多少千米呢?说不上来了吧。还是让我们编一个程序来计算一下吧。

1.已知地球的平均半径为6371千米,假设在地球的同一纬度上,有两个处于不同经度的城市A、B,编程序求出这两个城市之间的地面距离。

输入数据样例:例如,欲求北纬30度上东经10度到东经50度的距离,输入格式应为:30 10 50

参考测试数据:

输入:0 0 180 输出:20015.08

输入:30 0 90 输出:8397.7

2输入:60 0 45 输出:2453.20

2.地球的平均半径为6371千米,已知地球上两个城市A、B的经度和纬度,编程序求出这两个城市之间的地面距离。

提示:球面上两点之间的最短距离,等于过这两点以球心为圆心的圆上,这两点之间劣弧的长度。(即这两点与球心之间的连线构成的夹角所对球面劣弧的长度)。

建议你自己一步步推导出公式,而不要照搬网上的现成公式。

四、常见问题

疑问1:这分明是两道数学题啊,能否将数学公式提供给我们呢,我们的主要任务不是编写程序吗?

答:建立数学模型也是编程序的一部分。学会分析解决现实中遇到的问题,是我们学习的重要目标。

疑问2:这个问题好像属于球面几何的范畴,用平面几何可以求解吗?

答:这个问题的确涉及到球面几何,但是也的确可以利用投影以及平面几何方法来求解。

实验二 选择结构程序设计(2学时)

一、实验目的

掌握选择结构程序设计的一般方法及选择结构程序的调试方法。

二、实验要求

1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。

3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。

5.最后提交带有充分注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。

6.源程序注释信息可以包括以下几方面内容:

⑴程序功能描述。

⑵程序版本号、创作日期。

⑶作者信息描述:班级、学号、姓名。

⑷问题分析描述。

⑸算法设计描述。

⑹关键语句注释说明。

⑺调试运行过程中出现的错误及改正方法。

⑻输入数据样例。

⑼输出数据样例。

三、实验内容

你知道你生日那天是星期几吗,还有你知道你爸爸生日那天是星期几吗?你可能会说:可以查万年历啊。那么,不查万年历你能计算出来吗?

以下两题,任选其一解答。

1.编程序实现:输入一个年份y,求出从公元1年1月1日到y年1月1日,总共有多少天,并求出y年的1月1日是星期几。

2.编程序实现:输入任意一个日期的年、月、日的值,求出从公元1年1月1日到这一天总共有多少天,并求出这一天是星期几。

四、常见问题

疑问1:闰年的规律是不是四年一闰?

答:四年一闰是儒略历(儒略也就是凯撒大帝)的置闰规则。我们现在使用的是格里高利历,置闰规则是每400年97闰。

疑问2:公元1年1月1日是星期几呢?

答:星期一。

疑问3:据说从儒略历改为格里高利历时,将1582年10月4日的下一天定为格里高利历的10月15日,中间销去了10天,这会不会影响星期几的计算?

答:这个调整是对儒略历误差的纠正,并不会影响总天数和星期几的计算。

疑问4:这里计算总天数,好像要用到循环程序吧?

答:其实根据闰年的置闰规则,不使用循环也可以计算出来总天数。当然,你想使用循环编写该程序也是可以的。

实验三 循环结构程序设计(2学时)

一、实验目的掌握循环结构程序设计的一般方法及循环结构程序的调试方法。

二、实验要求

1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。

3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。

5.最后提交带有充分注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。

6.源程序注释信息可以包括以下几方面内容:

⑴程序功能描述。

⑵程序版本号、创作日期。

⑶作者信息描述:班级、学号、姓名。

⑷问题分析描述。

⑸算法设计描述。

⑹关键语句注释说明。

⑺调试运行过程中出现的错误及改正方法。

⑻输入数据样例。

⑼输出数据样例。

三、实验内容

以下两题,任选其一解答。

1. 海萍夫妇为了彻底告别“蜗居”生活,痛下决心贷款60万元购买了一套三居室。若贷款月利率为0.5%,还款期限为120个月,还款方式为等额本金还款法(即贷款期限内每期以相等的额度偿还贷款本金,贷款利息随本金逐期递减)。试求出每个月还款的本金、每个月的利息以及总利息分别是多少元。

2. 若还款方式采用等额本息还款法(即贷款期限内每期以相等的额度偿还贷款本息,贷款利息随本金逐期递减)。试求出每个月还款的本金、每个月的利息以及总利息分别是多少元。

四、常见问题

疑问1:等额本息还款法每个月的还款额怎么计算,应该有个公式吧,要不然怎么计算出来每个月应还的利息与本金?

答:的确有一个计算公式。当然你可以自己推导出来(这样你会很有成就感!),要不然就从网上搜索出来。

实验四 循环程序综合应用(4学时)

一、实验目的:

掌握循环结构程序设计的一般方法及循环结构程序的调试方法,能够综合运用顺序、选择和循环结构解决一般难度的实际应用问题。

二、实验要求

1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。

3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。

5.最后提交带有充分注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。

6.源程序注释信息可以包括以下几方面内容:

⑴程序功能描述。

⑵程序版本号、创作日期。

⑶作者信息描述:班级、学号、姓名。

⑷问题分析描述。

⑸算法设计描述。

⑹关键语句注释说明。

⑺调试运行过程中出现的错误及改正方法。

⑻输入数据样例。

⑼输出数据样例。

三、实验内容

以下两题,任选其一解答。

1.编程序实现如下功能:输入任意一个年份和月份,按以下格式输出该月份的公历日历。

要求由程序计算出来该月份的1日是星期几,并用循环控制打印。打印样例如下:

2012年日历

==========

9月

---------日 一 二 三 四 五 六2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30-------------------------

2.编程序实现如下功能:输入任意一个年份,按以下格式输出该年份全年的公历日历。要求由程序计算出来每个月份的1日是星期几,并用循环控制打印。

四、常见问题

疑问1:如何控制某个月1日的打印位置?

答:先由程序计算出来该月份的1日是星期几,然后控制在打印“1”之前打印相应个数的空格。

疑问2:如何控制每周和每月的打印换行?

答:可以根据当前这一天的打印位置控制每周的打印换行,并根据该月份的天数控制每月的打印换行。

实验五 字符串处理综合应用(4学时)

一、实验目的

掌握字符串处理的一般方法及字符串处理应用程序的调试方法,能够综合运用选择、循环结构和数组、指针解决一般难度的实际应用问题。

二、实验要求

1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。

3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。

5.最后提交带有充分注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。

6.源程序注释信息可以包括以下几方面内容: ⑴程序功能描述。

⑵程序版本号、创作日期。

⑶作者信息描述:班级、学号、姓名。

⑷问题分析描述。

⑸算法设计描述。

⑹关键语句注释说明。

⑺调试运行过程中出现的错误及改正方法。

⑻输入数据样例。

⑼输出数据样例。

三、实验内容

以下两题,任选其一解答。

1.编程实现,输入一个整数的小写金额值(即不考虑角和分),转化为大写金额值并输出。先实现基本功能,如输入1002300,可以输出“壹佰零拾零万贰仟叁佰零拾零元整”。

2.编程实现,输入一个小写金额值,转化为大写金额值输出。要求实现相对完善的功能,如输入1002300.90,应该输出“壹佰万贰仟叁佰元零玖角整”。

四、常见问题

疑问1:如何才能分离出整数中的每一位数字?

答:可以利用整数的求余数和除法运算实现数字的分离,同时将分离出的数字存入到一个事先定义好的数组中,每个数组元素只存储一位数字。

疑问2:若不能确定整数的实际位数,如何控制分离过程?

答:可以通过循环控制数字的分离过程,每循环一次分离出来当前的最末一位,然后去掉最末一位,直至分离出所有的位。

疑问3:如何控制给某位数字添加合适的数量单位,如万、仟、佰、拾、元?

答:可以根据该数字在原小写数值中的位置进行控制,如第0位单位为“元”,第1位单位为“拾”,依此类推。

实验六 文件应用程序设计(2学时)

一、实验目的掌握文件应用程序设计的一般方法及其调试方法。

二、实验要求

1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。

3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。

5.最后提交带有充分注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。

6.源程序注释信息可以包括以下几方面内容:

⑴程序功能描述。

⑵程序版本号、创作日期。

⑶作者信息描述:班级、学号、姓名。

⑷问题分析描述。

⑸算法设计描述。

⑹关键语句注释说明。

⑺调试运行过程中出现的错误及改正方法。

⑻输入数据样例。

⑼输出数据样例。

三、实验内容

以下两题,任选其一解答。

1. 海萍夫妇为了彻底告别“蜗居”生活,痛下决心贷款60万元购买了一套三居室。若贷款月利率为0.5%,还款期限为120个月,还款方式为等额本金还款法(即贷款期限内每期以相等的额度偿还贷款本金,贷款利息随本金逐期递减)。试求出每个月还款的本金、每个月的利息以及总利息分别是多少元。要求将输出结果写入到数据文件中。

篇7: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++);

篇8:c语言程序设计实验题

1 高校C语言实践教学中存在的问题

1.1 实践教学内容有待优化

实践教学内容全部依附于理论教学课程, 实验项目陈旧, 只是配合每一章所学的内容在计算机上进行实践, 验证性实验项目较多, 缺少综合性、设计性实验。扩展内容太少, 不利于学生进行开拓性实验内容的设计, 不利于学生创新思维能力的培养。

1.2 实践教材形式单一

课程采用的实验教材与习题集合二为一的, 每一个实验题目都能在本书中找到答案, 学生只要把源程序输入计算机, 进行简单的调试就可以得到实验结果, 用不着去查资料、思考和创新, 编译出错时不是根据错误提示查找原因, 而是与书上的程序进行比对, 改正录入错误。这样不利于培养学生发现问题、分析问题、解决问题的能力。

1.3 实践教学方法有待创新

教师在教学过程中使用单纯的讲授法, 往往把实验过程、注意事项等讲得很详细, 学生实验时只是按照步骤被动的进行, 缺少独立思考、提问、尝试的机会, 主动性得不到发挥, 创新思维训练无从谈起。上课讲的内容在讲过之后, 无法反复学习研究, 学习者层次不一, 对知识的接受能力也存在较大差异, 造成学习者对教师所操作的步骤无法全部掌握。不利于激发学生对实验教学的兴趣和积极性, 不利于学生进行探究式学习。

2 C语言实践教学的实施内容

2.1 优化实验教学内容

为全面提高学生的实践能力, 使实验教学能够满足不同层次学生的自主学习需求, 我们对实验课程内容进行了规范和优化, 新的C语言程序设计实验内容系统地构建了实验项目模块, 确定开设16个实验。考虑到本课程为专业基础课, 实验项目以基础实验项目为主, 增加综合性实验项目, 使其具有从易到难、从基础到综合的系统性。

实验项目的精心选择。C语言有三种基本结构:顺序结构、选择结构和循环结构, 这三种结构是学生程序学习的入门结构, 所以我们进行了精心的选择, 例如我们在循环结时设计了两个题目, 1.编程计算5!, 要求输出结果为:1×2×3×4×5=120。2.输入10个数, 求其中的最大数和最小数。这两个程序难易适中, 不仅能够很好运用循环结构, 而且为后续的递归结构打下基础, 环环相扣, 由浅入深。

实验题型的多样化。在以往的实验课中, 大部分老师布置的实验题目题型单一, 内容不丰富, 为了全方位地训练学生程序设计能力, 在程序设计中设计多种类型的实验题目, 包括填空设计题, 程序修改题, 编程题等。

2.2 加强实验教材建设

实验教学的正常实施, 离不开相应教材的指导, 为给学生提供一定广度和深度的实验教材和辅助资料, 我们将编写实验指导手册;同时在新的教材中扩充一部分高级编程, 扩展学生的知识面;再加入常见错误代码, 以便学生能够更快的改正自己的程序, 也可预防一些错误的发生。

2.3 完善实验教学方法

将问题分析法, 项目实验法、任务驱动法等多种教学方法融合, 提高学生解决问题的能力, 增加学生的学习兴趣。鼓励学生参加学生社团, 开展趣味编程。组建编程竞赛和兴趣小组, 加入真实的实践项目, 增加学生参与项目的能力。

2.4 实验考核方法的改进

目前实验成绩主要是各个实验成绩的总合, 不能合理的评判出学生的水平和能力。我们将实验成绩分为三个部分, 实验考勤20%, 实验现场打分40%, 实验报告40%。这样给出的实验成绩不仅能够反映学生的真实能力, 而且量化科学。另外设定一部分加分项目, 当学生完成高难度项目时, 另设定加分内容。

3 C语言实践教学的具体实施

围绕理论教学, 设计出相关的例题, 习题、上机指导题以及工程化思想的项目指导题, 坚持实践和理论教学相结合, 以实践教学促进对理论教学的深入理解, 将理论教学置于实际应用的背景之下;以实践教学为手段, 培养学生的计算思维、工程化思想, 训练学生的分析问题、用程序的思维去解决问题的能力, 提高学生的编程能力及调试能力。主要从以下五种实践教学方面实施。

3.1 课内上机实践环节

上机实践课上要求学生在实验室按照理论课讲解的内容进行巩固相应的理论教学知识, 特别是相应的语法知识的熟悉, 然后根据教师布置的题目进行相关的程序分析与设计, 主要是分析该应用中主要用的相关语法知识, 解决思路、分析和处理实际问题。通过上机实践环节, 学生可以基本分析、处理、解决、调试程序的能力。

3.2 课外实验实践环节

要求学生按照本教材配套的C上机实验指导书完成相关的实验操作, 上面的题目设计是以理论教学和上机实践环节相对应的知识去设计的, 能够很多的满足学生对该门课的学习。

3.3 综合性实践环节

布置一个小型软件项目设计, 让学生以工程化的思想从需求分析到最后的实现、运行维护整个工程化阶段去完成课程的设计实践, 使学生在应用项目中学习理论和实践知识。进一步开发学生独立分析、独立思考、独立完成和解决实际应用问题的能力, 综合运用所学的理论知识, 做到融会贯通, 加深学生对编程基本理论的认识和理解。

3.4 学生学习社团趋动

学院有相应的学习社团, 每个社团为每个学生提供的专门的学习场所 (具有上机练习的环境) 及相应的指导教师、高年级的学生的指导, 定期的知识技术的讲座、培训、辅导, 另外还有本专业相关的应用项目支持, 从而达到了实践教学的更高的目的。

3.5 自主研发的云平台的环境支持

学生实验环境全部在学院自行研发的云平台的系统进行操作和实验的, 使学生能切实感受到在自己开发的平台下运行软件, 编写程序与调试程序的乐趣。

4 结语

C语言程序设计是对于初学者来说难以掌握, 很容易让初学者失去学习程序的兴趣, 而实验教学更是难于把握。本文针对C语言实验教学中存在的各种问题, 给出了具体的改革措施, 并在2013、2014级新生中进行实践, 通过这种教学方法的改革, 新生的C语言实践能力得到了明显的提升。通过调查, 学生对于学习编程语言的兴趣大大提升, 对于理论知识的理解也更加深入。

参考文献

[1]董永权.C语言程序设计实验教学中的问题及改革措施[J].科技视窗, 2011 (26) :61-62.

[2]郝慧馨, 李秀坤, 夏清泉.C语言程序设计实验教学探索[J].计算机教育, 2010 (17) :82-84.

篇9:c语言程序设计实验题

【关键词】C语言 程序设计 实验 考核体系

【中图分类号】G64【文献标识码】A 【文章编号】2095-3089(2016)37-0234-01

1.引言

C语言程序设计(实验)通过上机实践,可以帮助学生巩固课堂教学的理论知识,真正体现学生将知识“内化”的过程[1],意在培养学生分析问题、解决问题的实际动手能力和创新能力。传统的实验课程考核方式单一,不能公正的评价学生的实际综合能力。为了全面培养学生的学习兴趣、全面考查学生的综合知识点,全面注重学生的创新能力和实践能力的提高,以达到培养创新人才的目的,切实推进课程考核改革及考核体系已经刻不容缓[2]。

2.课程简介

程序设计基础是一门专业基础课,这门课通过全面、深入、系统地介绍程序设计方法和程序设计语言,使学生初步建立起程序设计的基本概念,通过学习一种典型的程序设计语言(C语言),初步掌握程序设计方法,具有一定的程序设计能力。我院的程序设计基础(C语言)分上下两个学期,程序设计基础(一)和(二),程序设计实验是单独的一门课程,有程序设计基础(一)实验和(二)实验,实验内容主要是辅助,强化理论各个章节的知识点,提高学生的动手能力为目的进行设计的。

本考核体系是基于程序设计基础(一)实验设计的。我院程序设计基础(一)主要的内容有:数据的表示、组织和处理、程序的基本结构控制(顺序、选择和循环)。

3.現行的考核方式

现行的考核方式比较单一,是从三个方面进行成绩给定:(1)考勤;(2)实验报告;(3)创新设计。这里的(2)和(3)都是以实验报告来给定成绩,其中一部分以实验报告的书面结果给定成绩,另一部分以答辩实验报告的方式给定成绩。现行的考核方式不能公正的评定学生的实际综合能力,也没有促进学生进行创新设计。

4.全程考核体系的构建

全程考核体系意在促进学生核心能力的提升,在学习过程和学习结果两个维度上设置考核指标:过程考核可以提高课程的教学质量,培养学生的学习能力以及提高学生的协作能力、表达能力、沟通能力等综合素质;结果考核目标是使学生掌握基本理论、基本知识的基础上增强职业素养与专业技能,提高分析问题及解决问题的能力。

全程考核体系:

(1)考勤

考勤是学生学习的基础和保证,能促使学生养成遵章守纪的习惯,以培养学生进行自我管理。每次实验使用E-learning系统进行签到记录。

(2)实验报告

实验课中,教师观察、了解学生学习的过程,学生参与课堂活动的广度和深度,学生学习过程中表现出来的解决问题的能力。而实验报告是实验过程中唯一存档的资料,是值得重视的环节。教师根据学生的实验报告的完成步骤、完成程度以及答辩等对每次实验进行综合评价。

(3)综合大作业

为培养学生的创新能力及实践工程能力,让学生以三人一组,综合运用所学知识,共同自主学习、相互启发、收集资料、团队协作开发一个趣味性、实用性的小系统。

大作业从三个方面给定成绩:一是系统的整体评价;二是团队分工;三是团队成员各自答辩情况。

成绩给定之一:系统的整体评价包括科学正确性、趣味性/适用性、界面的清晰性。成绩给定之二:根据团队的分工,评价团队各成员的工作量。成绩给定之三:团队成员各自的答辩情况加入各自的成绩。

(4)期末无纸化考试

为对学习结果进行公正的考核,且激发学生对C语言的热爱,我们用C语言编写了一个无纸化考试系统,并让学生观摩编制考试系统中的主要算法。考试系统的中的试题均为编程题目,按照实验教学大纲的知识模块将试题划分成几个组,每个组中的题目难度相当,考试系统从每个组中抽取一道编程题目,随机组成程序设计试卷。

考试过程中,为保证公正,避免学生考试上网查阅资料,使用E-learning系统控制学生,禁止其使用电脑的浏览器、U盘。

考试成绩从三个方面给定:一是程序结果,单纯地考核程序运行的正确性;二是程序设计思路;三是理论基础知识。

5.结束语

本考核体系应用于本学院15级数字媒体专业,将考核贯穿于整个学习过程中,调动了学生学习的兴趣,学生的实践能力和创新能力得到了一定的提升,能更公正地评价学生的综合能力,学生也表现出了对该门课程的热情和自信,本考核体系得到了学生的一致认可。

参考文献:

[1]王丽娜,吕红,张杰,任颖.《计算机程序设计实验》课程的教学改革与实践.计算机工程与科学.2014年.第A1期.

上一篇:扶贫信息网自查评分表下一篇:2023天津高考优秀作文:行而知之