c语言程序设计试题四

2024-08-06

c语言程序设计试题四(精选11篇)

1.c语言程序设计试题四 篇一

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);

2.c语言程序设计试题四 篇二

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++语言程序设计的学习兴趣,培养了学生的动手实践能力,提高了教学质量水平。

3.《C语言程序设计》教学探究 篇三

关键词:教学方法案例教学启发教学教学效果

0 引言

《C语言程序设计》作为计算机专业的基础课,已经成为一门必修的语言课程,在整个语言课程体系中占有非常重要的地位。在C语言教学过程中,从客观上讲,教师的教法和学生的学法的差异,对教学效果都会产生很大的影响。针对教师的教法和学生学习语言类课程的学法,结合近几年来的教学经验和教学体会,把一些经验和方法总结出来,希望能对C语言课程的教学和学习有所帮助。

1 分析教学中存在的问题

《C语言程序设计》是一个逻辑性很强的课程。有些问题是将数学知识转化用c语言来实现,这就要求学生首先要能够理解和掌握数学知识,才能将其转化用c语言来实现。在调试程序时,提示的信息都是用英语给定,那么也就要求学生掌握最基本的英语单词,有些甚至是计算机专业英语,能将英语句子翻译为汉语,才能够对程序加以修改。学生在心里认为c语言难学,没有积极学习的主动性,导致上课时没兴趣,不能专心听讲,布置的作业无从下手,在实践课中,看到要编写的程序题目,理不出头绪。

2 涉及新的知识要有导入

在教学的過程中,要将新的知识点,要有很自然的导入语,引导学生思考问题和解决问题的方法。例如:scanf(“%d”,&a);只能从键盘接受 一个整型数,现在要输入40名学生的成绩,如何通过一个scanf函数来实现,难道是要定义40个变量,那如果要接受100个数呢?更多的呢?为了解决诸如此类的问题我们采用数组来实现。这样也就引导学生思路跟着教师,给他们提出问题,在给出解决问题的办法。

3 举一反三

给定一个例子时,将涉及到的所有内容都要讲到。各种形式,可能出现的错误都要指定。例如:现在要求n!我们可以给定一下几种形式:

(1)main()(2)main()

{ int i=1,n;{inti=1,n;

doubles=1; doubles=1;

scanf("%d",&n); scanf("%d",&n);

while(i<=n) do{ s*=i;

{s*=i;i++;

i++;} }while(i<=n);

printf("%lf",s); printf("%lf",s):

} }

(3)main()(4)main()

{inti,n ; {int i,n;

double s=1;doubles=1;

scanf("%d",&n); scanf("%d",&n);

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

s*=i;while(i>=1)

printf("%lf",s); {s*=i;

} i--;}

printf("%lf",s);}

(5)main() (6)main()

{intI,n; { inti=0,n;

doubles=1; doubles=1;

scanf("%d",&n); scanf("%d",&n);

i=n; while(i<=n)

for(i=n;i>0,i--) {i++;

s*=I;s*=i;}

printf("%lf",s);}printf("%lf",s);}

一个例子可以给出多种方法来实现,在这只给出6中形式,从这6种中,就可以看到初值不同,语句的书写顺序不同。通过一个例子,让学生能理解各种形式,遇到诸如此类问题时,就可以迎刃而解。

4 与实践教学相结合

程序设计课程具有很强的实践性,对于计算机语言课程的教授不应仅仅是传授知识,应该以培训能力为主。C语言的内容繁多,在有限的课时内不可能也不必要面面俱到,所以必须突出重点,突出实用性,关键在于教会学生正确运用C语言编写程序。应始终坚持以应用为中心,以算法为基础,以培养学生的实践能力为核心,突出技术实用性和再学习能力的培养。

参考文献:

[1]朱健,庞倩超.C语言程序设计案例教程.全国高职高专教育精品规划教材:北京:交通大学出版社.

[2]郭芹.对高职高专计算机专业程序设计教学的思考.中国科技信息.2008(1).

[3]谭浩强.C语言程序设计教程.北京:高等教育出版社.

4.C语言测试题 篇四

a. 算法最终必须由计算机程序实现

b. 为解决某问题的算法同为该问题编写的程序含义是相同的

c. 算法的可行性是指指令不能有二义性

d. 以上几个都是错误的

(2)下面说法错误的是______.

a. 算法原地工作的含义是指不需要任何额外的辅助空间

b. 在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法

c. 所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界

d. 同一个算法,实现语言的级别越高,执行效率就越低

(3)在下面的程序段中,对x的赋值语句的频度为_____。

for (int i; i

{ for (int j=o; j

{ x:=x+1;

} }

a. 0(2n) b. 0(n) c. 0(n2) d. O(log2n)

(4)下面说法正确的是______。

a. 数据元素是数据的最小单位;

b. 数据元素是数据的最小单位;

c. 数据的物理结构是指数据在计算机内的实际存储形式

d. 数据结构的抽象操作的定义与具体实现有关

(5)下面说法正确的是_______。

a. 在顺序存储结构中,有时也存储数据结构中元素之间的关系

b. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高

c. 数据结构的基本操作的设置的最重要的准则是,实现应用程序与存储结构的独立

5.c语言练习试题库 篇五

单项选择题

1.有char c=’1’,下面说法中正确的是(    )。

A. 语句putc+2);的输出结果为51

B. 语句put“%d”,c+2);的输出结果为3

C. 语句put“%c”,c+2);的输出结果为51

D. 语句put“%c”,c+2);的输出结果为3

2.设c1,c2均是char型变量,则下面不正确的函数调用为(    )。

A. scanf(”c1=2=%c”,&c1,&c2);

B. get);

C. putc2);

D. putc1,c2);

3.为了表示关系x>=y>=z,下面C语言表达式中正确的是(    )。

A. (x>=y)&&(y>=z)

B. (x>=y)and(y>=z)

C. (x>=y>=z)

D. (x>=y)&(y>=z)

4.设x,y,z,t为int型变量,则执行以下语句后,t的值为(    )。

x=y=z=1;

t=++x||++y&&++z;

A. 不定值

B. 2

C. 1

D. 0

5.对if语句中表达式的类型,下面正确的说法是(    )。

A. 必须是关系表达式

B. 必须是关系表达式或逻辑表达式

C. 可以是任意表达式

D. 必须是关系表达式或算术表达式

6.对for(表达式1;;表达式3)可以理解为(    )。

A. for(表达式1;0;表达式3)

B. for(表达式1;表达式1;表达式3)

C. for(表达式1;1;表达式3)

D. for(表达式1;表达式3;表达式3)

7.执行语句for(i=1;i++<4;);之后,变量i的值为(    )。

A. 3

B. 4

C. 5

D. 不确定

8.若二维数组a有m列,则在a[i][j]前的元素个数为(    )。

A. j*m+i

B. i*m+j

C. i*m+j-i

D. i*m+j+1

9.下面说法中正确的是(    )。

A. 在C语言中,可以使用动态内存分配技术,定义元素个数可变的数组

B. 在C语言中,数组元素的个数可以不确定,允许随即变动

C. 在C语言中,数组元素的数据类型可以不一致

D. 在C语言中,定义数组后,就确定了它能容纳的相同数据类型元素的个数

10.不能把字符串:“good!”赋给数组b的语句是(    )。

A. char b[10]={’g’,’o’,’o’,’d’,’!’};

B. char b[10];b=“good!”;

C. char b[10];strcpy(b, “good!”) ;

D. char b[10]=“good!”;

11.执行下面程序段,给x,y赋值时,不能作为数据分隔符的是(    )。

int x,y;

scanf(”%d%d”,&x&y);

A. 回车

B. Tab键

C. 回车

D. 逗号

12.已知ch是字符型变量,下面不正确的赋值语句为(    )。

A. ch=’a+b’;

B. ch=’’;

C. ch=’7’+’9’;

D. ch=5+9;

13.下面程序段的输出结果是(    )。

char c1=’6’,c2=’0’;

printf(”%c,%c,%d,%d ”,c1,c2,c1-c2,c1+c2);

A. 因输出格式不合法,输出出错信息

B. 6,0,6,102

C. 6,0,7,6

D. 6,0,5,7

14.在C语言的循环语句for, while,do while中,用于直接中断最内层循环的语句是(    )。

A. switch

B. continue

C. break

D. if

15.下面的循环结构中,不是无限循环的是(    )。

A. for( i=1;;i++) printf(“%d”,i--);

B. i=1;while(i--) {printf(”%d”,i++);}

C. i=1;do{printf(”%d”,i); i++;} while(--i);

D. for(i=0;i;i++) printf(”%d”,i);

16.下面程序段的运行结果是(    )。

char c[]=” will ”;

printf(“%d“,strlen(c));

A. 14

B. 3

C. 9

D. 字符串中有非法字符,输出值不确定

17.下面说法中正确的是:在C语言程序中(    )。

A. 函数的定义可以嵌套,但函数的调用不可以嵌套

B. 函数的定义不可以嵌套,但函数的调用可以嵌套

C. 函数的定义和调用均不可以嵌套

D. 函数的定义和 调用均可以嵌套

18.若用数据名作为函数调用的实参,传递给形参的是(    )。

A. 数据的首地址

B. 数组第一个元素的值

C. 数组中全部元素的值

D. 数组元素的个数

19.以下叙述中不正确的是(    )。

A. 在不同的函数中可以使用相同名字的变量

B. 函数中的形式参数是局部变量

C. 在一个函数内定义的变量只在本函数范围内有效

D. 在一个结函数内的符合语句中定义的变量在本函数范围内有效

20.一个变量的指针是指(    )。

A. 该变量的值

B. 该变量的地址

C. 该变量的变量名

D. 该变量的标志

21.若有定义:int a[10],*p=a;,则p+5表示(    )。

A. 元素a[5]的地址

B. 元素a[5]的值

C. 元素a[6]的地址

D. 元素a[6]的值

22. C语言规定,在一个源程序中,main函数的位置(    )。

A. 必须在最开始

B. 必须在系统调用的库函数的后面

C. 可以任意

D. 必须在最后

23. 一个C语言程序是由(    )。

A. 一个主程序或若干个子程序组成

B. 函数组成

C. 若干过程组成

D. 若干个子程序组成

24. 下面哪项是构成C语言的基本单位(    )。

A. 函数

B. 过程

C. 子程序

D. 子例程

25. 以下正确的说法是(    )。

A. 定义函数时,形参的类型说明可以放在函数体内

B. return后边的值不能为表达式

C. 如果函数值的类型和返回值类型不一致,以函数值类型为准

D. 如果形参与实参的类型不一致,以函数值类型为准

26.对于基类型相同的两个指针变量之间,不能进行的运算是(    )。

A. <

B. =

C. +

D. –

27.变量的指针,其含义是指该变量的(    )。

A. 值

B. 地址

C. 名

D. 一个标志

28.下面程序运行的结果是(    )。

void ss(char *s,char t)

{ while(*s)

{ if(*s= =t) *s=t-‘a’+’A’;

s++;

}

}

void main

{ char str1[100]=”abcddfefdbd”,c=’d’;

ss(str1,c);

printf(“%s ”,str1);

}

A. ABCDDFEFDBD

B. abcDDfefDbD

C. abcAAfefAbA

D. Abcddfefdbd

29.下列说法中正确的.是(    )。

A. 结构体变量可以作为一个整体进行其值得输入和输出

B. 结构体成员项不可以是结构体

C. 结构体成员项可以是结构体或其他任何C语言的数据类型

D. 结构体变量和结构体是相同的概念

30.下面说法中不正确的是(    )。

A. 一个C源程序可有一个或多个函数组成

B. 一个C源程序必须包含一个main函数

C. C程序的基本组成是函数

D. 在C程序中,注释语句只能位于一条语句的后面

31.若执行下面的程序段,则下面描述中正确的是(    )。

int k=5;

while(k=1) k--;

A. while循环执行四次

B. 循环体执行一次

C. 循环体一次也不执行

D. 死循环

32.下面关于for循环的正确描述是(    )。

A. for循环只能用于循环次数已经确定的情况

B. for循环中是先执行循环体语句,后判断表达式

C. 在for循环中,不能用break语句跳出循环

D. for循环的循环体可以包含多条语句,但必须用花括号括起来

33.不正确的定义语句是(    )。

A. double x[5]={2.0,4.0,6.0,8.0,10.0};

B. int y[5]={0,1,3,5,7,9};

C. char c1[]={’1’,’2’,’3’,’4’,’5’};

D. char c2[]={’x10’,’x0a’,’x08’};

34.下面是对s的初始化,其中不正确的是(    )。

A. char s[5]={“abc”};

B. char s[5]={‘a’,’b’,’c’};

C. char s[5]=””;

D. char s[5]=”abced”;

35.下面程序段的运行结果是(    )。

char c[5]={‘a’,’b’,’’,’c’,’’};

printf(“%s”,c);

A. ‘a’’b’

B. ab

C. ab c

D. abc

36.以下说法中正确的是(    )。

A. C语言程序总是从第一个定义的函数开始执行

B. 在C语言程序中,要调用的函数必须在main函数中定义

C. C语言程序总是从main函数开始执行

D. C语言程序中的main函数必须放在程序的开始部分

37.下列常量中,合法的C常量是(    )。

A. “x-y”

B. ‘105’

C. ‘Be’

D.  07ff

38.下面程序的输出结果是(    )。

void main

{

int i=011,j=11;

printf(“%d,%d ”,++i,j--);

}

A. 10,11

B. 12,10

C. 11,11

D. 10,9

39.下面程序的执行结果为(    )。

void main()

{int x=20,y;

y=++x;   y+=x;

printf(”%d,”y);

y=x--;    y+=x;

printf(”%d,”y);

}

A. 42,41

B. 42,42

C. 40,41

D. 42,40

40.下面程序的输出结果是(    )。

void main()

{ int i=010,j=10;

printf(“%d,%d”,i++,++j);

}

A. 10,11

B. 11,11

C. 8,11

D. 8,10

41.能正确表示a和b同时为正或同时为负的表达式是(    )。

A. (a>=0||b>=0)&&(a<0||b<0)

B. (a>=0||b>=0)&&(a<0&&b<0)

C. (a+b>0)&& (a+|b<0)

D.   a*b>0

42.以下关于运算符优先顺序的描述中正确的是(    )。

A. 关系运算符<算术运算符<赋值运算符<逻辑运算符

B. 逻辑运算符<关系运算符<算术运算符<赋值运算符

C. 赋值运算符<逻辑运算符<关系运算符<算术运算符

D. 算术运算符<关系运算符<赋值运算符<逻辑运算符

43.下面程序的运行结果是(    )。

void main()

{ int a,b,d=241;

a=d/100%9;

b=(-1)&&(-1);

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

}

A. 6,1

B. 2,1

C. 6,0

D. 2,0

44.若有条件表达式(exp)?a++:b--,则以下表达式中完全等价于表达式(exp)的是(    )。

A. (exp= =0)

B. (exp!=0)

C. (exp= =1)

D. (exp!=1)

45.程序段如下,则正确的执行结果是(    )。

int k=0;

while(k++<=2);

printf(“%d ”,k);

A. 2

B. 3

C. 4

D. 无结果

46.下面说法中正确的是(    )。

A. 在C语言函数中,必须有形参

B. 在C语言函数中,形参必须是变量名

C. 在C语言函数中,可以有也可以没有形参

D. 在C语言函数中,数组名不能做形参

47.下面说法正确的是,在C语言中(    )。

A. 实参和与其对应的形参各占用独立的存储单元

B. 实参和与其对应的形参共占用一个存储单元

C. 只有当实参和与其对应的形参同名时才共占用存储单元

D. 形参是虚拟的,不占用存储单元

48.下面不正确的说法是:C语言规定(    )。

A. 实参可以是常量、变量或表达式

B. 形参可以是常量、变量或表达式

C. 实参传递给形参时,要求实参必须有确定的值

D. 形参应与其对应的实参类型可以不一致

49.C语言允许函数值类型缺省定义,此时函数值隐含的类型是(    )。

A. float型

B. int型

C. long型

D. double型

50.若有以下定义:char s[10]=“include“,*p=s;,则不能代表字符‘u’的表达式为(  )。

A. s[4]

B. s+4

C. *(p+4)

D. p+=4,*p;

51. C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是(    )。

A. 地址传递

B. 单向值传递

C. 由实参传给形参,再由形参传给实参

D. 由用户指定传递方式

52. C语言规定,函数返回值的类型是由(    )。

A. return语句中的表达式类型所决定

B. 调用该函数时的主调函数类型所决定

C. 调用该函数时系统临时决定

D. 在定义该函数时所指定的函数类型所决定

53. 若有int *p,a[10];p=a; ,则下列写法不正确的是(    )。

A. p=a+2

B. a++

C. *(a+1)

D. p++

54. 若用数组名作为函数调用的实参,传递给形参的是(    )。

A. 数组的首地址

B. 数组第一个元素的值

C. 数组中全部元素的值

D. 数组元素的个数

55. 若使用以为数组名作函数实参,则下面说法中正确的是(    )。

A. 在被调函数中,与该实参相对应的形参必须是同类型的数组名或指针变量

B. 实参数组类型与形参数组类型可以不匹配

C. 在被调函数中,不需要考虑形参数组的大小

D. 实参数组名与形参数组名必须一致

56. 设p1、p2是指向同一个字符串的指针变量,c为字符变量,则不能正确执行的赋值语句为 (    )。

A. c=*p1+*p2;

B. p2=c;

C. p1=p2;

D. c=(*p1)*(*p2);

57. 若有一下结构体定义,则正确的引用和定义是(    )。

struct example { int x;  int y;} v1;

A. example.x=10

B. example v2; v2.x=10;

C. struct  v2;  v2.x=10;

D. struct  example  v2={10,5};

58. 说明一个结构体变量时,系统分配给它的内存是(    )。

A. 各成员所需内存量的总和

B. 结构体中第一个成员所需内存量

C. 成员中占内存量最大者所需的容量

D. 结构体中最后一成员所需内存量

59. 在C语言中,文件由下面拿个组成(    )。

A. 记录

B. 数据行

C. 数据块

D. 字符(字节)序列

60. 下面程序段的运行结果是(    )。

char c[]=” will ”;

printf(“%d“,strlen(c));

A. 14

B. 3

C. 9

D. 字符串中有非法字符,输出值不确定

61.以下叙述中不正确的是(    )。

A. 在不同的函数中可以使用相同名字的变量

B. 函数中的形式参数是局部变量

C. 在一个函数内定义的变量只在本函数范围内有效

D. 在一个结函数内的符合语句中定义的变量在本函数范围内有效

62.一个变量的指针是指(    )。

A. 该变量的值

B. 该变量的地址

C. 该变量的变量名

6.C语言开发工程师笔试题 篇六

在二叉树中找出和为某一输入值的所有路径。

#include

void getPath(struct treeNode星符号 node, int sum, vector& stack, int currentSum) { //stack用来存放路径,sum为输入值

} if (node == NULL) return; currentSum += node->id; stack.push_back(node->id); if (node->lchild != NULL) getPath(node->lchild, sum, stack, currentSum); if (node->rchild != NULL) getPath(node->rchild, sum, stack, currentSum); if (node->lchild == NULL && node->rchild == NULL) { if (currentSum == sum) { vector::iterator it = stack.begin; for (; it != stack.end; ++it) printf(”%d “, 星符号it); printf(”/n“); } } stack.pop_back;

7.C语言程序设计教学探讨 篇七

关键词:灵活,创新,趣味性,考核

《C语言程序设计》是目前最常用的结构化程序设计语言,功能强大,历史悠久。其显著特点有:(1)C语言是架构式语言,所谓架构式就是代码与数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立,从而使得程序的结构清晰,便于使用、维护与调试。(2)C语言功能齐全,它具有各种各样的数据类型,并引入了指针概念,可使程序运行效率更高。另外C语言具有强大的图形功能,支持多种显示器和驱动器,且计算功能、逻辑判断功能也比较强大。目前已经逐步成为各高校尤其是理工科专业的程序设计课程的主流。通过本课程的学习,学生不仅要熟练掌握高级程序设计语言的知识、编程技术、调试方法和基本算法等,更重要的是在实践中逐步掌握程序设计的思想和方法,并能灵活应用该语言进行程序设计,最终具备利用计算机求解实际问题的基本能力。

1 教学方法探讨

C语言牵涉的概念比较复杂,规范繁多,内容都比较抽象,使用灵活(同一功能可以有多种表达方式容易出錯不少初学者都感到困难因此教好《C语言程序设计》,让学生轻松学好这门课,是一个很值得探讨的课题。

在教学工作中,要认真研究制订专业培养方案,明确高等技术应用型人才的培养目标,紧紧围绕着高等技术应用型人才培养的主线,在认真分析和研究的基础上设计教改方案。教学内容的改革本着突出基础理论知识的应用和实践能力培养的原则,以应用为目的,以“必需、够用”为度,加强针对性和实用性。在教学设计时,要坚持“以程序设计为主线,以编程应用为驱动”,将理论课和实验课作为一个整体通盘考虑。这样才能提高学生的学习积极性,取得显著教学效果,主要方法有以下几点。

1.1 拓宽视野,改变偏见

对于程序设计语言的学习来说,由于许多学生在以前并未接触过,通常会认为计算机语言是很深奥、很难学的,有很多学生在还没有正式开始学习程序设计语言时就失去了信心因此任课教师在开始的几个课时应采取适当的方式引导学生,激发学生的积极性和自信心。由于C语言是面向过程的程序设计语言,就有学生认为C语言过时了,不值得学,应该学习面向对象的C++语言或VC++语言,从而在学习过程中,积极性不高,甚至带点抵触情绪。因此学习C语言的第一步应该是拓宽学生的视野,针对C语言的具体特点,以及该门语言在学生今后的学习与工作中的重要性,尤其是后续的专业课程的应用上,从实用性和专业性的角度根本改变学生的偏见。否则课堂内容再精彩也无法吸引学生,更无法促使学生学好这门课。

1.2 精心设计,理论教学与实践紧密结合

教学内容与教学方法的得当与否是整个教学成功的关键,有些教师在教学过程中,只是机械地讲授C语言的语法,而C语言语法的学习比较单调与枯燥,教学内容组织不好,课堂气氛比较沉闷,教学效果就不理想,从而容易让学生产生厌学情绪;还有一些教师在讲课过程中,只是读预先备好的课件,讲课内容生硬,没有一点变化,学生反响很大,极大地挫伤了学生的学习积极性[1]。为了消除程序语言对学生的神秘性,教师应该对所讲的例题从分析到设计都在课堂现场实现,并当场演示。

课堂教学积极采用现代化的教学手段,采用Flash为主要开发工具制作了一套完整的多媒体演示课件。按照教学大纲的要求,本着“以人为本”的设计思想,注重科学性、教育性、启发性原则,将内容和形式统一起来。以课程内容讲解为中心,结合生动形象的例题解析,结构严密,构思精巧,通过直观的图形、动画动态传播演示效果,达到提高学生的综合思维能力、创新意识和创新技能,提高教学效率的目的。

C语言的教学过程应充分发挥其解决实用问题的导向作用,有机地将理论与实践紧密结合,将枯燥的理论演绎运动起来,通过设计巧妙的教学内容,充分调动学生的积极性,让学生的思维围绕教师的思维而运动。要让学生感觉所学知识能解决实际问题,通过一些有趣实用的题目去诱导学生学习,给学生的思维中留下一定的期望与神秘感,促使学生驱动自己的好奇心,从而充分调动学生主动学习的欲望。

1.3 以问题为核心,以数据类型的发展为主线来组织教学

课堂教学内容如何组织是教师备课的重要步骤,教学内容组织是否恰当对教学效果有着直接的影响。教师必须对教材仔细分析,充分理解课程的特点采用最合适的方式来组织教学

刚开始学习C语言时,要记忆的知识点比较多,且存在着如何使用这些知识的问题。在理论教学过程中,除了必要的说明外,大部分知识点从实际问题引入,通过解决实际应用问题而运用,因实际问题的需要,有利于加深记忆,同时也解决了在何种情况下使用与如何使用该知识点的问题。学生在学习环节中,对程序设计的认识包括两方面,首先是对课程内容的理解;其次是应用,即如何在自己的程序中对知识点加以应用,应用是学生学习程序设计语言的目的。教学不仅是教会学生掌握语言的语句和结构,最关键的还要让学生自己去实践。因此,要给学生提供各种不同的场景(问题),让学生体会在不同的场景中该如何与机器进行交流,即如何写出能与计算机进行沟通的程序,让计算机帮助用户解决问题。通过对各种不同问题的尝试解决,不但有利于对计算机语言的熟练掌握,而且对计算机的工作流程以及特点也会有更深的体会。

1.4 教学方法灵活多变

要使精心设计的教学内容达到较好的效果,灵活多变的教学方法是关键。教师在教学过程中,要充分调动学生的积极性,让学生参与教学过程中。具体做法有以下两方面。

(1)教学过程中,在讲程序设计例题时,并不一次性的将正确的程序写出来,而是将结果有偏差的程序给出来,然后运行得到一个结果,让学生观察结果,通过对照给定程序的结果与要求的结果之间的差异,来修改给出的程序,对于最快找到问题症结的学生,给予平时成绩一次加2分的奖励,从而大大活跃了课堂气氛。

(2)编写程序代码时,适当故意输入一些错误的代码,对于及时发现错误代码的学生实行每发现一个错误奖励0.5分的激励机制,从而最大限度的激发了学生的参与性与积极性。采用这两种方法时,课堂气氛活跃,思想开小差的学生很少。

另外还要布置一些具有一定难度的题目,留给学生课后思考。如果有学生在下一次课的课堂上能将程序设计好,给出正确的结果,并能将正确的思路的讲出来,通常会给予3分的平时成绩奖励,从而有效的调动了学生的创造性与后积极性。

2 实验内容精心设计

C语言是一门实践性非常强的课程,教材上的例题、习题基本以算法设计为主,内容枯燥不易编写,学生上机积极性不高,程序设计过程的成就感不强[2]。本着培养学生理解能力、思考能力、动手能力与创新能力的原则对传统的实验进行了大幅度拓展,将实验内容按理解实验、验证实验与提高实验为主线贯穿整个实验环节。在实验过程中,采用循序渐进的思路,先做基本的理解实验,通过理解实验来理解课堂上所讲的理论知识点;再通过验证实验将书上的例题与老师课堂上的例题进行验证,理解并掌握程序设计的步骤,进而能自己设计书本上的习题的程序;最后布置一个算法设计与过程设计相结合的提高性实验,一步一步的提高学生的实践应用能力。

对每一个知识点,尽可能的先不布置算法方面的作业,而是设计一些紧扣知识点的趣味性的小程序题,学生在实验时,越做越有趣,每次上机后都有一定的成就感。再布置算法方面的实验时,学生由于通过前面的趣味作业对每个知识点和程序设计的过程已经有一定的了解与应用,就不再有畏惧感。

当然趣味性的题目只是培养学生兴趣的一个手段,要真正让学生学好程序设计C语言,关键还是让学生掌握运用C语言解决实际问题的能力。因此无论在课堂上讲的例题,还是课后布置的作业,我们都设计一些与专业相关的实用的题目,来培养学生的创新能力。通过这方面的培养,每年都能培养出一批程序设计优秀的学生来,这点在好多学生后来通过国家计算机等试三级、四级、程序员考试方面所取得的成绩,及参加各类与计算机相关的比赛中都得到很好的体现。

3 强化课程设计,加强学生能力培养

课程设计是整个课程学习的总结与提高,通过必要的课程设计,切实加强学生的能力培养,通常课程设计贯串整个教学环节,设计内容以具体的软件系统的开发为基础,重点让学生掌握软件开发的基本思路与方法。课程设计必须以学生为主,教师的指导重点放在总体方案设计、制定进度上。教师在课程设计过程中应经常到学生中去答疑,检查学生设计进度与设计方案、设计结果的正确性,及时发现问题并辅助解决。课程设计尽量做到每个学生的设计有所差别,并要求学生独立完成设计环节。对学生的设计方案不追求最优,只要合理就支持学生坚持完成,最后在考评阶段进行重点点评。

课程设计结束时学生必须上交课程设计说明书,同时还要进行答辩。学生答辩结束教师给予正确引导,指出设计中存在的问题,并指导学生如何完善。答辩前学生要事先准备大量的知识点,答辩过程不但锻炼学生的表达能力,还能使学生认识到自己的设计的优缺点也了解了别人的设计思想开阔了视野。

通过课程设计,学生普遍反映良好。学生对课程设计的好评主要有三个方面:(1)对所学内容有了较深的感性认识和系统性了解;(2)增强了动手能力,提高了独立解决问题的水平;(3)拓宽了知识面,增强了创新意识[3]。

4 改革评价方式,提高综合素质

《C语言程序设计》课程由理论与上机实践两个方面组成,只注重哪一个环节都不能达到好的教学效果;只有将理论与实践紧密结合,改革传统课程考核方式,才能使效果向良好的方向发展,教学的各个环节都要以学生的创造性思维与应用能力的培养为主要方向。在实际操作过程中,采用的方式是:理论部分的考核占总成绩的50分,重点考核学生对基本知识和理论知识的掌握程度;上机实验成绩占20分,70分钟的时间主要由一道改错题、二道程序设计题目组成,其中改错题重点考核学生的语法与思维分析能力;程序设计题主要考核学生的算法和解决实际问题的能力;课程设计部分占总成绩的20分,平时作业成绩占10分,主要考查学生对平时作业的完成情况与对待平时作业的态度。采取这种考核方法,不但可以避免在考核学生时的片面性,兼顾了学生学习过程的整个环节,更主要的是充分调动了学生的积极性与创造性,从而对培养高素质、应用能力强的学生创造了条件[4]。

5 结束语

任何一门课程的教学,都包含教与学两个方面,只有较好地组织这两个环节,才能切实提高教学效果,才能让学生学到更好的有用的知识,才能避免理论与实践脱钩,也才能充分调动学生的积极性。

由于《C语言程序设计》课程是很多理工科的专业基础课,因此如何更好地组织好课程的教学与实践环节,还有很多方面值得人们努力去探索,只有不断努力,精心组织实施,才能使这门课程的教学取得长足的进展也才能使教学改革工作取得更大进步

参考文献

[1]徐大华.程序设计语言教学方法探讨[J].高等理科教育,2007,71(1):36-38.

[2]周龙昌,陈小鹏,王琳琳,等.精心设计实习内容,提高认识实习教学质量[J].实验室研究与探索,2008,27(4):113-115.

[3]杨忠.仪器仪表类课程教学改革的研究与实践[J].电气电子教学学报,2001,23(6):20-22.

8.C语言程序设计教学方法探讨 篇八

关键词 C语言 程序设计 教学方法

中图分类号:G648.2文献标识码:A文章编号:1002-7661(2011)09-0028-02

C语言是计算机专业和相关专业一门很重要的专业基础课,学好C语言为数据结构等后继课程有很大帮助。但是对于高职学生,数学、英语等基础知识较差,而C语言又作为他们面临的第一门语言类课程,因而学习C语言具有很大的难度。本文结合本人几年来的教学经验,对怎样提高C语言教学质量,如何让学生掌握好C语言基础知识点提出几点看法。

一、创设情境,激发学生学习兴趣

大多数学生对新课程都很感兴趣,都很想学好这门课,所以上好第一节C语言课是一个很好的开始。C语言有很多语法和知识点需要掌握,但是如果第一节课就开始介绍C语言的知识点,不但得不到好的收效,还会让学生因为知识枯燥,不易理解而失去学习本课程的兴趣。上第一节课,先讲授C语言这门课程的重要性以及在计算机课程中的地位,然后给学生演示几个简单的游戏,比如:小型运算器,俄罗斯方块,贪吃蛇等,告诉他们这些都可以用C语言来编写。通过这些实例的引入,可以让学生了解到C语言的实用性,激起学生学习的兴趣。

二、注重教学过程,采用多种教学手段

在教学过程中,把知识点融合在实例中,加强学生对知识点的理解,本人在教学过程中采用以下相应方法:

1.深入浅出

C语言主要包括C语言语法、结构化程序设计、数组、函数、指针、文件等。教材一般都会归纳,但是如果把每一块放在一起讲,难点就比较多。比如,C语言的数据类型很丰富,如果全部放一起讲,学生肯定很难记住,所以可以先讲3种基本数据类型、运算符及相关表达式,再通过一个简单程序,输入输出数据。这样子,学生就逐渐掌握了基本数据类型、定义变量,以及输入输出函数的基本使用。对于一些比较难以理解的概念,可以借用比喻来解释,比如在讲到变量的时候,包括变量的地址、变量名、变量值,在课堂上借用教室打个比方:10网构班(变量名)在实验楼302(变量地址)有45个学生(变量值)。这样学生在定义变量的时候就不会那么抽象了。

2.画出流程图

做任何事情都有一定的步骤,这些步骤是按一定的顺序进行的,缺一不可,如果你对一个问题没有任何思路的话,那肯定编不出程序。在解题的时候,可以先画出流程图,再编程序。如:将50名学生中成绩高于80分的成绩打印出来,可画出流程图如下:

3.先复习旧知识,再导入新课

新内容的导入方法很重要,新课前先回顾复习学过的知识点,从旧知识的某一个点出发,提出和新内容相关的问题,让学生思考,并可适当提问,这样可激发学生思考的积极性。在课堂气氛活跃的情况下,教师适当引导,导入新的知识,这样的讲法可以激发学生的兴趣,使学生更容易接受和理解新知识。

4.任务驱动

每节课开始的时候,可以根据需要布置一些问题,让学生带着相关的问题听课,也可让学生自己思考、归纳,或者互相讨论,这样学生会更有目的性和方向性地听讲。

如:在循环结构for语句中,可以设置三个驱动任务:(1)for语句的一般形式;(2)for语句的执行过程;(3)for语句三个表达式代表的含义,三个表达式能否省略?

5.讲解实例,举一反三

对于C语言程序设计这门课来说,精心设计一些实例,用实例来使概念形象化,深化理解 ,通过教师的分析讲解,使学生更容易入手。然后我们可以对这个简单实例提出新的问题、新的改善方案,引导学生参与对现有程序的修改中来。对于学生的改进方案,教师可引导全体学生来评价优劣,找出其优点,修改其错误,逐步完善,不断优化。这样可以调动学生自主学习积极性,用实例教学加强师生互动。

比如可以在平常写的实例中设置一些待解决的错误,如:故意将赋值符号“=”和等号“= =”互换,漏写分号“;”和大括号“{ }”,引导学生在编程和调试过程中逐一发现并解决这些问题,不仅能够巩固理论知识、养成编程的好习惯,更能调动学生思考问题和解决问题的积极性。同时在解决问题的过程中使学生有一种成就感,这对学习能力的提高和积极性的培养有很好的作用。

6.总结知识点

在课堂讲解过程中,知识点是比较零散的,学生对每个知识点理解了,但对各个知识点之间的联系并不一定理解,缺少一种知识的连贯性,不利于理解和记忆。所以,在每次课结束之前,用几分钟的时间把本次课内容所涉及的知识点回顾一遍,这种回顾既以复习知识点为主,又要讲解其间的联系。当课堂教学内容以一个整体的形式被串联起来后,学生的理解就会加深。如:在讲运算符的时候,每类运算符都有自己的优先级和结合方向,一个一个比较零散,所以在讲完运算符后,可以归纳所有运算符间的优先级和结合方向。

三、引导学生自主学习,培养学生实践能力

程序设计是一门实践性很强的课程,既要掌握概念,又要动手编程,还要上机调试运行。对于学生来说,一定要重视实践环节,包括编程和上机。对于教师来说,一定要引导学生自主学习,做好课程设计。

1.上机准备

教师要事先设计好实验内容,内容要尽量引用之前所讲的知识点,避免涉及后续章节的知识,难易适中,由浅入深。课前可先给学生演示一下实验的最终效果,概括本实验包括的知识点,提醒学生对每一个操作的结果仔细观察和详细记录。学生在操作中遇到问题,教师应启发学生独立思考,引导学生去发现问题、分析问题和解决问题,培养学生的动手能力,让学生亲自观察和体验程序设计的成功感受,加深对知识的理解。最后,学生要书写实验报告。上机结束后,教师要督促学生及时总结实践经验,将实验中碰到的问题及解决的方法记录在实验报告上。教师根据每一次上机的整体情况,对学生中出现的共性问题进行讲解。

2.课程设计

可以让学生分组实现一个具体课程设计,在本课程结束的前几周完成课程设计,加深学生对本课程的总体理解。本人认为,在学校中学习程序设计的目的是进行程序设计及基本训练,而不是要求学生立即编写大型程序,或今后一辈子只用这门语言。所以,布置课程设计时,要把精力放在本课程最基本、最常用的内容上,开始时,不要在每个细节上死背死抠,在有一定基础后,再通过实践熟练掌握。

教好C语言是一项艰巨的任务,在教学过程中,要深入浅出,以学生为主体,以教促学,学以致用,引导学生在学习过程中掌握编程技巧,调动学生学习的主动性和积极性。

参考文献:

[1]唐淑玲.高职C语言程序设计教学效果探析[J].中国校园导刊,2011,(1).

[2]由杨.高校计算机C语言实验教学方法初探[J].中国期刊,2009,(1).

9.计算机二级C语言测试题含答案 篇九

1、设一棵满二叉树共有15个结点,则在该满二叉树中的叶子结点数为()。

A.7 B.8 C.9 D.10

参考答案:B

参考解析:在具有n个结点的满二叉树,其非叶子结点数为int(n/2),而叶子结点数等于总结点数减去非叶子结点数。本题n=15,故非叶子结点数等于int(15/2)=7,叶子结点数等于15-7=8。

2、数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是()。

A.控制流 B.加工 C.存储文件 D.源和潭

参考答案:A

参考解析:数据流图用于抽象描述一个软件的逻辑模型,它由一些特定的图符构成,包括4个方面,即加工、数据流、存储文件、源和潭。

3、对关系S和R进行集合运算,结果中既包含S中的所有元组也包含R中的所有元组,这样的集合运算称为()。

A.并运算 B.交运算 C.差运算 D.积运算

参考答案:A

参考解析:关系的并运算是指由结构相同的两个关系合并,形成一个新的关系,新关系中包含两个关系中的所有元组。

4、下列方法中,属于白盒法设计测试用例的方法的是()。

A.错误推测 B.因果图 C.基本路径测试 D.边界值分析

参考答案:C

参考解析:白盒测试方法也称为结构测试或逻辑测试,主要方法有逻辑覆盖测试、基本路径测试等。

5、设R是一个2元关系,有3个元组,S是一个3元关系,有3个元组。如T=RX S,则T的元组的个数为()。

A.6 B.8 C.9 D.1

2参考答案:C

参考解析:R为n元关系,有P个元组S为m元关系,有q个元组。两个关系笛卡儿积是一个n+m元的关系,元组个数是qXp。所以T的元组的个数为9个。

6、在数据库系统中,数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述是()。

A.外模式 B.逻辑模式 C.概念模式 D.物理模式

参考答案:A

参考解析:外模式也称子模式,它是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,它是由概念模式推导出来的,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。…个概念模式可以有若干个外模式。

7、数据管理技术发展的三个阶段中,()没有专门的软件对数据进行管理。

I.人工管理阶段

II.文件系统阶段

Ⅲ.数据库阶段

A.仅I B.仅Ⅲ C.I和II D.II和Ⅲ

参考答案:A

参考解析:数据管理技术发展的兰个阶段中,只有人工管理阶段,没有操作系统,没有管理数据的软件,数据处理方式是批处理。在文件系统阶段,操作系统中已经有了专门数据管理软件,一般称为文件系统。在数据库系统阶段,出现了统一管理数据的专门软件系统,即数据库管理系统。

8、数据库系统的核心是()。

A.数据模型 B.软件开发 C.数据库设计 D.数据库管理系统

参考答案:D

参考解析:数据库管理系统DBMS是数据库系统的核心。DBMS是负责数据库的建立、使用和维护的软件。DBMS建立在操作系统之上,实施对数据库的统一管理和控制。用户使用的各种数据库命令以及应用程序的执行,最终都必须通过DBMS。另外,DBMS还承担着数据库的安全保护工作,按照DBA所规定的要求,保证数据库的完整性和安全性。

9、以下叙述正确的是()。

A.变量的作用域取决于变量定义语句的位置

B.全局变量可以在函数以外的任何部位进行定义

C.局部变量的作用域可用于其他函数的调用

D.一个变量说明为static存储类型是为了限制其他编译单元的引用

参考答案:D

参考解析:本题考查函数调用的变量作用域。全局变量不在任何函数俸内定义,作用域为整个文件i局部变量在函数体内定义,作用域仅为本次函数;static类型是静态变量,为了方便其他编译单元的引用,不能随意改变。一个函数包含两部分:函数首和函数体,函数体包括花括号内的所有语句。

10、下列选项中,不属于数据管理员(DBA)职责的是()。

A.数据库维护 B.数据库设计

C.改善系统性能,提高系统效率 D.数据类型转换

参考答案:D

参考解析:数据库管理员(DataBaseAdministrator,DBA)是指对数据库的规划、设计、维护、监视等的人员,其主要工作如下:

·数据库设计。DBA的主要任务之一是数据库设计,具体地说是进行数据模式的设计。

·数据库维护。DBA必须对数据库中的数据安全性、完整性、并发控制及系统恢复、数据定期转储等进行实施与维护。

·改善系统性能,提高系统效率。DBA必须随时监视数据库的运行状态,不断调整内部结构,使系统保持最佳状态与效率。

10.c语言程序设计试题四 篇十

结构化程序设计的优点是便于分工合作,便于调试、维护和扩充。这种程序设计方法是将一个大程序分成若千个模块,每个模块完成一个功能,由一个总控模块来控制和协调各个模块来实现总的功能;因此,这种程序设计方法又称为模块化程序设计方法。在C语言中,函数是构成C谙言程序的最小模块。实际上,C语言的程序是由一个或者多个文件组成的,每个文件叉是由一个或多个函数组成的。因此,一个程序是由一个或多个函数组成的,其中,须有且仅有一个主函数,生函数的名字规定为rnaino这样,组成一个程序的者干个文件中,仅有一个是主文件,只有主艾件中才含有main()函数。另外,函数是由若干条语句组成的,语句是由若干个单词组成的‘单词是由若干个字符组成的。字符是构成程序的最小单元。e语言程序的构成如下所示:

程序~文件~函数~语句~单词、字符。

C语言是结构化程序设计语言,它具有构成三种基本结构模式的语句,这种结构化程序设计应具有的三种基本结构模式如下:

顺序结构棋式

它将由若干条顺序执行的语句构成,这是程序设计的最基本形式。

分支结构模式

C语言中具有条件语句和开关语句,它将会构成各种需要的分支结构模式。

循环结构模式

C语言中提供了三种循环语句(for循环,whil。循环和do-while循环),用它们可以构成

各种循环结构模式

在讲述C语言是一种结构化程序设计语言的同时,还必须指出它与其他结构化程序设计语言(如PASCAL语言)相比较,还有一些不完全之处,因此,C语言是一种不完全的结构化程序设计语言。其表现如下:

第一,完全的结构化程序设计语言不允许使用goto语句,因为goto语句会破坏结构化。

但是。got。语句在某些时候会使得程序简练,因此,在C语言中原则上允许使用goto语句,为了减少它对结构化的影响,采取了限制使用的办法,即规定got。语句的转向范围只能在一个函数体内。不得使用gates语句从一个函数体内转向到另一个函数体中,这种限制性地使用goto语句会给编程带来一些方便,又不会影响棋块之间的结构化。但是,建议在G语言的程序中尽量少使用goto语句。

第二,完全的结构化程序设计语言要求一个模块只有一个入口和一个出口,这样便于结构化的管理。但是,C语言程序中允许函数使用多个返回语句(return语句),即允许函数有多个出口,返回到调用函数。这样做也是为了编程中的方便。在C语言程序中,可以使用条件语句来返回不同的函数值。

由此可见,C语言虽然是一个不够严格的结构化程序设计语言,但它是一个使用起来十分灵活的高级语言。

1.计算机二级C语言程序设计考点解析:C语言程序实例

2.计算机二级C语言程序设计考点:指针

3.计算机二级C语言程序设计考点:函数

4.计算机二级C语言程序设计考点:数组

5.计算机二级C语言考点:字符型数据

6.计算机二级c语言试题

7.计算机二级C语言程序设计考点解析:常用的输人函数

8.计算机二级C语言程序设计考点解析:常用的输出函数

9.计算机二级C语言程序设计考点:单词及词法规则

11.c语言程序设计试题四 篇十一

关键词:教学模式;任务驱动;c语言程序设计;教学实践

0引言

《C语言程序设计》作为计算机程序设计的基础,是理工类本科学生的一门必修课,尤其是C语言对计算机硬件具有很好的编程能力,使其在工科教学中的生命力越来越强。我们学院在C语言的教学上基本上还是采取传统的教学模式:按照C语言教材自身的内容上课、上机,采取笔试形式考试。这样的教学模式使得学生过分注重C的语法、语句等规则,而忽视了对编程思路的培养,学生独立分析问题和解决问题的能力没有很大的提高,给学生参加全国等级考试以至后续课程的学习留下了隐患。下面就作者在C语言教学过程中的经验谈谈想法。

1传统教学模式

传统教学模式是以教师作为课堂的中心,以广大学生为讲授对象,以课本作为讲授的主线。虽然现在教学环境大都采用多媒体大屏幕,操作方便,易于控制教学内容和节奏,能在规定课时内呈现较多信息量;但是学生往往处于被动学习状态,教学内容难以适应学生的个体差异,所有学生被迫按照老师的讲授速度进行学习,不利于培养思维能力与创造能力。

上机实践课上通常老师会事先布置几道编程题,但是学生上机目标不是很明确,问的问题多数是属于同一类问题。老师不停地在机房各处一一解答,既浪费时间,也没取到很好的效果。学生在机房没有紧迫感,甚至有些学生觉得无事可做,就会打游戏等。这种上机方式不利于培养学生的动手能力和自我解决问题的能力。

学生学不好C语言主要是因为C语言教学的重点不是放在如何解决问题上,而是把大部分的时间放在讲解语法规则和语句格式上,其后果就是学生一拿到任务后首先琢磨如何定义变量,用什么语句,而不是对问题进行合理的分析,考虑最佳算法,这样当然觉得很难而且也设计不出好的程序。学生参加全国等级考试的通过率很低也就不足为怪了。

2“任务驱动式”教学模式

采用“任务驱动式”的教学方法,知识及技能的传授以完成典型“任务”为主,有利于提高学生利用计算机进行自主学习与解决问题的能力。

2.1教学内容的改革

我们把通过全国计算机二级考试作为学习c语言的目标,针对等级考试大纲来确定教学计划以及教学内容。为此,我们从第一堂课起就强调并要求学生通过全国二级考试,既让学生明确短期学习目标,又放眼长远的努力方向,以激发学生进行自主学习的主动性。我们将教学内容分离为几个相对独立的模块,即结构模块、数组模块、指针模块、函数模块和文件模块。模块的内容要循序渐进,把握好由易到难,由简单到复杂的教学过程,否则容易使学生一开始就产生一种畏惧情绪,失去学习兴趣。然后,力求概念准确,分散难点。各模块的教学目标要十分明确,教学量适中,让学生很容易把握住教学要点,理解和掌握教学内容。

2.2设计好实验任务

实验任务的设计包括任务的提出与分解、最终达到的目标、解决问题的方法等。目的性要强,任务要明确,这样才能很好地缓解计算机基础课程实验教学中学生无事可做,玩游戏、上网聊天等现象。要培养学生限时编程的良好习惯,要求学生在规定的时间内编写和调试好给定的程序。通过这些基本功的训练,学生在具备了扎实的计算机程序设计能力后,就较容易通过全国计算机二级考试。

在程序设计语言教学中,算法是程序设计的灵魂,学生编写不出程序的首要原因是设计不出—个合适的算法。因此,在教学中应对常用的算法结合典型实例进行详细地讲解,强调算法的步骤,让学生对算法有比较深刻地了解,并鼓励学生从不同角度去思考问题,对于同一个问题的解决用多种方法来实现。这样有助于拓展学生的思维,增加学生对学习C语言的兴趣。

例如:计算n!

我们可以采用递归法:

2.3学习成绩评价方式的改革

采用“笔试+上机考试”的评价方法可以提前让学生体验全国等级考试的过程。同时,两种形式考试都通过才算这门课程通过,也能促使学生在学习c语言的基本知识之外加强编程实践,让学生学到c语言的语法规则的同时也掌握了程序设计的方法。

3结束语

上一篇:2023年4月大学生入党思想汇报:大学毕业生就业问题范文下一篇:口腔修复学考试大纲