c语言程序设计试题集(通用9篇)
c语言程序设计试题集 篇1
C语言程序设计的试题及答案
c=swap(a,b); printf(”%d%d “, a,c); }
40. #include void fun(int n) { if(n==1) printf(”* “); else { printf(”-“); fun(n-1); } } void main { int i,j=0; for(i=1;i<4;i++) fun(i); printf(”XiaoXin!“); } 解答: 1. p=27 2. 运行结果:12345 3. 3 4. 5 3 32 5. 2 6. 11 21 31 7. 3 7 5
8. 6
7
8
5
5
9. 012345 10. a1=1 a2=3 a3=2 11. 10,20,30 12. a=2,b=3 a=2,b=3 13. 10,20,30 14. a=1.0000 15. 567 16. 4 17. 3.000000 18. 80,-20 19. -1 20. j=12 21. 4,3,5 22. 18 23. Hello, world! Hello, world! Hello, world! 24. x=3; 25. x=22 26. i = 7; j = 6; x = 7 i = 2; j = 7; x = 5
27. 7 28. (1) x = 2 y = 3 z = 0 (2) x = 4 y = 9 z = 5 (3) x = 2 y = 3 z = 0 29. 10, 20, 40, 40 30. 125 31. 3,0,-90,23,6,10 32. sum=6 33. i=20 i=40 34. j=9 35. c=1 36. +4++2+ 37. 8 38. c=33 39. 389 40. * -* --* XiaoXin!
三.补充程序 1. 定义了一个 max 函数,找两个整数的最大值,其位置在 main 之后. #include ”stdio.h“ ________________________ int main() {
int x,y,z; printf(”input two numbers: “); scanf(”%d%d“,&x,&y); ________________________; printf(”maxmum=%d“,z); return 0; } int max(int a,int b) { ________________________; if(a>b)w=a; else w= b; ________________________; } 2. 用函数 nzp 判别一个整数 a 的值,若大于 0 则输出该值,若小于等于 0 则输出 0 值。 #include ”stdio.h“ ________________________nzp(________________________) { if(v>0) ________________________ else printf(”%d “,0); } int main() { int a; printf(”input number a: “); scanf(”%d“,&a); ________________________ return 0; } 3. 主函数调 f1 计算 n 阶乘. #include ”stdio.h“ ________________________ int main() { int n; long s; scanf(“%d”,&n); ________________________ printf(” s=%ld “,s); return 0; } long f2(int n) { ________________________
int i; for(i=1;i<=n;i++) c=c*i; ________________________ } 4. 主函数调 fun 计算 1+1/2!+1/3!+...+1/30!的和. #include ”stdio.h“ ________________________ int main() { int n; float s; ________________________ printf(”1+1/2!+1/3!...+1/30!=%f “,s); return 0; } float fun() { int n; float t=1; ________________________ for(n=1;n<=30;n++) { t*=1/n; s+=t; } ________________________ } 5. 数组 a 中存放了一个学生 5 门课程的成绩,求平均成绩。 #include ”stdio.h“ ________________________ int main() { float sco[5],av; int i; printf(” input 5 scores: “); for(i=0;i<5;i++) scanf(”%f“,&sco[i]); ________________________ printf(”average score is %5.2f“,av);
return 0; } float aver(float a[]) { int i; float s=a[0]; ________________________ for(i=1;i<5;i++) s=s+a[i]; av=s/5; ________________________ } 6. 用递归法计算 n! #include ”stdio.h“ ________________________ int main() { int n; long y; printf(” input a inteager number: “); scanf(”%d“,&n); ________________________ printf(”%d!=%ld“,n,y); return 0; } ________________________ff( int n) { long f; if(n<0) printf(”n<0,input error“); else if(n==0||n==1) f=1; else f=ff(n-1)*n; ________________________ }
7. 输入正方体的长宽高 l,w,h。求体积及三个面 x*y,x*z,y*z 的面积。 #include ”stdio.h“ int s1; ________________________ int vs( int a,int b,int c) { ________________________ v=a*b*c; s1=a*b; s2=b*c;
s3=a*c; ________________________ } int main() { int v,l,w,h; printf(” input length,width and height “); scanf(”%d%d%d“,&l,&w,&h); ________________________ printf(”v=%d s1=%d s2=%d s3=%d “,v,s1,s2,s3); return 0; } 8. 输入两个正整数 num1,num2,求其最大公约数. #include ”stdio.h“ ________________________ int main() { int d; int num1,num2; printf(”please input two numbers: “); scanf(”%d,%d“,&num1,&num2); ________________________ printf(”gongyueshu:%d “,d); return 0; } int gongyue(int a,int b) { ________________________ while(b) { temp=a%b; a=b; b=temp; } ________________________ } 9. 利用递归函数调用方式,输出 6 个数字。 #include ”stdio.h“ ________________________ int main() { int w=5; fun(w); printf(” “); return 0; } ________________________fun(________________________)
{ if(k>0) ________________________; printf(“%d”,k); } 10. 主函数调 printstar 打印一串星形图案. #include ”stdio.h“ ________________________ int main() { ________________________ ; return 0; } ________________________printstar(________________________) { printf(“************* ”); }
解答: 1. int max(int a,int b); z=max(x,y); int w; return w; 2. void int v printf(”%d“,v); nzp(a); 3. long f2(int n); s=f2(n);
long c=1; return c; 4. float fun(void); s=fun(); float s=0; return s;
5. float aver(float a[]); av=aver(sco); float av; return av;
6. long ff(int n); y=ff(n); long return f; 7. int s2,s3; int v; return v; v=vs(l.w,h); 8. int gongyue(int a,int b); d=gongyue(num1,num2);
int temp; return a; 9. void fun(int k); void int k; fun(k-1); 10. void printstar(void); printstar(); void void 四.改错题 解答: 五.编程一 解答: 六.编程二 1. 编程实现:任意输入两个正整数,求它们的最大公约数和最小公倍数。要求最大公约数 通过自定义函数来输出。 2. 编程实现:求出 10~10000 之内的所有素数。要求素数判断通过自定义函数来实现。 3. 编程实现:输出所有的“水仙花数” 。所谓“水仙花数”是指一个 3 位数,其各位数字立 方和等于该数本身。例如:153 是一个“水仙花数” ,因为 。要求水仙花数的判断通过自定 义函数来实现。 4. 编程实现:打印出 2~1000 之间的所有完数。所谓完数,是指这样的数,该数的各因子之 和正好等于该数本身,例如:6=1+2+3;28=1+2+4+7+14;因此,6、28 都是完数。要求完数 的 判断通过自定义函数来实现。 5. 编程实现:打印出 10~9999 之间的所有回文数,要求每 10 个数一行输出。要求回文数的 判 断通过自定义函数来实现。 6. 编程实现:打印出 1~9999 之间的所有同构数,所谓同构数是指一个数如果出现在该数平
方的右端,该数就是同构数。如 5,25 都是同构数。要求同构数的判断通过自定义函数来实 现 。 7. 给定一 5*5 的整型矩阵,求所有正对角线元素之和,并以矩阵的形式输出矩阵的值。要 求 :对角线元素之和及矩阵输出分别通过两个自定义函数来实现。 8. 编程实现:输入一 4*4 的矩阵的值,求出每行的最大值并输出其所在列号。要求:通过 通 过自定义函数实现矩阵的输入输出。 9. 编程实现:任意给定一个十进制的整数,将其转换成二进制,按位将其存放到数组中, 然后输出,要求数制转换通过自定义函数来实现。
10. 编程实现:任意输入一个正整数,编程求出它是几位数并将其逆序输出。要求通过自定 义函数实现求是几位数,该函数原形为:int ni(int x,int a[]);函数返回值是该数是几位 数,x 为给定的数,a 中存放该数的各个位。 11. 编写程序从键盘输入 x 和 n 的值,求 xn (n 为大于等于零的整数) ,要求用 n 递归函数求 x 。
12. 编写实现:输入两个正整数 m,n(m>n) ,计算从 m 个元素中任意取 n 个元素的组合,计 算机
公式为: 要求通过递归函数求阶乘。
13. 编程实现:从键盘任意输入 10 个不相同的整数,然后,输入要查找的数 x,如果在这 10 个 数中找到 x,则打印“Found!” ;如果找不到,则打印“Not found!” 。要求通过自定义函数
实现查找功能。 14. 从键盘输入某班 20 个学生的成绩和学号,然后从键盘任意输入一个学生的学号,查找 出 他的成绩并输出,若未找到,给出相应提示。要求通过自定义函数实现查找功能。 15. 编程实现:从键盘任意输入某班 20 个学生的姓名和成绩,输出最高分及不及格学生的 人 数。要求分别用两个自定义函数求最高分和不及格人数。 16. 编程实现:输入 2 个降序排列的整数数列,将这两个数列合并存放到另一个数组中,要 求 每个数都一次到位,不得在新数组中重新排序。要求数列合并通过自定义函数来实现。 17. 编程实现:输入 N 名职工的姓名及计算机水平考试的成绩,输出及格人数和及格的职工 信 息。要求:职工信息的输入和输出分别通过自定义函数来实现。
18. 编程实现:从键盘输入 10 名学生的信息,包括学号、姓名、成绩,用一个排序函数 sort 完成学生成绩降序排列,并输出学生排序后的结果。 19. 编程实现:任意输入一组不多于 20 个的升序排列的若干个整数,任意输入不多于 10 个 的 整数(-1 作为输入结束标志) ,将其插入到该序列中,使其依然有序。要求:通过自定义函 数实现将一个整数插入到一个有序序列中,使其依然有序。 20. 一个班级有 30 个学生,每个学生有学号、姓名及数学、语文、计算机成绩、平均成绩。 要求编程实现以下功能: 1) 从键盘上输入 30 个学生的信息,平均成绩通过公式:平均成绩=(数学+语文+计算 机 )/3 计算得出。 2) 输出所有平均成绩大于等于 85 的学生姓名(要求用自定义函数实现该功能)。 解答: 1. #include ”stdio.h“ int GreatComDiv(int m,int n); int LeaseComMul(int m,int n); void main() { int m,n,t; printf(”请输入 m 和 n 的值:“); scanf(”%d%d“,&m,&n); if((m<=0)||(n<=0))
{ printf(”输入错误!请重新输入! “); scanf(”%d%d“,&m,&n); } if(m
int LeaseComMul(int m,int n) {int greatcomdiv; greatcomdiv=GreatComDiv( m, n); return m*n/greatcomdiv; }
2. #include ”stdio.h“ int sushu(int n); void main() { int n; printf(”input n: “); scanf(”%d“,&n); if (sushu(n)) printf(”%d 是素数 “,n); else printf(”%d 不是素数 “,n); } int sushu(int n) { int i; for(i=2;i
return 1; }
3. 编程实现:输出所有的“水仙花数” 。所谓“水仙花数”是指一个 3 位数,其各位数字立 方和等于该数本身。例如:153 是一个“水仙花数” ,因为 。要求水仙花数的判断通过自定 义函数来实现。 #include ”stdio.h“ int fun(int n); void main() {int i; for(i=100;i<=999;i++) if (fun(i))printf(”%d “,i); } int fun(int n) {int a,b,c; a=n/100;b=n/10%10;c=n%10; }
if (a*a*a+b*b*b+c*c*c==n)return 1;
return
0;
4. #include ”stdio.h“ int wanshu(int n); void main() { int n; printf(”input n: “); scanf(”%d“,&n); if (wanshu(n)) printf(”%d 是完数 “,n); else printf(”%d 不是完数 “,n); } int wanshu(int n) { int i,s=0; for(i=1;i<=n/2;i++) if(n%i==0) s+=i; if(s==n) return 1; else return 0;
}
5. 方法一: #include ”stdio.h“ int huiwen(int n); void main()
{ int n; printf(”input n: “); scanf(”%d“,&n); if (huiwen(n)) printf(”%d 是回文数 “,n); else printf(”%d 不是回文数 “,n);
c语言程序设计试题集 篇2
C / C + + 语言程序设计是计算机专业本科生的专业基础课程,也是大学计算机基础系列课程的核心课程。通过本系列课程的学习,旨在使学生掌握程序编写的基本技能,培养程序设计思想和方法,养成良好的编程风格,编制高效可靠的程序,进而具备灵活利用所学知识解决实际问题的能力。长期以来,高校都在不断地探索和实践关于C /C + + 语言程序设计课程的教学模式。传统的教学一般着重概念和语法规则,缺少学习的实用性和针对性,实验环节与课堂教学环节存在不同程度的脱节。面对繁复枯燥的语法规则和程序结构,学生也很难的有学习兴趣。因此,根据质量工程的相关要求,研究教学改革方案,找出目前C /C + + 语言程序设计课程在教学中存在的主要问题,对现有的教学方法和教学手进行现代化研究与实践,具有十分重要的现实意义。
2 C / C + + 语言程序设计教学现状
本人承担了多年的C /C + + 语言程序设计课程的教学工作,在教学过程中发现了现有教学模式的一些问题和不足,分析总结如下:
( 1) 教学中过度依赖课本,“照本宣科”现象比较普遍。受中学教育模式影响,大多数教师授课时倾向于依赖选定的教材或很少几本参考教材授课,课程章节固化,凡事以课本为主,课本里有什么就讲什么,授课内容“流程化”“格式化”。这虽然有助于教学内容的结构和完整,学生也能直接沿用中学培养的习惯获得知识,但这只不过是“填鸭式”教学的延伸。长此以往,学生学习的主动性会逐渐丧失,对课本外的东西提不起兴趣,学习也只是为了应付考试。
( 2) 过于偏重理论教学,实践教学所占比重较小。在有限的课时教学中,传统方式仅能将基本的、重要的概念、语义语法规则教授给学生,而对其应用方式、更深层次的知识点、探索及发散性的科学问题涉及较少。课程考核也大多片面强调书面成绩,对于C /C + + 语言程序设计这种实践性要求强的课程,书面考试并不能反映出学生对课程的掌握水平,反而误导部分学生靠“死记硬背”课本上的知识点和程序片段蒙混过关。
( 3) 课程衔接性差,在知识体系中,没能很好形成与“计算机文化基础”和“计算机应用基础”的衔接,也没有把C /C + + 语言知识应用于专业问题的描述和求解中。在教学中,缺少利用所学知识解决实际问题的教学引导,书本与现实隔离,很难做到“学为所用”。
针对上述问题,结合本校实际,对C /C + + 语言课程教学的主要环节教学模式、上机实践、课程考核等方面进行了研究与探讨。
3 C / C + + 语言程序设计教学改革与探索
结合C /C + + 课程的特点,针对传统教学中存在的问题,积极进行课堂教学、实验教学和考核方式的改革,具体从以下几个方面进行了一定的探索实践:
3. 1课程教学改革
( 1) 打破课本章节格式,探索“实例驱动式”和“阶梯式”教学方法针对C /C + + 语言程序设计的课程特色,强调“从实践中来,到实践中去”的教学目标。在课程教学中,注意引入具体化的实例,使得概念的抽象都来源于实际的例子。比如在C语言教学中发现很多同学上课时能听懂,看别人的程序也能看懂,但自己动手去写时却无从下手。这种情况不是个例,而是学习语言类课程时大多数学生都存在的问题。在教学中可以结合生活中的实际例子来示范,为学生“看”和“写”搭建桥梁,培养程序设计思想。例如,从做面包到C语言程序编写的示例( 图1) 。在教学中,可以引导学生分步考虑面包的制作工序,操作中需要摒除详细的细节部分,抽象出核心的流程,然后一步一步代入C语言的程序设计结构和语法规则,使得学生对课程内容有熟悉度和参与感。
通过“做面包”的例子,可以结合变量在内存中存储的方式,帮助学生掌握“变量需要先声明才能使用”的知识点,同时也铺垫了函数的概念,还可以进一步扩展加入分支结构( 面包的不同口味) ,循环结构( 制作多份面包) 等。通过动员学生逐步思考,一起动手做面包,把计算思维与有趣的课堂互动结合起来,既提高了学生学习的兴趣,也“润物细无声”地把编程思维传达到学生心中。而后在学生通过课程学习已经建立了一定的编程思维的基础上,再结合我校的卓越工程师计划,把实际项目引入课堂中来,深入引导实例教学,实现学生从“课本学习”到“实践学习”的转变,通过项目实例让学生亲身感受所学知识的用处,也为毕业后的职业发展打下扎实的基础。
另一方面,知识的获取需要一个循序渐进的过程。这就需要教师在备课时,将同类型问题找出来,将这些问题按难易程度排队上课,先让学生解决最简单的问题,再依次提高问题的难度。通过教学,学生对于同类问题的解决就有了比较深刻的认识。比如上面提到的做面包的问题,同一个问题可以分级扩展,从做一份面包到做多份面包,从做单一口味的面包到做多种口味的面包,从做面包到卖面包,进而面包分类,存货处理等等。通过与实际例子结合循序引进,反复强调知识点加深学生印象,打牢基础。C语言的开设一般在大学一年级,此时着重培养学习兴趣和规范学生养成良好的编程习惯,而C + + 的学习着重于面向对象的程序设计,一般开设于大二下学期或者大三上学期,在C + + 面向对象语言学习时,结合类和对象的概念以及继承和派生等等知识点还可以对“做面包”的问题再做进一步扩展,从做面包到做馒头、饼干等各种糕点,鼓励学生动脑思考逐渐扩充功能,可以自己编程开发一个具备制作、买卖、分类、存货处理等功能的糕点铺。教学中可以根据需要切换各种生活场合,提高学生兴趣,强调编程思想源于生活,服务于生活,学生在日常中也会经常回想起课堂所学知识,达到事半功倍的效果。
( 2) 高效利用团队教学资源,体现从计算机基础课到专业课的顺利交接
C / C + + 语言程序设计立足于引导学生建立基本的“人机互动”概念,构建编程思维理念,掌握核心程序设计方法,开发“发现问题,凝练问题,求解问题”的能力。它是计算机基础课到计算机专业课程的重要衔接,所以在课程设计上,要逐步培养学生从“使用计算机工具→理解计算机工作原理→开发计算机软硬件”的计算思维。但这个目的只通过一门课程是无法完成的,在教学过程中,需要利用院系优秀的教学资源,组建教学团队,使得课程选取→大纲制定→计划培养→落实实施形成系统化,脉络化的结构,加强课程之间的衔接和交互,增加知识的穿插讲授,使得各个课程相辅相成,相得益彰,起到事半功倍的作用。通过对不同专业需求的分析,在制定教学大纲时注重课程的衔接,在实际操作中注重教学团队中任课教师课堂情况的反馈,通过强化教学内容和学生掌握情况双重渠道,避免课程之间的脱节。针对一门课程,学生学分的获取和讲授课时的结束并不意味着本门课程的结束,在形成系统化的课程设计后,可以有效利用每门课程的信息反馈,有的放矢的对学生薄弱环节进行再强化,达到扎实学习,学以致用,而不仅仅是应付考试的良性循环机制。
3. 2上机实践改革
计算机语言类课程的学习关键在于动手实践,但即使意识到了实践的重要性,学生真正动手也往往受限于上机时间和实践平台。在传统的实验教学模式下,大多此类课程都由实验指导书作为参照,学生按图索骥的输入一些代码,完成一些任务。评判的方式也大多依赖于教师,学生实践得不到实时反馈,积极性很难调动起来,课下也不会有意识去编程实践。通过借助我校搭建的ACM/ICPC竞赛平台,学生平时有充足的题目可供练习。而且所有题目规范,输入输出格式明确,评判也由机器在后台完成,正确与否也能实时反馈。通过多组数据的测试,竞赛平台能够发现并迫使学生修正编程中存在的容易人为忽略的问题。另外,ACM/ICPC竞赛平台还可以按照班级、年级、专业等排名,学生也能实时监控自己做题的数量、成功率等,并可以通过Q&A的环节进行错误求助并与其他同学沟通。学生的学习积极性一下子就提高了起来,出错的题目,知识点通过讨论也能自己在课余时间解决。
通过与ACM/ICPC竞赛平台的结合,主要实现了以下几个 方面的探索:
( 1) 激发学生学习兴趣,创造兴趣学习小组
在ACM/ICPC的平台的辅助下,激发学生分组分队共同解决问题,成立程序编写互帮互助小组,采用不定时竞赛的方式对各小组进行考评,并辅以奖励和惩罚措施,尽量让每个学生都不落队。通过组队,同学之间也有了更好的沟通渠道,每个人成为团队的一部分,培养了学生的分享和互帮互助的团队合作精神。
( 2) 鼓励学生涉猎算法等相关知识,培养计算思维
通过ACM选拔,ACM战队的主力队员会通过集训学习数论、计算几何、动态规划、二分图、博弈论、网络流等相关知识,但竞赛选拔的队员屈指可数。这些优秀的种子选手和现有的ACM培训资源却未被大多数学生利用。C /C + + 语言类教学和大多数计算机类课程所追求目标,其核心就是培养学生的计算思维。我们采用了通过优秀学生和ACM集训队带队教师的不定期讲座和培训,以及培训资料等资源的共享来吸引更多的学生参与到程序设计的队伍中来,并已经在学生中通过口耳相传起到了一定的影响力。在上机课中适度引入部分难度稍大的,需要借助其他相关知识才能解决的问题,鼓励学生查阅资料,自己动脑,动手去分析和解决问题,养成良好的主动学习习惯。
3. 3课程考核改革
课程设置的目的不是考试,而是解决问题,特别对于C /C + + 语言程序设计类需要实践的课程尤其是这样。传统的卷面考试不仅不能反映学生对课程的掌握程度,反而诱导出诸如靠划重点、死记硬背程序企图蒙混过关拿到学分的问题。所以在对C /C + + 语言程序设计考核时,我们采用了平时成绩和期末机考相结合的方式。考试成绩分三部分组成,上课活跃度占30% ,分组实践占30% ,期末机考占40% 。其中,上课活跃度包括出勤次数和上课提问情况; 分组实践指通过小组成员共同努力分析、解决实例的情况,一般在上机时根据进度提出难度稍高的问题,鼓励学生通过团队协作,查阅课外资料等来完成; 期末机考是从ACM平台上抽取一部分题目作为期末考核,考察学生实际编程能力。
4结束语
在研究与探索C /C + + 语言程序设计教学的过程中,通过“阶梯式”“实例驱动”的教学方法,辅以ACM竞赛平台,优化配置团队教学资源,追求实用性、系统化、高效率的课程实现,全面提升学生的对程序设计的实践应用能力。通过教学改革,提高学生在学习中发现问题、分析问题和解决问题的能力,培养学生编程思维,计算思维。实践表明,本文提出的教学改进方法可以激发学生学习的热情和兴趣,有效地提高了C /C + + 语言程序设计课程的教学效果。
摘要:针对C/C++语言程序设计课程语法规则繁琐、概念抽象等特点,结合我校实际情况,通过深入分析课堂教学、上机实验及课程考核等教学环节,从教学方法、实验设计及课程考核三方面提出改进方案,提出了以培养学生计算思维为最终目标,以提高学生学习兴趣,激发学生学习积极性为目的,以“阶梯式”“实例驱动”为教学方法,整合教学团队共同促进教学的模式。通过教学改革,激发了学生对C/C++语言程序设计的学习兴趣,培养了学生的动手实践能力,提高了教学质量水平。
c语言程序设计试题集 篇3
通过这样一个系统,学生可以随时随地进行C语言练习,巩固基础知识,强化专业素养;并且,系统可自动生成C语言试题,减轻教师工作量;在考试结束后,系统能够自动阅卷并评分,提高试题评测的准确性;综上所述,C语言试题生成系统将提高高校的办公效率和学生的专业素养。
关键词:C语言;自动组卷;在线评测;B/S
中图分类号:TP311.52 文献标识码:A 文章编号:1674-7712 (2014) 18-0180-01
一、国内外现状
国内外学者一直都热衷于试题生成系统的研究,试题生成系统主要包含两大主要模块:自动组卷模块和在线考试模块。自动组卷模块在长时间内一直有学者进行深入探讨,但至今并没有一个很好的算法方案。主要问题存在于采用经典的数学方法很难解决试卷生成过程中的收敛过程。目前的自动组卷模块根据其所使用的策略大致可以分成五类:基于随机抽取的自动组卷;基于深度与广度搜索算法的自动组卷;基于遗传算法的自动组卷;基于项目反应理论的自适应测试;基于数据挖掘和知识发现的自动组卷理论。而在线考试模块中,已经出现了ACM/ICPC的源代码在线评测系统,并且在实际应用当中效果显著,明显增加了阅卷人的效率。然而其要求运行环境苛刻,并且不具备通用性(只能应用于源代码的测试),所以并不能很好的应用于国内的科学教育工作当中。我国国内也自主开发了一些在线评测系统,如等级考试的机试测试部分,这就是一个很好的应用实例,每年有数千万的考生参加,也取得了显著的应用效果。然而由于其源代码的封闭性,致使其无法应用于其他高等院校。并且其系统当中也存在一定的效率问题。
二、系统概要设计
试题生成系统采用的是模块化的设计思想,不同的模块化对应不同的功能,而不同的用户对系统有不一样的功能需求。但总体来说本系统的功能需求主要包含包括几方面:(1)对用户的管理。用户在进入系统时,必须要注册用户,登录基本信息。在这项功能里,要实现对用户的有效管理,本系统的用户包括对学生、管理员、老师。在系统的数据库中队用户的基本信息进行记录管理。(2)对试题管理。系统在对试题管理的过程中,系统可以随机分组试题,自动合成试卷,或者通过手工调整、编辑试卷和打印试卷等。老师还可以添加试题,删除试题,修改试题,查询试题。系统会及时更新试题库,对试题库进行备份,同时对不同的试题内容和属性进行分类管理。(3)在线评测。学生在登录系统后,确认考试信息等内容,系统就会及时生成试题,考生就可以进行在线考试,不受地域的影响。而在选择套题的同时,系统会根据考生选择的套题,而列出考试范围的试题,给出每门课程合适的题型,而考生必须在规定的时间来完成。(4)成绩的管理。考生考试完成后,成绩将会保存在数据库中。而老师或者学生在考试完成后,通过任何一台联网的计算机上就可以通过网页方就可以查询学生的成绩。
总的来说,无论是学生考试还是教管理员对系统的管理还是老师对试题的添加修改,都能够随时随地通过网络完成对应的工作。
三、系統的功能模块
通过对系统的需求分析,明确了本系统需要包含题库管理、试卷管理、考试管理、成绩管理、学生管理、教师管理以及系统维护等七个模块。
四、核心模块详细设计
自动组卷模块是本系统设计的重中之重,其只需要教师进行简单的操作,便可根据教师设定的参数完成自动组卷,并且,在组卷之后还能够提示教师修正题目,对不适合的题目进行修改。在整个执行过程中,首先判定用户是否拥有操作权限,若没有操作权限则自动终止;若有操作权限,则要求用户输入试卷生成时用到的必要信息,如试卷难度、试卷类型等,以及各种类型题目的数量,然后根据上述信息构成Z(X),U(X)数组,使用随机选择法生成所要求的试题;在生成试题之后,询问用户是否需要进行修改,若需要进行修改,则根据输入的题目编号,修改对应的题目信息。如此往复直到节后,最后将相关信息分别存入试卷信息表和试题试卷对应表中。
五、结束语
系统的实现有效地提高了教学的管理,大大提高了工作效率。在系统的详细设计开发过程中,采用模块化的设计,采用当前比较流行的ASP技术,AJAX技术,基于B/S应用体系结构,让系统更加健壮和灵活,能够适应系统的不断变化和发展。一个良好的试题生成系统它所涉及的内容和知识面较多,由于时间和条件的限制,系统仍存在一定的问题,今后的研究着重从以下几个方面着手:(1)完善试题生成系统各模块的功能的实现。(2)更深入地完善试题生成的算法,让试题的调度更加合理科学。(3)更深入地学习考试数据的备份与恢复。(4)由于在本系统中主观题还需要老师亲自去修改,在以后的研究方向中需要进一步研究主观题的网上考试的自动打分。(5)在题库的建设问题上做更深入的研究。(6)进一步的做好系统的安全工作,防止黑客的入侵导致试题的泄露。(7)考试的监控系统,功能还有待完善,例如能够实现人脸识别等功能。
参考文献:
[1]谭浩强.C程序设计(第三版)[M].北京:清华大学出版社,2007:10-12.
[2]宋云娴,白鹏.智能教学系统设计与实现[M].北京:电子工业出版社,1995:60-90.
[3]师书恩.信息技术教学应用[M].北京:高等教育出版社,2004:19-35.
[4]郑玉.基于Web的计算机辅助教学系统[J].电子工程师,2001(02):15-17.
[5]深泉,胡宁静.数据库设计和自动组卷中的几个问题[J].湘潭大学自然科学学报,2002(03):27-31.
c语言测试题 篇4
1、求1+2+3+……….+100。(循环)
2、求1*2*3*……….*10。(循环)
3、输入三个数字,输出他们的最大值。(if)
4、输入两个数,交换他们的值并输出。(元素交换)
5、输出9*9乘法表。(双层循环)
逻辑推理题
一、简单推理题
1.烧一根不均匀的绳,从头烧到尾总共需要1个小时。现在有若干条材质相同的绳子,问如何用烧绳的方法来计时一个小时十五分钟呢?
2.你有一桶果冻,其中有黄色、绿色、红色三种,闭上眼睛抓取同种颜色的两个。抓取多少个就可以确定你肯定有两个同一颜色的果冻?
3.如果你有无穷多的水,一个3公升的提捅,一个5公升的提捅,两只提捅形状上下都不均匀,问你如何才能准确称出4公升的水?
二、主观题(说明:在以后的工作过程中,我们可定会犯这样那样的错误。既然错误已经酿成,损失在所难免,我们只能想办法把损失减少到最小。如果能巧妙地回答出这些问题,再发生错误的情况下。能让客户有最少的抱怨,公司有最少的损失。)
1.某手机厂家由于设计失误,有可能造成电池寿命比原来设计的寿命短一半(不是冲放电时间),解决方案就是免费更换电池或给50元购买该厂家新手机的折换券。请给所有已购买的用户写信告诉解决方案。
2.一高层领导在参观某博物馆时,向博物馆馆员小王要了一块明代的城砖作为纪念,按国家规定,任何人不得将博物馆收藏品变为私有。博物馆馆长需要如何写信给这位领导,将城砖取回。
《C语言程序设计》教学探究 篇5
《C语言程序设计》作为计算机专业的基础课, 已经成为一门必修的语言课程, 在整个语言课程体系中占有非常重要的地位。在C语言教学过程中, 从客观上讲, 教师的教法和学生的学法的差异, 对教学效果都会产生很大的影响。针对教师的教法和学生学习语言类课程的学法, 结合近几年来的教学经验和教学体会, 把一些经验和方法总结出来, 希望能对C语言课程的教学和学习有所帮助。
1 分析教学中存在的问题
《C语言程序设计》是一个逻辑性很强的课程。有些问题是将数学知识转化用c语言来实现, 这就要求学生首先要能够理解和掌握数学知识, 才能将其转化用c语言来实现。在调试程序时, 提示的信息都是用英语给定, 那么也就要求学生掌握最基本的英语单词, 有些甚至是计算机专业英语, 能将英语句子翻译为汉语, 才能够对程序加以修改。学生在心里认为c语言难学, 没有积极学习的主动性, 导致上课时没兴趣, 不能专心听讲, 布置的作业无从下手, 在实践课中, 看到要编写的程序题目, 理不出头绪。
2 涉及新的知识要有导入
在教学的过程中, 要将新的知识点, 要有很自然的导入语, 引导学生思考问题和解决问题的方法。例如:scanf (“%d”, &a) ;只能从键盘接受一个整型数, 现在要输入40名学生的成绩, 如何通过一个s canf函数来实现, 难道是要定义40个变量, 那如果要接受100个数呢?更多的呢?为了解决诸如此类的问题我们采用数组来实现。这样也就引导学生思路跟着教师, 给他们提出问题, 在给出解决问题的办法。
3 举一反三
给定一个例子时, 将涉及到的所有内容都要讲到。各种形式, 可能出现的错误都要指定。例如:现在要求n!我们可以给定一下几种形式:
一个例子可以给出多种方法来实现, 在这只给出6中形式, 从这6种中, 就可以看到初值不同, 语句的书写顺序不同。通过一个例子, 让学生能理解各种形式, 遇到诸如此类问题时, 就可以迎刃而解。
4 与实践教学相结合
程序设计课程具有很强的实践性, 对于计算机语言课程的教授不应仅仅是传授知识, 应该以培训能力为主。C语言的内容繁多, 在有限的课时内不可能也不必要面面俱到, 所以必须突出重点, 突出实用性, 关键在于教会学生正确运用C语言编写程序。应始终坚持以应用为中心, 以算法为基础, 以培养学生的实践能力为核心, 突出技术实用性和再学习能力的培养。
摘要:《C语言程序设计》是高职高专院校计算机专业基础课程之一, 其教学效果直接影响学生在计算机方面的应用, 教学中出现的听得懂、编不出程序的现象, 探究问题存在的原因, 从教学的教学内容和方法方面进行了探讨, 提出只有教师的教学内容和教学方法进行合理的组合, 激发学生的学习兴趣才能达到良好的教学效果。
关键词:教学方法,案例教学,启发教学,教学效果
参考文献
[1]朱健, 庞倩超.C语言程序设计案例教程.全国高职高专教育精品规划教材:北京:交通大学出版社.
[2]郭芹.对高职高专计算机专业程序设计教学的思考.中国科技信息.2008 (1) .
[3]谭浩强.C语言程序设计教程.北京:高等教育出版社.
基于C语言的递归程序设计分析 篇6
关键词 递归;循环;C语言
中图分类号 TP 文献标识码 A 文章编号 1673-9671-(2010)121-0031-01
递归作为一种正对实际问题的程序设计解决方案,在整个编程语言学习及程序设计方面有着极其重要的地位。而在实际的教学环节中对于这样一种具有很高使用价值的编程技术,在讲解上和学生理解上还存在着一定困难。
1 递归的基本条件
循环结构是结构化程序设计的三种结构之一,主要应用在处理某些需要重复执行特定语句的情况下,通常在使用循环时我们需要明确三个重要条件:
1)循环的初始条件。可以把要解决的问题转化为一个新问题,而这个新的问题的解决方法仍与原来的解决方法相同,只是所处理的问题的规模有规律地递减。也就是说解决问题的方法相同,调用函数的参数每次不同(有规律地递减),如果没有规律也就不能运用递归方法求解。
2)循环的中止条件(或在什么情况下循环运行)。每个子问题必须比原来问题的规模更小,即使小一号也行,如果能够迅速减小规模更好。
3)程序有趋于结束的趋势。必定要有一个明确的结束递归的条件。当问题的规模达到一定程度时(一般的时候应该是规模足够小),问题的解是已知的,在这个地方能结束递归调用,不然可能导致系统崩溃或陷入死循环。
而递归作为一种算法,在数学上我们时这样定义它的,以n的阶乘为例:
0!=1(*)
n!=n*(n-1) 当n>0时 (**)
其中(*)称为基本实例(基本实例的值必须是直接获得的);(**)称为递归归约。递归被定义为:自身定义为一种含有自身简化的形式。那么从形式上我们可以清楚的看到:①每个递归定义必须有一个(或者多个)基本实例;②递归归约最终归结到基本实例;③在基本实例处停止递归。从中我们不难发现递归的算法形式条件和循环的条件是非常类似的。
那么在运行递归函数时,逻辑上我们可以认为递归函数有无限的自身拷贝,完成某个递归调用后,控制返回到先前的调用环境。这同循环算法在思想上也是异曲同工的。所以我们也完全可以编写一个循环结构来替代递归。
造成这种可替代性的主要原因是因为目前为止的编译系统处理递归函数时,在编译之后都是自动将递归转化为循环的。但是和循环不同的是,编译后的递归需要创建一个内存栈来存储递归过程中的临时变量,对于递归函数的调用和返回操作,则分别对应栈的入栈和出栈。
因此任何一个递归程序都可以通过引入堆栈的形式来转化为循环,这种转化其实就是模拟计算机实现递归的过程。你可以考虑人脑来计算递归的过程:先倒过来向前递归,到达最初点以后再正过来向后递推,堆栈的作用就是记住过程中的临时变量。虽然这样做只不过是模拟递归的执行过程,将原来由编译器实现的事情在程序中用代码实现了一遍,但是确实可以通过循环和堆栈的数据结构特性来实现递归的算法和递归函数的功能。
2 递归问题分析
递归程序最少有两种方法可以写出。第一种是想办法把问题转化为数学表达式,能用数学表达式写出的,可以直接把数学表达式变为程序;第二种是按照递归的基本条件,分析所给问题的结构,一个问题总具有一定的规模,想办法把规模变小,使小规模的问题与原问题具有相同的解法,当规模足够小时,该问题的解是已知的,这时可以套用后面所讲的一般递归程序的结构来写递归程序。
例1:求n!。经过分析n!可以表示为
假定n!是一个long型,则直接写出程序如下:
long func(int n) //求n!
{if(n==1 || n==0)
return 1;
return n*func(n-1);
}
例2:求Fibonacci数列(非波纳契)的第n项,该数列表示如下:
按照例1的方法,写出程序如下:
longfib(int n)
{ if( (n==1||(n==2) )
① return 1;
else
② return fib(n-1)+fib(n-2);
}
如输入n=4,程序(具体程序用行标号代替)的执行过程如图1所示,通过分析以上程序,大部分学生对递归函数的执行过程有了较为清晰的认识。
例3:用递归的方法将一个正整数n按位输出,如输入2008,输出2 0 0 8,n的位数不确定,可以是任意正整数。
分析:①函数应该是处理整数n,并且是输出,用PrintNum(int n)来实现这一功能;②如果n的规模很小(只有1位),可以直接输出后结束程序;(这里应该知道n的位数是问题的规模);③把问题的规模变小,去掉n的某1位(在实际讲解时是去掉个位,因为去掉个位比较容易一些,我们用k=n%10保存个位,n=n/10就可以去掉个位),余下位形成一个新的规模比原数小的数,再在新数上递归调用函数,这个新数按要求输出后,去掉的这一位因为是个位,所以应该把它输出到新数的后面。
通过以上分析,写出程序如下:
void PrintNum(int n)/*该函数能把n按要求输出*/
{ int k;
if(n<10){ printf("%2d",n); return ;} /*如果规模很小,则直接处理后结束程序*/
k=n%10; /*在n中提出个位数字*/
PrintNum(n/10);/*把规模更小的子问题递归调用函数来处理*/
printf("%2d",k);
}
通过以上三个例子,学生对递归函数有了较为清晰的认识,对递归程序的写法有了一定的掌握之后,我们可以总结出一个一般递归程序的结构如下,几乎所有递归程序都可以按照这个结构去分析并写程序。
ReturnType Function(问题描述及规模)/* 在程序内部我们应该认为函数Function已经具备处理这类问题的功能,它可以直接被调用 */
我们根据这个结构,要求学生回过来简单看一下前面的三个例子,多数学生便会对递归有更为深入的认识。之后引入汉诺塔问题,该问题的分析方法类似于例3,并套用这个结构,让学生自己试着写该问题的程序,可以发现有一部分学生能自己写出递归函数来。
3 总结
在C语言中,函数一直是学习的重点和难点,递归又是最难掌握的一类函数,本文从实际教学需要出发,首先分析递归的基本条件,从由易到难的顺序,设计了一些教学实例,重点让学生了解递归函数的写法以及执行情况,最后总结出递归函数的一般程序结构,使学生能正确设计递归程序,在实际教学中取得了良好的效果。
参考文献
[1][美]Robert Sedgewick.C算法(第一卷).人民邮电出版社,2004
精心的c语言常考的笔试题 篇7
sizeof就是求在内存总占多少字节的问题,最基本的char 1字节 short 2字节 int 4字节
任何的指针都是4字节 sizeof(数组名)=数组占的大小(这里必须注意虽然数组名可作为只想数组首地址的指针,但是sizeof(数组名)求得的不是指针的大小,而是数组大小)
还有就是sizeof(结构体) sizeof(联合体)
举两个例子 struct stu {
Char a;
Int b;
Char c;
};
struct teacher {
Char a;
Char c;
Int b;
};
Sizeof (stu) =12 ;内存中这样存储 char 空空空 int char 空空空
内存4字节对其问题
Sizeof (teacher) =8 ;内存中这样存储 char char空空 int
关于联合体
Union std{
Char a[10];
Int b[3];
}
Sizeof(std)=12; 联合体公用内存,取其中所占内存最大的元素为联合体所占内存
以下为Windows NT下的32位C++程序,请计算sizeof的值
char str[] = “Hello” ;
char *p = str ;
int n = 10;
1. 请计算
sizeof (str ) = 6
sizeof ( p ) = 4
sizeof ( n ) = 4
void Func ( char str[100])
{
请计算
sizeof( str ) = 4
}
void *p = malloc( 100 );
请计算
sizeof ( p ) = 4
还有位段的问题如下
分析:
struct bit
{ int a:3;
int b:2;
int c:3;
};
int main
{
bit s;
char *c=(char*)&s;
cout<
*c=0x99;
cout << s.a <
int a=-1;
printf(“%x”,a);
return 0;
}
输出为什么是
4
1
-1
-4
ffffffff
因为0x99在内存中表示为 100 11 001 , a = 001, b = 11, c = 100
当c为有符合数时, c = 100, 最高1为表示c为负数,负数在计算机用补码表示,所以c = -4;同理
b = -1;
c语言程序设计试题集 篇8
课题:
教学目的: 教学重点: 教学难点: 第一章 C语言概述
1、了解C语言出现的背景
2、掌握C语言程序的构成、书写格式和上机步骤 C语言程序的构成 上机操作
步骤一 引入新课
从计算机应用基础中学过的计算机语言及语言处理系统引出C语言。步骤二 讲授新课
一、C语言出现的背景
1.ALGOL60 :1960年面向问题、结构化,可读性、可移植性好,不能对硬件操作; 2.CPL:63年接近硬件,规模较大、难以应用;
3.SIMULA:1966~1967 SIMULA 66是ALGOL 60的扩充;SIMULA 67引进了“对象”和“类”等概念而成为第一个面向对象的语言;
4.BCPL :67年由CPL改制,结构化、直接处理硬件;
5.B语言:1970年贝尔实验室的Ken Thompson以BCPL语言为基础设计的,开发了第一个UNIX操作系统;
6.C语言:1972-73年间,保持了BCPL和B语言的精炼与接近硬件的优点,克服了它们过于简单、数据无类型的缺点,重写了UNIX操作系统的90%;
7.标准 C:以1978年发表的UNIX第七版中的C编译程序为基础,Brain W.Kernighan&Dennis M.Ritchie合著的《The C Programming Language》问世; 8.ANSI C:1983年美国国家标准化协会(ANSI)制定的标准
9.C++:1986年 与C兼容,保持了C的所有优点并进行了增强:增强了面向对象的机制,成为典型的面向对象和面向过程的混合语言,适用于大型系统软件和应用软件的开发;
10.87 ANSI C:1987年制定的新标准;
11.ISO C:1990年ISO接受87 ANSI C为ISO C的标准,该标准是目前C编译器的标准。
二、C语言的特点
1.语言简洁、紧凑,使用方便、灵活; 2.运算符丰富
3.数据类型多(整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类等)4.具有结构化的控制语句 5.语法不太严格,自由度大
6.既是高级语言,又具有低级语言的功能 7.生成目标代码质量高,程序执行效率 8.可移植性好
三、C语言程序的构成
1.C语言是由函数构成的,至少有一个main()函数;
2.每个函数由函数首部和函数体组成;函数体由说明语句、执行语句组成; 3.每个C程序从main()函数开始执行,并在main()中结束; 4.每个语句和数据定义的最后必须加分号;
5.C程序无输入、输出语句
输入功能由scanf()函数完成;输出功能由printf()函数完成; 6.可加注释/*……*/
借助程序实例加以说明,并提倡良好的程序设计书写风格: 1)每个语句占一行;
2)同一层次的语句从同一位置处开始书写;
3)同一层次中嵌套的结构,应从不同位置开始书写;
4)编译控制行、外部数据定义、函数定义之间空一行书写; 5)对于函数体的大括号的书写约定 6)学会使用注释。
四、上机步骤
1.进入环境c:tctc 或进入ms-dos,>cd,>cd tc,>tc 2.编辑源程序 3.保存源程序 4.编译源程序F9 5.执行程序Ctrl-F9,查看结果Alt-F5 6.退出C环境Alt-X
步骤三 课堂小结
1、C语言的构成要素,main函数在程序中的作用
2、上机操作的过程
步骤四 布置作业 上机练习:
1、进入C编辑环境,按良好的程序设计风格输入例题,按步骤编译、运行、查看结果
C语言程序设计教学方法探究 篇9
摘要:在应用型本科C语言程序设计教学实践中,对课程合理定位,改进课堂教学方法,以案例引导为教学核心,激发学生的学习积极性。
关键词: 教学方法 案例引导 程序设计
【中图分类号】TP312.1-4
应用型本科人才培养是遵循本科人才培养教育规律,突出实践应用的一种人才教育培养模式。“C语言程序设计”是我国应用型本科院校中计算机、电子、通讯等专业学生在跨入大学校门后接触的第一门专业基础课程,提高这门课程的教学质量,对于增加学生对计算机语言的浓厚兴趣以及培养大学生的计算机应用及开发能力都至关重要。
一、现状及其教学中存在的问题
1、由于学生刚接触计算机语言,同时C语言作为结构化程序设计语言,它具有较强的抽象性, 常规教学内容重在讲解C语言的基本语法,所选编程实例大多用于语法规则的验证和说明。因此,对初学者来说比较难于接受,也容易出现一些问题。
2、传统的实验教学内容简单、枯燥,学生多按实验教材和教师指导的程序一步一步完成,课下很少相互间进行交流,学生虽然有一定收获但是也束缚了手脚。从而导致一部分学生在开始的前几次上机过程还饶有兴趣后又感觉枯燥无比,逐渐对程序设计语言的学习产生较大误区,觉得C语言没有多大用处,从而放弃认真学习C语言的机会。
3、在教学方法上,由于传统的“填鸭式”教学方法只是简单地按照课本顺序循序渐进地教学,每一节课都要记住许多语法细节而实践环节少,学生不知综合起来解决实际问题,始终处在被动的学习状态中,从而吃不透、用不活所学语言知识,在开发综合应用程序时,软件设计能力较差。
二、C语言教学方法探究
1、学生学习兴趣的提高
90后大学生思维活跃,个性十足,他们对自己的学习活动、学习内容与其未来的就业和发展的影响都是十分关注的,同时,他们对于课程知识的适用性了解很少。如果课堂教学能从教育心理学出发,通过有意义的学习内容来激发学生的这种学习动机,让学生感觉到计算机编程很奇妙,很有趣,并愿意在编写出来后通过不断修改完善,相互分享,从而增加他们完成一个程序后的成就感,进一步激起他们深入学习C语言程序设计课程的欲望。
2、改进教学方法,把编程解题思路和程序测试等放在首位
在《C语言程序设计》的教学过程中,注重由整体到具体,由设计算法到书写程序并进行调试的整个过程,培养学生对语言的兴趣及正确的思维模式。课堂教学组织过程重在从一个较完整的程序例子开始,该例子包含了该语言中的主要语句,目的是使学生先对程序有个初步的印象,再简单介绍该例子中用到的语句,让学生对该语言的学习有一个大概的了解。整个教学过程中应该把解题思路、方法和步骤当作授课的重点,从而让学生明白如何分析并解决实际问题,逐渐培养学生进行程序设计的正确思维模式。
在《C语言程序设计》的实践教学中,学生的另一个拦路虎就是程序调试中遇到的种种问题。学生在上机输入程序后,编译时还会出现各种问题,加之学生的英语基础较差,看不懂message窗口中的英文提示信息,导致大多数学生面对机器不知所措,而这种情形又降低了他们学好这门课的信心以及学习这门课的主动性。因此,教师要做的就是找到一种好的方法使学生少出现这种问题。从而提高学生解决问题的能力,增加学习这门课程的信心。
3、将算法教学融入到语言教学中
在教学过程中,始终以程序设计为主线,每道题的讲解者从构造算法出发,着重于讲解算法的逻辑,以训练学生的实际编程序能力为目标。C语言学习过程中,学生感到困难的一般不是在于语法,而是如何根据算法编写程序问题。一题多解,注重算法是程序设计的灵魂,是教学重点,也是教学难点,而语言只是形式。没有正确的算法,计算机将解决不了任何问题。因此在算法教学中可以通过实例进行,从最简单的例子入手使学生在解决具体问题的过程中学习一些基本逻辑结构和语句。同时让学生知道根据同一个问题可以提出不同的从易于理解到精简的算法,从而比较这些算法之间的优劣。了解算法的优化。通过对算法的优化练习,可以在无形中提高学生写算法的水平。使得学生真正了解到算法是程序的灵魂。
4、以实例为引导,讲解语法规则
《C语言程序设计》中很多知识比较抽象、枯燥,不容易被学生接受和理解,教师在课堂教学中应该巧用生活中的实例化繁为简,将深奥的理论讲得通俗易懂。比如,在介绍程序控制结构时,我们可以从简单的猜数游戏入手,从而对分支结构做重点阐述,再进一步增加难度过渡到条件的嵌套和循环的学习中。所以教学中案例的选择非常关键,以这几点做为案例选择的基准:1)选择的案例能够包括已学过的知识和即将要学的知识;2)案例的选择要与学生的兴趣相关,能激励学生收集有关资料,激发学习自觉性,引发学生的相互讨论;3)案例的内容有助于增加学生的学习编程语言的信心。
5、循序渐进的课堂实施
在课堂教学中以案例分析为第一教学阶段,利用与生活相关的实例激发学生对这个功能程序的兴趣和求知欲望,引发学生自我讨论,分析结果和问题,最后归纳总结;以自主训练为第二教学阶段,引导学生能过由简单到复杂的训练,达到快速、准确掌握技能的目的;以总结评价为第三教学阶段,通过引导学生的交流体会,进一步归纳尚待解答的问题或提出新的问题,引发全面思考并建立自主学习的能力。
三、结束语
随着社会计算机领域的发展,计算机相关科目的教学目标也随之有了深远的影响与改变。对于学生来说,掌握好C语言的语法并不完全是这门课程的学习目标,而让学生学会用C语言来解决各种实际问题,并让学生对学习编程这条道路上体会到更多学习乐趣,尝试成功的喜悦才是这门课程的基本学习目标,从而让《C语言程序设计》真正成为学生喜爱的一门课。
参考文献:
[1]谢竞博.《C语言程序设计教学中的问题及改革建议》[J].重庆邮电大学学报:社会科学版,2008(2):137-140.
[2] 胡艳华.《独立学院非计算机专业C语言程序设计教改简论》[J].计算机教育,2011(2):107-109.
[3] 第惠多斯.《德国教师培养指南》[M].袁一安,译.北京:人民教育出版社2001.
【c语言程序设计试题集】推荐阅读:
C语言程序设计试题 库09-25
C语言程序设计习题试题(编程题)11-21
C语言程序06-30
公共C语言程序设计07-30
C语言程序设计教学11-27
C语言程序设计题12-06
c语言程序设计205-10
C语言程序设计实验九08-21
c语言程序设计实验三09-06
《C语言程序设计实践》课题12-01