C语言程序设计考试题答案

2024-10-11

C语言程序设计考试题答案(精选12篇)

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语言程序设计考试题答案 篇二

目前, 高校中开设的计算机编程语言类课程在不断地增加, 很多计算机类的课程不仅要求学生掌握相关的基本理论知识, 更重要的是要求学生学会操作该软件的基本方法。为了督促学生重视上机操作能力的培养, 也为了更加公正、合理地评价学生对软件的实际操作水平, 开始针对计算机编程语言课程上机考试系统进行研究, 这对于提高高校计算机编程语言课程的考核水平具有重大意义。上机考试系统可将考生作弊的可能性大幅减小, 并且智能化的给学生的所答程序进行评分, 快速得出成绩, 以取代教师传统效率低的批卷模式, 避免了人工阅卷中由于疏忽而导致的不公平现象的发生, 同时也减少了教师的工作量。

2 系统分析

2.1 可行性分析

2.1.1 技术可行性

本系统是采用Java技术完成的, Java技术具有卓越的通用性、高效性、平台移植性和安全性等特点, 完全可以满足本系统的设计需求, 这些都充分说明本系统在技术方面是可行的。

2.1.2 经济可行性

本系统对于其环境配置和服务要求并不高, 因此并不需要专门购买服务器和一些其他网络协议服务, 所以对于前期预算很低。开发中所用到的设备仅是个人电脑, 因此开发和维护的代价也很低。而应用此系统可以节约人力物力, 减轻教师的工作量, 因此开发本系统在经济上是可行的。

2.1.3 操作可行性

本系统用Java语言编写, 具有很好的跨平台性, 用户界面应用的是本地Windows默认风格, 使用户没有操作负担, 降低了用户使用本系统的学习难度。

2.2 需求分析

2.2.1 功能需求分析

本系统对于服务器端所需的功能包括自动加载考试题目、准备客户机的下载、对客户机进行监控的功能、对考生的考试信息进行备份处理和对考生的考试分数进行合理的统计与分析。

本系统对于客户机端所需的功能包括自动进行评分、上传考试信息到服务器端、针对特殊情况还原考试题目和自动下载考试资源。

2.2.2 性能需求分析

⑴ 确保稳定性。对于服务器端来说, 稳定性就是要求在考试过程中服务器端可以与多个客户机连接, 不会因为客户机的数量增加而导致服务器程序不能正常运行。对于客户机端来说, 稳定性就是确保考生在考试过程中出现不能答卷、不能交卷、交卷不成功等现象。⑵ 确保传输即时性。在本系统中往往会有很多客户端程序连接一个服务器的情况, 当多个客户端同时对服务器发送下载考试资源请求或同时向服务器提交信息时, 就可能造成数据信息的混乱, 甚至是造成服务器瘫痪, 所以一定要解决多个客户端的同步访问的问题。⑶ 确保传输一致性。本系统的特色功能之一就是智能判分, 判分的依据就是考生所作答案与标准答案相比较, 而考生的考试资源, 与标准答案是通过不同的方式发送到服务器端的, 所以就存在一个传输一致性问题, 即传输的题目与答案相互匹配。

3 系统设计

3.1 功能设计

根据需求分析阶段的用户需求规格说明书设计系统的体系结构, 将各个功能模块以层状图清晰的展现出来, 总体功能模块图如图1 所示。

3.2 算法设计

算法是一个系统的灵魂, 一个系统主要的核心技术都体现在其算法的设计上, 以下具体说明智能评分的算法设计。

3.2.1 填空题、改错题算法设计

填空题与改错题的智能评分的原理是系统自带了一个标准答案库, 根据实际的做答情况, 有几种标准答案, 只要用户所做答案与标准答案库的答案相匹配, 就回答正确。如果用户所做答案与标准答案库中的数据, 没有一个所匹配的, 则答题错误。这样既能灵活的应对不同考生的不同答案, 也可以增加考试的灵活性。

3.2.2 程序设计题算法设计

程序设计题的算法, 是用户通过VC++6.0 系统答题, 进行编译后, 系统根据用户所编写的程序自动生成一个以用户所编写程序而得出的结果的文本文档, 之后会自动传入事先预设好的参数, 生成10 条数据, 这10 个参数考虑到了这个编程题的所有边界情况。这10 条数据被写入文本文档后, 会与系统接收到的答案数据做比较, 若完全相同, 则代表全对, 给予满分;若其中正确为8 个或9 个, 则代表其用户所编写的程序 (方法、函数) 并没有考虑完全, 但是具体逻辑已经写好, 应给予百分之八十或百分之九十的分数。

3.2.3 人机界面设计

3.C语言程序设计考试题答案 篇三

【摘要】随着教育改革的深入和计算机网络技术的发展,计算机自动化考试已经成为一种趋势,针对目前考试系统只具备组卷评分功能,缺乏教师与学生的沟通互动及用户使用范围受限的问题,本系统采用B/S网络结构模式扩展了用户使用区域,并增加评价与推送功能,完善了教学反馈环节。本系统首先进行组卷、阅卷、评分,完成对学生知识点的考核,然后统计每个学生知识点的得分、错题率等信息,生成教学方案反馈给老师以促进教学改革,同时把错题知识点汇总,通过APP客户端发送给学生。

【关键词】无纸化考试 B/S架构 C语言考试系统

【基金项目】2013年,省级教研项目:基于“理实贯通、多元协作”的信息与通信工程学科教学创新研究,项目编号:2013286;2015年,湖北工业大学校级项目:基于PBL教学模式的智能考试、评估、推送C语言学习方案研究,项目编号:校2015062;2014年,湖北工业大学校级项目:面向电子信息类专业的一体化CDIO工程教育改革实践,项目编号:校2014013;2013年,湖北工业大学校级项目:电气卓越工程师培养程序设计类课程改革研究,项目编号:校2013011;2015年,华中师范大学中央高校基本科研业务费项目:基于设备指纹的数字音频被动取证关键技术研究,项目编号:CCNU15A05054;大学生创新创业训练计划项目(201510500035)。

【中图分类号】G64【文献标识码】A 【文章编号】2095-3089(2016)04-0211-02

一、引言

C语言作为国际上广泛流行的计算机高级程序设计语言,在广大高校的计算机及相关专业中是一门必修课程。对于C语言的考核虽然已经走向计算机自动化阅卷的道路,但目前的考试系统的设计局限于技术细节改善,如客观题评分标准的完善、随机组建算法设计,而忽视了教学的本质——考试只是教学的一个环节,而不是终极目标。

(一)系统需求分析

根据现在考试系统的现状,针对目前考试系统只具备组卷、评分功能,缺乏教师和学生的沟通互动,信息反馈及用户使用范围受限等问题,本系统强化考试后的反馈环节,在题库的数据库组建时,考虑题目与知识点的对应关系,题目的难度分级。学生在预习时,通过查看其它学生的考试结果,可以预判学习的重难点,合理分配学习时间。

(二)系统设计分析

二、系统的设计与实现

(一)系统总体设计

根据系统需求分析,在线并发C语言考试系统由两个PC客户端和一个Android客户端组成,设计分为两个阶段实现:(1)先完成基于B/S模式的教师和学生的PC客户端系统;(2)在PC客户端的基础上开发基于Android手机平台的反馈和师生交流系统,在线并发C语言考试系统采用B/S架构,用户可以在PC客户端进行系统访问,PC端进行数据的读取和存储,并提供完善的考试管理系统,该系统采用Basic语言在VB开发环境下实现。

(二)学生考试模块

1.考生登录模块

首先判断考生输入的账号和密码是否正确,若账号或密码错误则给出相应的错误警告,验证通过后进入后台数据库提取相关数据转入答题界面,并且记录登录次数,限制只能登录一次,否则给予相应警告。

2.考试答题模块

在后台数据库中抽取题目,将题目以选择题、判断题、填空题和程序设计题的形式在不同窗口中显示,并提示考试时间和答题结果,在时间完成后自动交卷,并将考试数据自动存入后台数据库。

3.分数显示和本地推送模块

在考试完成并提交答案后将激活分数显示和推送模块,首先将考生的答案和数据库标准答案进行比对,对比正确答案进行统计,然后将考生答案和得分情况存入后台数据库并显示到本界面,反馈给相应的考生,推送模块只有考生在点击本页面的推送按钮时才被激活,然后根据统计结果将相应的知识点和学习方案推送到本地客户端,同时将反馈的内容一并上传到教师端数据库,供教师端进行整体统计使用。

4.管理模块

在学生端管理模块部分主要实现对账号和密码的修改,考生可以在管理界面对自己的信息进行修改,首先输入初始设置的账号和密码,确认正确后就可以修改为更加安全的账号密码,保证个人的信息安全。

(三)教师管理模块

教师端登录模块与学生端基本相似,在此不做另外介绍,着重介绍几个主要的模块。

1.记录工具模块

在登录完成后便激活记录工具模块,并获得相应记录ID,初始记录为空,教师可在此记录相关的工作日志等信息,并只有相同ID才可以访问其内容,保障其安全性,另本系统工具模块自带浏览器,相关问题可随时上网查询而无需切换界面。

2.导入试题模块

点击进入导入试题模块,可以进行选择题、判断题、填空题和程序设计题的导入工作,教师输入完成并确认后系统将自动分配题号并存入后台数据库。

3.试题浏览模块

本模块主要对数据库中生成的临时temp表进行显示,点击确认后生成正式试题表并发送至学生考试客户端。

4.考生信息查询模块

考生信息查询模块主要对学生端反馈的信息进行汇总后在本地显示并供教师端查询使用,查询方式为单条件方式查询和组合式查询,查询结果在本界面进行显示。

三、系统的实现

(一)学生端功能实现流程

参加考试的考生首先进入一个登录界面,考生输入正确的账号和密码登录,进入登录界面后系统自动开始进行倒计时,考生选择相应的试题类型进入相应答题界面,答完题后返回并选择其他未作答的试题,直到答题结束后,点击提交试卷,系统自动进行处理和判断,得出考试分数并显示出来,考试分数会自动存入相应数据库的表中,考试系统会自动在本地的数据库中链接生成推送的知识点内容和相应的方案,考生可以在本地浏览或者在连接的APP客户端中进行浏览。

(二)教师端功能实现流程

教师在输入正确的账号后登录教师端,首先是组卷界面,教师可以在这个界面选择自动组卷或者人工组卷,组卷完成后可以点击预览模式进行对试卷的预览,确认无误后就可以点击确定来发布生成的试卷到学生端供考试使用。

参考文献:

[1]李雪玲,管群. 基于 PHP技术的在线考试系统设计与实现[J]. 计算机与现代化, 2009,(2): 118-121

[2]张朋. 用数据库编程开发考试系统[J]. Computer Knowledge and Technology 电脑知识与技术, 2009,(6): 1374-1375

作者简介:

4.C语言程序设计考试题答案 篇四

#include

void main( )

{ int a,b,c,d,x;

a=c=0;

b=1;

d=20;

if (a) d=d-10;

else if(!b)

if (!c) x=15;

else x=25;

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

}

A) d=20 B) d=10 C) d=15 D) 25

62、有如下程序:

#include

void main( )

{ int a=2,b=-1,c=2;

if (a

if (b<0) c=0;

else c++;

printf(”%dn“,c);

}

该程序的输出结果是___C_____.

A) 0 B) 1 C) 2 D) 3

63、下列程序执行后的输出结果是____B____.

#include

void main( )

{ int x,y=1,z;

if ((z=y)<0) x=4;

else if (y==0) x=5;

else x=6;

printf(”%d,%dn“,x,y);

}

A) 4,1 B) 6,1 C) 5,0 D) 出错信息

64、有如下程序

#include

void main( )

{ int x=1,a=0,b=0;

switch(x)

{

case 0: b++;

case 1: a++;

case 2: a++;b++;

}

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

}

该程序的输出结果是______A____.

A) a=2,b=1 B) a=1,b=1 C) a=1,b=0 D) a=2,b=2

65、下面程序的输出结果是____C_____.

#include

void main( )

{ int a=-1,b=1,k;

if ((++a<0) && (b--<=0))

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

else

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

}

A) -1 1 B) 0 1 C) 1 0 D) 0 0

66、假定w、x、y、z、m均为int型变量,有如下程序段:

w=1;x=2;y=3;z=4;

m=(w

则该程序段执行后,m的值是____D_____.

A) 4 B) 3 C) 2 D) 1

67、以下程序的输出结果是___D______.

main( )

{ int a=100;

if (a>100) printf(”%dn“,a>100);

else printf(”%dn“,a<=100);

}

A) a<=100 B) 100 C) 0 D) 1

68、若执行下面的程序从键盘上输入9,则输出结果是.______B________

#include

void main( )

{int n;

scanf(”%d“,&n);

if (n++<10) printf(”%dn“,n);

else printf(”%dn“,n--);}

A) 11 B) 10 C) 9 D) 8

69、以下程序输出结果是_____D_____.

#include

void main( )

{ int m=4;

if (++m>5) printf(”%dn“,m--);

else printf(”%dn“,--m);

}

A) 7 B) 6 C) 5 D) 4

70、若执行下面的程序从键盘上输入5,则输出结果是.

#include

void main( )

{int x;

scanf(”%d“,&x);

if (x++>5) printf(”%dn“,x);

else printf(”%dn“,x--);

}

A) 7 B) 6 C) 5 D) 4

71、以下程序段运行结果是____A____.

int x=1,y=1,z=-1;

x+=y+=z;

printf(”%dn“,x

A) 1 B) 2 C) 4 D) 不确定的值

72、有以下程序

#include

void main( )

{ int a,b,c=246;

a=c/100%9;

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

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

}

输出结果是____A____.

A) 2,1 B) 3,2 C) 4,3 D) 2,-1

73、运行下面程序时,若从键盘输入数据为”123“,

则输出结果是___C____.

#include ”stdio.h“

void main()

{ int num,i,j,k,place;

scanf(”%d“,&num);

if (num>99)

place=3;

else if(num>9)

place=2;

else

place=1;

i=num/100;

j=(num-i*100)/10;

k=(num-i*100-j*10);

switch (place)

{ case 3: printf(”%d%d%dn“,k,j,i);

break;

case 2: printf(”%d%dn“,k,j);

break;

case 1: printf(”%dn“,k);

}

}

A) 123 B) 1,2,3 C) 321 D) 3,2,1

74、执行下列程序后的输出结果是___D____.

#include

void main( )

{ int k=4,a=3,b=2,c=1;

printf(”%dn“,k

}

A) 4 B) 3 C) 2 D) 1

75、以下条件表达式中能完全等价于条件表达式x的是____B___.

A) (x==0) B) (x!=0) C) (x==1) D) (x!=1)

76、若运行下面程序时,给变量a输入15,则输出结果是___A___.

#include

void main( )

{ int a,b;

scanf(”%d“,&a);

b=a>15?a+10:a-10;

printf(”%dn“,b) ;

}

A) 5 B) 25 C) 15 D) 10

77、运行下面程序后,输出是___D___.

#include

void main( )

{ int k=-3;

if (k<=0) printf(”****n“);

else printf(”####n“)

}

A) ####

B) ****

C) ####****

D) 有语法错误不能通过编译

78、执行下面程序的输出结果是____C____.

#include

void main( )

{ int a=5,b=0,c=0;

if (a=a+b) printf(”****n“);

else printf(”####n“);

}

A) 有语法错误不能编译

B) 能通过编译,但不能通过连接

C) 输出 ****

D) 输出 ####

79、为了避免嵌套的if-else语句的二义性,C语言规定else总是与___C___组成配对关系.

A) 缩排位置相同的if

B) 在其之前未配对的if

C) 在其之前尚未配对的最近的if

D) 同一行上的if

80、设x 、y 、z 、t均为int型变量,则执行以下语句后,t的值为____C_____.

x=y=z=1;

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

5.C语言程序设计考试题答案 篇五

void main(){

} 1.2用一条C语句完成下述要求。

a)把变量x,y,z和result定义为int类型。b)提示用户输入三个整数。

c)从键盘读取三个整数并把它们存储在变量x,y,z中。d)计算变量x,y和z所存储的整数的和,并把计算结果赋给变量result.e)打印出“The sum is ”并紧接着打印出变量result的值。

答:

a)int x, y, z, result;b)printf(〞请输入三个整数n〞);c)scanf(〞%d%d%d〞, &x, &y, &z);d)result = x + y + z;e)printf(〞The sum is %d〞, result);1.3用练习1.2中的语句写出计算三个整数和的完整的程序。答:

void main(){ int x, y, z, result;printf(〞请输入三个整数n〞);scanf(〞%d%d%d〞, &x, &y, &z);result = x + y + z;printf(〞The sum is %d〞, result);} 1.4指出并改正下列语句中的错误(每条语句可能不止一个错误)。

a)scanf(〞%d,value〞);b)printf(〞The sum of %d and %d is %d〞n,x,y);c)*/Program to determine the largest of three in integers/* d)printf(〞The value you entered is %d〞n,&value);e)int return=10;答:

a)scanf(〞%d〞, &value);b)printf(〞The sum of %d and %d is %dn〞, x, y, x + y);c)/* Program to determine the largest of three in integers*/ d)printf(〞The value you entered is %dn〞, value);e)int ret=10;//关键字不能作变量名

1.5 在VC6.0中编译运行程序1-1,1-4和练习1.3所写的程序。

1.6 下面的标识合法吗?

aBc,-245, _245, +3a, 4E2, _ _, 2n, n2, account_total 答:

合法:aBc, _245, _ _, n2, account_total 1.7 标识符的第一个字符为何不能是数字? 答:

如果可以为数字,则32是变量名还是整数呢?如 int 32=56;则printf(〞%d〞, 32);的输出为?

1.8 C语言中标识符区分大小写吗?即n1和N1是同一个标识符吗?利用下面的程序验证。

# include void main(){

int n1=3;

printf(〞n1=%d〞,N1);} 答: 程序编译时出错。如果在C语言中n1和N1被认为是同一个标识符,则不会出现这个错误。

1.9写出输出结果或输出语句(x=2)。

a)printf(〞x=〞);b)printf(〞x=%d%d〞,x,x);c)/* printf(〞x+y=%d〞,x+y);*/ d)printf(〞% and %%〞);e)printf(〞Welcome to C!and x=%z〞);f)输出信息100%.g)把信息“This is a c program.”打印在两行上,第一行最后一个字母是c。答:

f)printf(〞100%%〞);g)printf(〞This is a cn program.〞);1.10 编写一个C程序,输出以下信息。

* * * * * * * * * * * * * * * * * * * * * * Very Good!* * * * * * * * * * * * * * * * * * * * * * 答:

#include void main(){ printf(〞* * * * * * * * * * * n〞);printf(〞* * * * * * * * * * * n〞);printf(〞 Very Good!n〞);printf(〞* * * * * * * * * * * n〞);printf(〞* * * * * * * * * * * n〞);}

1.11 分析下面程序运行结果,运行顺序。

答:

#include void print(){ printf(〞* * * * * * * * * * * n〞);} void main(){ print();print();printf(〞 Very Good!n〞);print();print();} 本程序中的print函数与程序1-4中的sum函数有何不同? sum函数需要输入两个整数,它会输出一个整数,因此在使用时需用一个变量保存函数的返回值,如result = sum(2, 3)。

print函数没有输入和输出值,因此在使用时直接调用就好,如print()。

1.12找到工程目录,查看VC6.0为一个工程所生成的文件。找到C语言源文件(扩展名为.c的文件),把它拷贝到某个文件夹中。打开VC6.0,单击文件(File)→打开(Open),找到并打开拷贝到其它文件夹中的源文件。单击组建(Build)→执行(Execute)命令(或Ctrl+F5),程序能被编译吗?

答: 能被编译。

1.13 在VC6.0中编译C语言程序时可以从新建一个C语言源文件开始吗?请验证。

答:

可以的,不过在编译时会提示建工程。

1.14 C语言源文件能用记事本打开吗?

答: 可以的。

6.C语言程序设计考试题答案 篇六

c语言中有关命令行参数涉及到程序的主函数main(int argc,char *argv[]这样两个参数,其中,int argc表示命令行参数的个数(包括可执行程序名本身),char *argv[]表示每个参数的具体内容,argv[0]为命令行中可执行程序名本身,argv[1]为命令行中第二个参数的内容,依次类推。 如下例输出命令行参数的个数及参数的内容:

main (int argc,char *argv[],

{int i;

printf(“ 命令行中可执行文件名为:%s”,argv[0]);

printf(“ 总共有%d个参数:”,argc);

i=0;

while(argc>=1)

{printf(″%s “,argv[i++]);

argc--;}

}

命令行参数用的最多还是在诸如dir a:等之类带有盘符、路径或文件名这样的命令行中,所以说灵活处理这一类参数才能有效地提高程序的运行效果。譬如dir命令,其后可以是盘符,可以是路径,也可以是文件名,如何区分这一参数呢?请看下例(此程序模拟dir命令,程序要求在命令行输入一个参数:盘符或路径或文件名,若无参数或参数多于一个都将取默认的参数“*.*”)。

*--------------------

功能:模拟dir命令进行处理命令行参数

--------------------*/

#include

#include

#include

#inchlude

int j,num=0;

char ss[20],path[50],path2[50];

void main (int argc,char *argv[])

{

struct ffblk f;

int done;

if(argc==2) /*取命令行参数到数组中*/

strcpy(ss,argv[1]);

else

strcpy(ss,″*.*″); /*给数组赋值缺省参数*/

if (((ss[strlen(ss)-1]==′′||((ss[strlen(ss)-1]==’:’))

strcat(ss,″*.*″); /*若参数为路径或盘符,则加上″*.*″ */

getcwd(path1,50); /*取当前路径*/

if (chdir(ss)==0) /*判断参数是否为路径*/

strcat(ss,”*.*“); /*若路径末没有带”“,则加上”*.*“ */

chdir(path1); /*恢复原来路径*/

strcpy(path2,ss);

for(j=strlen(path2);j>0;j--)/*提取参数中的路径到path2 */

{if((path2[j]==’’))||(path2[j]==’:’)){

path2[j+1]=’�’;

goto senull;}

path2[0]=’�’;

senull:

if(strlen(path2)==0) /* 若给出的参数中没带路径,则取当前路径*/

strcpy(path2,path1);

printf(” **模拟dir** 命令目录路径%s“,path2);

done=findfirst(ss,&f,55); /*查找第一个配匹的文件*/

j=1;

while(!done)

{if (f.ff_attrib!=0x10) /* 若文件属性不是目录 */

printf(” %15s %20ld“,f.ff_name,f.ff_fsize);

else

printf(” &11s

“,f.ff_name);

num++;

j++;

if(j==23)

printf(” --------more (按任意键继续)----“);

getch;

j=0;

printf(″ (目录路径%s)″,path2);}

done=findnext(&f); /*查找下一个配匹的文件*/

}

printf(″ 当前目录中总共有%d个文件. ″,num);

在许多应用软件运行时都带有命令行参数,其实这些命令行参数在c语言编写的程序中也可以实现,灵活地运用命令行参数进行处理可以有效地提高程序的运行效率,收到事半功倍的效果。

c语言中有关命令行参数涉及到程序的主函数main(int argc,char *argv[]这样两个参数,其中,int argc表示命令行参数的个数(包括可执行程序名本身),char *argv[]表示每个参数的具体内容,argv[0]为命令行中可执行程序名本身,argv[1]为命令行中第二个参数的内容,依次类推。 如下例输出命令行参数的个数及参数的内容:

main (int argc,char *argv[],

{int i;

printf(” 命令行中可执行文件名为:%s“,argv[0]);

printf(” 总共有%d个参数:“,argc);

i=0;

while(argc>=1)

{printf(″%s ”,argv[i++]);

argc--;}

}

命令行参数用的最多还是在诸如dir a:等之类带有盘符、路径或文件名这样的命令行中,所以说灵活处理这一类参数才能有效地提高程序的运行效果。譬如dir命令,其后可以是盘符,可以是路径,也可以是文件名,如何区分这一参数呢?请看下例(此程序模拟dir命令,程序要求在命令行输入一个参数:盘符或路径或文件名,若无参数或参数多于一个都将取默认的参数“*.*”)。

*--------------------

功能:模拟dir命令进行处理命令行参数

--------------------*/

#include

#include

#include

#inchlude

int j,num=0;

char ss[20],path[50],path2[50];

7.C语言程序设计考试题答案 篇七

关键词:汇编语言,C/C++语言

在计算机系统的应用程序中, 所有汇编任务都由汇编语言来完成, 这样虽然完成任务的效率很高, 但是工作量却非常大, 会影响到对于应用程序的维护。若是所有的程序都是由C/C++语言进行编程, 虽然执行过程比较的简单, 但是这种方式却导致了目标代码的执行任务效率低, 实时性很差。所以在嵌入式系统中, 主要采用的编程方式是汇编语言与C/C++语言混合编程形式, 在编程过程中, 初始化任务由汇编语言来完成, 主要的任务则是由C/C++语言来完成, 从而达到了最大的效果。

1 ARM处理器

ARM处理器主要是利用编译器将汇编语言以及C/C++语言进行相互的切换, 并且ARM制定了相关标准, 来保障切换过程中的顺利实施。

1.1 寄存器使用规则

ATPCS为ARM寄存器进行不同命名, 从而在编程的过程中来利用ATPCS寄存器进行编程。

1.2 堆栈的使用规则

在ATPCS中规定, 堆栈的主要类型是FD, 被称为满递减堆栈, 所以必须要利用STMFD/LDMFF进行堆栈的操作。

1.3 参数传递规则

参数传递的规则不一样, 利用参数的数量可以将子程序分为参数数量固定, 以及参数数量不固定的子程序, 对于参数变化的子程序, 若参数的数量少于四个, 那么要利用寄存器来进行参数的传递, 若参数的数量多余四个, 那么必须要利用堆栈来进行参数的传递, 所以参数之间传递的规则不同。

2 C语言

2.1 汇编语言调用C语言

在对计算机程序的开发中, 前期由汇编语言进行初始化的编程, 然后在进行C语言之间的切换, 对于C语言的切换, 主要是通过BL来实现的。以下是调用的字符:

汇编语言的集成环境如图1所示。

2.2 C语言调用汇编语言

在程序中, 使用“C++”程序来调用C程序, 以下是调用C程序的字符:

2.3 汇编程序调用C++程序

在汇编语言与C++程序的切换时, 必须要利用关键词进行声明, 在C++程序的结构中, 如果没有基类, 则要使相应的存储结构与ARMC相同。并且在汇编过程中将参数的数据放在数据栈中, 只有这样才能使被调用的C++程序访问到相应的参数。

3 混合编程

在进行混合编程的过程中, 若汇编代码较短, 那么可以利用内嵌汇编的方式进行混合编程, 不会直接指定寄存器, 而是直接利用编译器进行分配。主要的内嵌汇编语言如下:

以下是利用字符串复制的方式实现混合汇编:

4 结语

在计算机系统嵌入式应用程序的开发中, 利用ARM汇编语言与C/C++语言相互结合的混合编程方式, 可以在很大程度上提高编程的最佳效果。本文主要举出了ARM汇编语言以及C/C++语言汇编中的实例, 提出了设计的方法, 阐述了ARM汇编语言与C/C++语言相互结混合编程方式的实现。

参考文献

[1]翟乃强, 隋树林.汇编语言与C语言及Visual C++混合编程[J].青岛科技大学学报 (自然科学版) , 2003.

[2]王付山.汇编语言程序设计教学初探[J].福建电脑, 2005.

8.基于C语言的递归程序设计分析 篇八

关键词 递归;循环;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

9.c语言笔试题目及答案 篇九

c语言笔试题目及答案

一、选择题((1)~(10)每小题2分,(11)~(50)每小题1分,共60分)

下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选

项涂写在答题卡相应位置上,答在试卷上不得分。

(1)数据的存储结构是指________。

A)存储在外存中的数据 B)数据所占的存储空间量

C)数据在计算机中的顺序存储方式 D)数据的逻辑结构在计算机中的表示

答案:D

评析:数据的逻辑结构在计算机存储空间中的存放形式形式称为数据的存储结构(也称数据的物理结构)。

(2)下列关于栈的描述中错误的是________。

A)栈是先进后出的线性表

B)栈只能顺序存储

C)栈具有记忆作用

D)对栈的插入与删除操作中,不需要改变栈底指针

答案:B

评析:栈是一种特殊的线性表,又称先进后出表(FILO―First In Last Out)。

(3)对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是

________。

A)冒泡排序为n2 B)冒泡排序为n

C)快速排序为n D)快速排序为n(n一1)/2

答案:D

评析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过n/2遍的从前往后扫描和n/2遍的从后往前扫描,需要比较次数为n(n-1)/2。快速排序法的最坏情况比较次数也是n(n-1)/2。

(4)对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为________。

A)log2n B)n/2 C)n D)n+l

答案:C

评析:顺序查找过程中,如果被查找的元素是线性表中的最后一个元素,或者元素不在线性表中,则需要与线性表中所有的元素进行比较。对长度为n的线性表进行顺序查找,在最坏情况下需要比较n次。

(5)下列对于线性链表的描述中正确的是________。

A)存储空间不一定是连续,且各元素的存储顺序是任意的

B)存储空间不一定是连续,且前件元素一定存储在后件元素的前面

C)存储空间必须连续,且前件元素一定存储在后件元素的前面

D)存储空间必须连续,且各元素的存储顺序是任意的

答案:A

评析:在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。

(6)下列对于软件测试的描述中正确的是________。

A)软件测试的目的是证明程序是否正确

B)软件测试的目的是使程序运行结果正确

C)软件测试的目的是尽可能多地发现程序中的错误

D)软件测试的目的是使程序符合结构化原则

答案:C

评析:关于软件测试的目的,Grenford J.Myers再《The Art of Software Testing》一书中给出了深刻的阐述,整体来说,软件测试的目的就是尽可能多地发现程序中的错误。

(7)为了使模块尽可能独立,要求________。

A)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强

B)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱

C)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱

D)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强

答案:B

评析:模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。软件设计,应尽量做到高内聚,低耦合,有利于提高模块的独立性。

(8)下列描述中正确的是________。

A)程序就是软件

B)软件开发不受计算机系统的限制

C)软件既是逻辑实体,又是物理实体

D)软件是程序、数据与相关文档的集合

答案:D

评析:计算机软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据及相关文档的完整集合。

(9)数据独立性是数据库技术的重要特点之一,所谓数据独立性是指________。

A)数据与程序独立存放

B)不同的数据被存放在不同的文件中

C)不同的数据只能被对应的应用程序所使用

D)以上三种说法都不对

答案:D

评析:数据独立性是数据与程序间的互不依赖性,即数据库中数据独立于应用程序而不依赖于应用程序。也就是说,数据的逻辑结构、存储结构与存取方式的改变不会影响应用程序。选项A、B、C三种说法都是错误的。

(10)用树形结构表示实体之间联系的模型是________。

A)关系模型 B)网状模型 C)层次模型 D)以上三个都是

答案:C

评析:层次模型是最早发展起来的数据库模型,它的基本结构是树形结构。

(11)算法具有五个特性,以下选项中不属于算法特性的是________。

A)有穷性 B)简洁性 C)可行性 D)确定性

答案:B

评析:有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性是算法的基本特性。

(12)以下选项中可作为C语言合法常量的是________。

A)-80. B)-080 C)-8e1.0 D)-80.0e

答案:A

评析:c语言的常量分为整型常量、实型常量和字符型常量。选项A属于实型常量中的十进制小数形式的表示法,是合法的。

(13)以下叙述中正确的是________。

A)用C程序实现的算法必须要有输入和输出操作

B)用C程序实现的算法可以没有输出但必须要输入

C)用C程序实现的算法可以没有输入但必须要有输出

D)用C程序实现的算法可以既没有输入也没有输出

答案:C

评析:算法的特性中包括“有零个或多个输入”及“有一个或多个输出”这两个特性。一个算法得到的结果就是算法的输出,没有输出的算法是没有意义的,所以一个算法必须至少有一个输出。

(14)以下不能定义为用户标识符的是________。

A)Main B)_0 C)_int D)sizeof

答案:D

评析:C语言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。注意:大写字母和小写字母被认为是两个不同的字符。A中Main与主i函数名main不同。

(15)以下选项中不能作为合法常量的是________。

A)1.234e04 B)1.234e0.4 C)1.234e+4 D)1.234e0

答案:B

评析:指数形式的实型常量要求字每e(或E)之前必需有数字,且e后面的指数必须为整数,所以本题中选项B非法。

(16)数字字符0的ASCII值为48,若有以下程序

main

{char a=”1″,b=”2″;

printf(“%c,”,b++);

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

)

程序运行后的输出结果是________。

A) 3,2 B)50,2 C)2,2 D)2,50

答案:C

评析l执行语句“printf(“%c,ll,b++);”后,b的值变成字符3,执行“printf(“%d ”,b-a);”,即‘3’-‘1’。

(17)有以下程序

main( )

{

int m=12, n=34;

printf(“%d%d”,m++,++n);

printf(“%d%d ”,n++,++m);

}

程序运行后的输出结果是________。

A)12353514 B)12353513 C)12343514 D)12343513

答案:A

评析:执行“printf(“%d%d”m++,++n);”后,输出的是m和n+l的值1235,接着执行

“printf(“%d%d”,n++,++m);”输出n和m+l的值3514。

(18)有定义语句:int b;char c[10】;,则正确的输入语句是________。

A) scanf(”%d%s“,&b,&C); B) scanf(”%d%s“,&b,C);

C) scanf(”%d%s“,b,C); D) scanf(”%d%s“,b,&C);

答案:B

评析:scanf函数中的“格式控制”后面应当是地址,而不是变量名。对于变量,通过地址运算符“&”求出内存中的地址;对于数组c[10],数组名c即为数组在内存中的地址。

(19)有以下程序

main()

{int m,n,p;

scanf(“m=%dn=%dp=%d”,&m,&n,&p);

printf(“%d%d%d”,m,n,p);

}

若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,

则正确的输入是________。

A) m。123n=456p=789 B) m=123 n=456 p=789

C) m=123,n=456,p=789 D) 123 456 789

答案:A

评析:根据本题的数据输入形式“scanf(“m=%dn=%dp=%d”&m,&n,&p);”说明在输入数据时,必须输入“m=”、“n=”、“p=”字符,且中间不能含有空格。

(20)有以下程序

main()

{ int a,b,d=25;

a=d/10%9;

b=a&&(-1);

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

}

程序运行后的输出结果是________。

A)6,l B)2,l C)6,0 D)2,0

答案:B

评析:本题中“a=d/10%9;”的值为25/10%9=2; “b=a&&(-1);”为2&&(-1)=1(注意:-1表示真,只有O才表示假),所以a,b的值分别为2,1。

(21)有以下程序

main()

{

int i=1 j=2,k=3;

if(i++==1&&(++j==3||k++==3))

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

}

程序运行后的输出结果是________。

A)l 2 3 B)2 34 C) 2 2 3. D)2 3 3

答案:D

评析:执行“i++==1&&(++j==3‖k++==3)”时,表达式“i++==1”嗨值为真,其值为1,表达式“++j=3”的值为真,根据短路原理,右边的表达式“k++==3”不再进行运算。括号中表达的值为l,作与运算后整个表达式的值也为l,输出i.j,k时,由于未执行过k,所以它们的值分别为2,3,3。

(22)若整型变量a、b、c、d中的值依次为:1、4、3、2。则条件表达式a

A)l B)2 C)3 D)4

答案:A

评析:条件表达式的一般形式为:表达式17表达式2:表达式3

本题先求的是a

(23)有以下程序

main( )

{

int p[8]={11,12,13,14,15,16,17,18},i=O,j=0;

while(i++<7)if p[i]%2)j+-=p[i];

printf(“%d”,j);

}

程序运行后的输出结果是________。

A)42 B)45 C)56 D)60

答案:B

评析:本程序的作用是求除p[O]外的其它奇数的和。

(24)有以下程序

main()

{

char a[7]= “a0OaO”; int i,j;

i=sizeof(a);j=strlen(a);

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

)

程序运行后的输出结果是________。

A)2 2 B)76 C)7 2 D)6 2

答案:C

评析:c语言中以‘’作为字符串的结束符,且strlen()函数计算的是‘’字符前的所有字符的个数。数组定义以后系统就为其分配相应大小的内存空间,而不论其中有没有内容。

(25)以下能正确定义一维数组的选项是________。

A)int a[5]={0,1,2,3,4,5; B)char a[]={0,1,2,3,4,5};

C)char a={’A’,’B’,’C’}; D)int a[5]=”0123″;

答案:B

评析:选项A中定义的是5个数组元素,但赋值的时候赋的是6个元素,所以出错;选项c不符合数组定义形式,数组名后应加上“[]”;选项D的类型说明符错误,如果用char定义就对了;选项B中的0,1,2,3,4,5分别表示对应字符的ASCII码,所以选项B是正确的。

(26)有以下程序

int fl(int x,int y){return x>y?x:y;}

int f2(int x,int y){return x>y?y:x;}

main()

{

int a=4,b=3,c=5,d=2,e,f,g;

e=f2(f1(a,b),f1(c,d));f=fl(f2(a,b),f2(c,d));

g=a+b+c+d-e-f;

printf(“%d,%d,%d”,e,f,g);

)

程序运行后的输出结果是________。

A)4,3,7 B)3,4,7 C)5,2,7 D)2,5,7

答案:A

评析:函数n的功能是返回两个数中比较大的值,f2的功能是返回两个数中比较小的值。

(27)已有定义:char a[]=”xyz”,b[]={’x’,’y’,’z};,以下叙述中正确的是________。

A)数组a和b的长度相同 B)a数组长度小于b数组长度

C)a数组长度大于b数组长度 D)上述说法都不对

答案:C

评析:c语言规定‘’为字符串结束标志。所以“char a[]=“xyz””的数组长度为4,而“b[]={‘x’,‘y’,‘z’};”的数组长度为3,数组长度与strlen函数所求的长度不同,本题是指数组占内存空间的大小。

(28)有以下程序

Void f(int *x, int *y)

{

int t;

t= *x; *x=*y;’*y=t;

)

main( )

{

int a[8]={1,2,3,4,5,6,7,8},i,*p,*q;

p=a;q=&a[7];

while(p

{f(p,q); p++; qC;} 。

for(i=0;i<3;i++) printf(“%d”,a[1][i]);

}

程序运行后的输出结果是________。

A)8,2,3,4,5,6,7,1, B)5,6,7,8,1,2,3,4.

C)1,2,3,4,5,6,7,8, D)8,7,6,5,4,3,2,l,

答案:D

评析;本程序中函数f的作用是交换指针变量x和y所指向的存储单元的值。

(29)有以下程序

main()

{

im a[3][3],*p,i;

p=&a[0][o];

for(i=0;j<9;i++) p[i]=I;

for(i=0;j<3;i++)printf(“%d”,a[1][i]);

)

程序运行后的输出结果是________。

A)012 B)123 C)234 D)345

答案:D

评析:本题赋值后,a的数组元素的值分别为a[01[0]=0,a[0][1]=1,a[0][2]=2,a[1][0]=3,a[1][1]=4,a[1][2]=5,a[2][0]=6,a[2][1]=7,a[2][2]=8,故本题输出的值为345。

(30)以下叙述中错误的是________。

A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出

B)数组名代表的是数组所占存储区的首地址,其值不可改变

C)当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越

界”的出错信息

D)可以通过赋初值的方式确定数组元素的个数

答案:C

评析:在c语言中,如果出现下标越界的情况,系统不管在编译还是执行时都不会给出“下标越界”的错误提示。

(31)有以下程序

#define N20

fun(int a[],int n,int m)

{ int i,j;

for(i=m;i>=n;iC)a[i+1]=a[i];

}

main()

{

int i,a[N]={1,2,3,4,5,6,7,8,9,10};

fun(a,2,9);

for(i=O;i<5;i++) printf(“%d”,a[i]);

}

程序运行后的输出结果是________。

A)10234 B)12344 C)12334 D)12234

答案:C

评析:本题函数fun的作用是将指定的数组元素(从下标n到下标m)向后移一位。由函数调用“fun(a,2,9);”可知,函数fun用于将a[2]到a[9]的各元素依次向后移一位,移完后,a数组中各元素的值分别为1,2,3,3,4,5,6,7,8,9,10,故输出的前5个数组元素为12334。

(32)有以下程序

main()

{

int a[3][2]={0},(*ptr)[2],i,j;

for(i=0;i<2;i++) {ptr=a+i; scanf(“%d”,ptr); ptr++;}

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

{ for(i=0;j<2;j++) printf(“%2d”,a[i][j]);

printf(“”);

}

}

若运行时输入:1 2 3<回车>,则输出结果是________。

A)产生错误信息

B)l0 C)l 2 D)l 0

2 O 3 0 2 0

0 0 0 O 3 0

答案:B

评析:二维数组a,通过a[3][2]={0}将数组中的各个元素初始化为0,指针变量ptr,指向包含2个元素的一维数组。a[0][0]:l,a[1][0]=2,故本题的输出选B。

(33)有以下程序

prt(int *m, int n)

{ int i;

for(i=O;i

)

main()

{

int a[]={ 1,2,3,4,5 },i;

prt(a,5);

for(i=O;i<5;i++)

printf(“%d,”,a[i]);

程序运行后的输出结果是________。

A)l,2,3,4,5, B)2,3,4,5,6, C)3,4,5,6,7, D)2,3,4,5,1,

答案:B

评析:用数组名作函数实参时,不是把数组的值传递给形参,而是把实参数组的起始地址传递给形参数组,这样两个数组就共同占用同一段内存单元。

(34)有以下程序

main()

{ int a[]={1,2,3,4,5,6,7,8,9,0},*p;

for(p=a;p

}

程序运行后的输出结果是________。

A)l,2,3,4,5,6,7,8,9,0, B)2,3,4,5,6,7,8,9,10,1,

C)0,1,2,3,4,5,6,7,8,9, D)l,l,1,l,l,l,l,l,l,l,

答案:A

评析:c语言规定数组变量名代表数组的首地址,即第0号元素的地址。本题将a数组中的值全部输出,即为l,2,3,4,5,6,7,8,9,0,。

(35)有以下程序

#define P 3

void F(int x){return(P*x*x);}

main()

{printf(“%d”,F(3+5));}

程序运行后的输出结果是________。

A)192 B)29 C)25 D)编译出错

答案:D

评析:return语句用于从被调函数带回一个函数值。void关键字表示“无类型”,即不需要从被调函数中带回函数值,所以不需要return语句,故编译时出错。

(36)有以下程序

main()

{int c=35;printf(“%d”,c&C);}

程序运行后的输出结果是________。

A)0 B)70 C)35 D)1

答案:C

评析:按位“与”时,1&1=1,其他都等O。因为本题中相与的两个值相等,即对应位上的二进制值相等,所以“与”的结果也即为其值本身。

(37)以下叙述中正确的是________。

A)预处理命令行必须位于源文件的开头

B)在源文件的一行上可以有多条预处理命令

C)宏名必须用大写字母表示

D)宏替换不占用程序的运行时间

答案:D

评析:通常,预处理命令位于源文件的开头,也可以写在函数与函数之间;不能在一行上写多条预处理命令:宏名一般习惯用大写字母表示,以便与变量名相区别,但这并非规定,也可用小写字母。

(38)若有以下说明和定义

union dt

{int a;har b;ouble c;}data;

以下叙述中错误的是________。

A)data的每个成员起始地址都相同

B)变量data所占的内存字节数与成员c所占字节数相等

C)程序段:data.a=5;pintf(“%f ”,data.C);输出结果为5.000000

D)data可以作为函数的实参

答案:C

评析:union是表示共用体的关键字,成员a,b,c共占用同一个内存空间,data的每个成员起始地址都相同;共用体变量所占的内存长度等于最长的成员的长度,故变量’data所占的内存字节数与成员c所占字节数相等;执行“data.a=5;printf(“%f ”,data.C);”printf函数只是将内存中的数据以不同的类型输出,而不能将内存中的整型数据自动转换为等值的浮点数,故C是错误的。

(39)以下语句或语句组中,能正确进行字符串赋值的是________。

A)char*sp;*sp=”right!”; B)char s[lO];s=”right! “;

C)char s[10];*s=”right! “; D)char*sp=”right! “;

答案:D

评析:选项A定义了字符型的指针变量sp,则*sp存储的是第一个字符,而给它赋的是字符串,故错;

选项B表示代表数组的首地址,而题中给它赋的是字符串,所以错误;

选项c定义了一个字符型的数组s[10],再通过+s给数组元素赋初值,这时是与选项A相同的错误。

(40)设有如下说明

typedef struct ST

{long a; int b; char c[2];}NEW;

则下面叙述中正确的是________。

A)以上的说明形式非法 B)ST是一个结构体类型

C)NEW是一个结构体类型 D)NEW是一个结构体变量

答案:C

评析:typedef关键字用于声明一个新的类型名代替已有的类型名。

本题中如果没有用typedef进行定义的话,则struct ST为结构体类型,现在用typedef定义后,相当于用NEW代表了struct ST这一结构体类型,故NEW为结构体类型。

(41)有以下程序

main()

{ int a=1,b;

for(b=l;b<10;b++)

{ if(a>=8)break;

if(a%2==1){a+=5;continue;}

a-=3;

)

printf(“%d”,b);

}

程序运行后的输出结果是________。

A) 3 B)4 C) 5 D) 6

答案:B

评析:break和continue的区别是:continue语句只结束本次循环,而不是终止整个循环的执行;而break语句则是结束整个循环过程,.不再判断执行的条件是否成立。

(42)有以下程序

main()

{ char s[]=”l 59″,*p;

p=s;

printf(“%c”,*p++);printf(“%c”,*p++);

}

程序运行后的输出结果是________。

A)15 B)16 C)12 D)59

答案:A

评析:本题通过“p=s”将指针变量p指向字符数组s,在第一次输出时,由于++和*为同一优先级,“*p++”相于“+(p++)”。p指向s[1],输出为s[1]的值。

10.中医护理考试题及答案C 篇十

科室: 姓名: 成绩:

一、单选题(每题2分,共40分)

1、为减少患者服药格拒,真热假寒用寒药,服药最好选用()

A、温服 B、热服 C、凉服 D、冷服 E、无严格规定

2、汗法忌生冷食物和()

A、辛辣食物 B、清淡食物 C、酸性食物 D、煎炸食物 E、热粥

3、药物采取二次分服的方法的用法是()

A汗法 B、吐法 C、下法 D、补法 E、和法

4、代表方为麻子仁丸的下法是()

A、寒下 B、温下 C、润下 D、泻下 E、攻补兼施

5、服小柴胡汤忌食()

A、萝卜 B、姜 C、大黄 D、附子 E、红薯

6、有效清除经口摄入中毒物质,避免毒物吸收最有效的方法是()

A、清洗 B、洗胃 C、催吐 D、导泻 E、灌肠

7、如果有毒中草药科腐蚀肠粘膜时,不能让患者服下的保护剂是()

A、浓茶 B、植物油 C、牛奶 D、蛋清 E、果胶

8、煎煮时需要烊化的中药是()

A、麻黄 B、大黄 C、人参 D、阿胶 E、红花

9、服截疟药应在疟疾发作前:()

A、1-2h B、2-4h C、3-4h D、3-5h E、4-6h 10.凡消导类药物,服用最好选在()

A、饭后 B、饭前 C、睡前 D、清晨上午 E、空腹

11、在服用补益药期间偶遇外感,为防“闭门留寇”,最好()A、继续服用 B、减少服药次数 C、停服 D、增加服药次数 E、减轻药量 12.中医治疗疾病的基本原则是()

A、调整阴阳 B、因地制宜 C.扶正祛邪 D、标本缓急 E、治病求本 13.属于中医治则的是()

A、发汗 B、催吐 C、攻下 D、调和 E、扶正

14、中医养生的三个层次包括:()

A、养身、养病、养心 B、养身、养性、养心 C、养病、养性、养心 D、养身、养性、养神 E、养身、养性、养病

15、人体所需的营养素不包括:()

A、蛋白质、脂肪、碳水化合物 B、矿物质 C、微量元素 D、维生素、水 E、氨基酸

16、全球最受敬重的营养学权威人物是()

A、江本胜博士 B、陈君石院士 C、朱长生教授

D、夏学銮教授 E、坎贝尔教授

17、《备急千金要方》的“大医精诚篇”中指出“凡大医治病,必先安神定志,无欲无求,先发大慈恻隐之心,誓愿普救含灵之苦”,告知作为医护人员,对待患者应该做到()

A、一视同仁 B、诚挚体贴 C、冷嘲热讽 D、区别对待 E、不分贵贱

18、三国演义有 “望梅止渴” 的典故,延伸至临床的情志护理是属于()

A、说理开导 B、释疑解惑 C、暗示疗法 D发泄解郁E、诱导疗法 19.脾病患者,应忌食下列哪味食物:()

A、酸 B、苦 C、甘 D、辛 E、咸 20.每剂中药各煎的总取汁量为(),儿童减半

A、200ml左右 B、300ml左右 C、250ml左右 D、350ml左右 E、400ml左右

二、多项选择题(每题3分,共30分)

1、情志护理的基本原则是()

A、诚挚体贴,全面关心 B、有的放矢,因人施护 C、注意饮食 D.清净养神,宁心寡欲 E、怡情畅志,乐观愉快

2、高热病人的护理措施有()

A、卧床休息 B、居室安静 C、饮食清淡 D、避免直接吹风 E、少饮水 3.不良心理包括:()

A、怀疑心理 B、忧郁心理 C、贪婪心理 D、嫉妒心理 E、回归心理

4、中医治法中属于下法的有()

A、寒下 B、温下 C、润下 D、逐下 E、攻补兼施

5、中医养性“八不”包括:()

A、不贪、不争 B、不报屈 C、不后悔、不怨人 D、不着急、不上火 E、不生气

6、拔火罐的常用方法包括:()

A、留罐 B、多罐 C、火罐 D、走罐 E、闪罐

7、艾条灸的类别不包括:()

A、温和灸 B、雀啄灸 C、间接灸 D、回旋灸 E、直接

8、阴阳学说的基本内容()

A、阴阳的对立制约 B、阴阳的互根互用 C、阴阳的消长 D、阴阳转化 E、阴阳离合

9、气虚可进一步导致()

A、血虚 B、血瘀 C、出血 D、水停 E、津泄

10、下列属于津液的排泄途径是()

A、汗 B尿 C粪 D呕吐物 E呼气

三、简答题(每题10分,共30分)

1、简述经络的生理功能。

2、请写出三类腧穴的特点。

3、写出奇经八脉的特点。

答案:

一、单选题

1B 2C 3B 4C 5A 6 B 7A 8D 9B 10A 11C 12E 13E 14B 15E 16E 17A 18C 19A 20C

二、多选题

1、ABDE

2、ABCD

3、ABCDE

4、ABCDE

5、ABCDE

6、ADE

7、ABD

8、ABCD 9、ABCDE

10、ABCE

三、简答题

1、简述经络的生理功能。

(1)沟通联系作用;(2)运输渗灌作用;(3)感应传导作用;(4)调节作用。

3、请写出三类腧穴的特点。

腧穴分为三类:经穴、经外穴、阿是穴三类,它们的特点分别是:、(1)经穴均分布在十四经脉循行路线上,有归经,有固定位置、专用穴名,主治局部疾病和循经治本经本脏腑器官疾病。

(2)经外穴无归经,但是有固定位置、专用穴名,主要对某些病有特效。(3)阿是穴无归经,无固定位置,无专用穴名“以痛为腧”,治局部病变。

11.C语言程序设计教学方法探究 篇十一

摘要:在应用型本科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.

12.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.

上一篇:农村发展党员工作情况的调研下一篇:大学生餐饮部实习报告