考查C程序员的基本编程技能

2024-04-11

考查C程序员的基本编程技能(精选4篇)

篇1:考查C程序员的基本编程技能

内容限于C /C常用语法,不涉及数据结构、算法以及深奥的语法。

考试成绩能反映出考生的编程质量以及对C /C的理解程度,

但不能反映考生的智力和软件开发能力。

笔试时间90分钟。请考生认真答题,切勿轻视。

一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。

(10分)

提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。

例如 int 变量 n 与“零值”比较的 if 语句为:

if ( n == 0 )

if ( n != 0 )

以此类推。

请写出 BOOL flag 与“零值”比较的 if 语句:

请写出 float x 与“零值”比较的 if 语句:

请写出 char *p 与“零值”比较的 if 语句:

二、以下为Windows NT下的32位C 程序,请计算sizeof的值(10分)

char str[] = “Hello” ;

char *p = str ;int

n = 10;

请计算

sizeof (str ) =

sizeof ( p ) =

sizeof ( n ) =

void Func ( char str[100])

{请计算 sizeof( str ) = }

void *p = malloc( 100 );

请计算sizeof ( p ) =

三、简答题(25分)

1、头文件中的 ifndef/define/endif 干什么用?

2、#include 和

#include “filename.h” 有什么区别?

3、const 有什么用途?(请至少说明两种)

4、在C 程序中调用被 C编译器编译后的函数,

为什么要加 extern “C”声明?

5、请简述以下两个for循环的优缺点

// 第一个for (i=0; i{if (condition)

DoSomething;

else

DoOtherthing();}

优点:缺点:

// 第二个if (condition)

{for (i=0; i DoSomething();}

else{

for (i=0; i优点:缺点:

四、有关内存的思考题(20分)

void GetMemory(char *p)

{

p = (char *)malloc(100);

}

void Test(void)

{

char *str = NULL;GetMemory(str);

strcpy(str, “hello world”);

printf(str);

}请问运行Test函数会有什么样的结果?答:

char *GetMemory(void)

{

char p[] = “hello world”;

return p;

}

void Test(void)

{

char *str = NULL;

str = GetMemory();

printf(str);

}

请问运行Test函数会有什么样的结果?答:

Void GetMemory2(char **p, int num)

{

*p = (char *)malloc(num);

}

void Test(void)

{

char *str = NULL;

GetMemory(

strcpy(str, “hello”);

printf(str);

}

请问运行Test函数会有什么样的结果?答:

void Test(void)

{

char *str = (char *) malloc(100);

strcpy(str, “hello”);

free(str);

if(str != NULL)

{

strcpy(str, “world”);

printf(str);

}

}

请问运行Test函数会有什么样的结果?答:

五、编写strcpy函数(10分)

已知strcpy函数的.原型是

char *strcpy(char *strDest, const char *strSrc);

其中strDest是目的字符串,strSrc是源字符串,

(1)不调用C /C的字符串库函数,请编写函数 strcpy

(2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?

六、编写类String的构造函数、析构函数和赋值函数(25分)

篇2:考查C程序员的基本编程技能

本试题仅用于考查C++/C程序员的基本编程技能,

内容限于C++/C常用语法,不涉及数据结构、算法以及深奥的语法。

考试成绩能反映出考生的.编程质量以及对C++/C的理解程度,

但不能反映考生的智力和软件开发能力。

笔试时间90分钟。请考生认真答题,切勿轻视。

一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。

(10分)

提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。

例如 int 变量 n 与“零值”比较的 if 语句为:

if ( n == 0 )

if ( n != 0 )

以此类推。

请写出 BOOL flag 与“零值”比较的 if 语句:

请写出 float x 与“零值”比较的 if 语句:

请写出 char *p 与“零值”比较的 if 语句:

二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)

char str[] = “Hello” ;

char *p = str ;int

n = 10;

请计算

sizeof (str ) =

sizeof ( p ) =

sizeof ( n ) =

void Func ( char str[100])

{请计算 sizeof( str ) = }

void *p = malloc( 100 );

请计算sizeof ( p ) =

三、简答题(25分)

1、头文件中的 ifndef/define/endif 干什么用?

2、#include 和

#include “filename.h” 有什么区别?

3、const 有什么用途?(请至少说明两种)

4、在C++ 程序中调用被 C编译器编译后的函数,

为什么要加 extern “C”声明?

5、请简述以下两个for循环的优缺点

// 第一个for (i=0; i

{if (condition)

DoSomething;

else

DoOtherthing();}

优点:缺点:

// 第二个if (condition)

{for (i=0; i

DoSomething();}

else{

for (i=0; i

优点:缺点:

四、有关内存的思考题(20分)

void GetMemory(char *p)

{

p = (char *)malloc(100);

}

void Test(void)

{

char *str = NULL;GetMemory(str);

strcpy(str, “hello world”);

printf(str);

}请问运行Test函数会有什么样的结果?答:

char *GetMemory(void)

{

char p[] = “hello world”;

return p;

}

void Test(void)

{

char *str = NULL;

篇3:考查C程序员的基本编程技能

1 C 程序设计教学模式的一些弊端

现行的C程序设计教学中, 很多采用了多媒体课堂或普通课堂授课。首先这样的环境往往教师采用讲解为主的教学形式, 重点在于介绍语法语义做习题。很少对程序进行演示, 更不能让学生动手编写程序, 因此学生学习的结果是能听懂讲授内容, 但不会写程序。这种教学环境下教师讲解的是大量语法细节、语法说明、注意事项等等, 其实真正的编程环境下, 编写程序并非只需具备基本语法知识就可以进行。这种灌输式教学模式, 导致学生只能读懂程序, 却不会根据任务分析问题和解决问题, 难以完成编程任务。美国教育心理学家罗伯特 ?加涅提出:“教育的中心目标就是教会人们思考, 运用他们的理性, 成为更好的问题解决者。”程序设计的教学目标就应该是培养学生的编程能力, 让学生学会用计算机的思维会用程序解决具体问题。

2 C 语言教学模式的改革探讨

基于以上弊端有必要进行教学模式、教学方法及手段上的改革, 笔者认为从以下几个方面展开, 逐步构建新的有利于提高学生编程能力的程序设计语言教学模式。

2.1 改革教学环境

C语言程序设计或者说程序设计是实践性极强的课程。在实践环境下教学, 才能对学生创新能力加以培养。设计课程程序, 也是提高编程的关键环节, 是课程中一个密不可分的部分。实践教学中以侧重提高学生的实践能力和创新精神安排课程。为提高学生的实践能力和创新精神, 在教学过程中教师必须将讲授和实践紧密地结合, 强调理论紧紧围绕实践进行教学, 总体构建实践教学的目标, 学生通过上机实习编程, 在完成具有一定要求的任务 (作业) 的过程中去验证所学知识, 掌握基本的程序编写技能, 逐步培养他们继续学习计算机新技术的能力。因此, 程序设计课程的教学完全应该进入到机房开展。

2.2 因材施教组织教学

非计算机专业学生学习程序设计语言, 往往是没有任何的计算机程序设计相关知识储备的。教学中不能像对待专业学生那样按部就班, 课堂上很多学生听不懂专业术语, 学生会感觉难以接受。对于非计算机专业学生课程安排上应该从两个角度权衡。一是学生基础薄弱, 所以要从最简单入手, 不能一带而过, 认为这个很容易, 学生一看就能懂, 一听就理解。二是, 从学生专业入手, 如电子、自动化专业学生学习C程序设计是为了在单片机开发课程中完成编程任务。课程安排时可以根据单片机开发程序的基本特点进行。比如单片机开发经常会有位运算、延时程序等。课程安排时就可以多布置逻辑运算符、循环类程序。总之课程是为特定的对象设计的, 满足这些特定对象的需求才变得有意义、有价值。

2.3 改革教学方法、手段

在普通教室或多媒体课堂, 即使教师有意愿展开实践性教学也难以进行。而将教学在机房进行, 教学上再也不能延续以往的做法。在计算机机房环境下可以实施多种实践性强有利于学生提高编程能力的教学模式。教学方法通常采用案例教学、任务驱动教学等。

2.3.1 案例教学法

对于C程序设计而言, 案例教学可以在程序演示中完成语法知识点的讲解, 这样更生动, 更有利于启发学生举一反三。案例教学要求教师应该围绕本节课主要知识点制作一些程序案例, 其中一个案例为教学案例, 其余为学生练习案例, 练习案例只给出编程说明。案例教学课堂组织形式基本分为两个环节, 一是教师讲解本节知识点, 并通过演示案例直观呈现给学生;二是学生完成案例过程。

在教师演示这一过程中要求教师在讲解本次课程知识点时要直接将知识点引入到本节课制定的案例中, 边讲解, 边完成相关案例程序的编写。在这个教学环节中应坚持教师演示与启发提问双向互动结合, 充分调动学生积极思考的能力, 使其理论与实践相结合。教师既要作示范, 又要引导学生发现问题, 分析问题和解决问题, 进行针对教学, 有意识培养和提高学生分析问题和解决问题的能力。

学生在有了前面案例的基本操作经验后进入第二个环节, 即学生完成案例环节, 这个过程中强调学生独立完成。教师需要做的是要引导学生对案例进行分析。使学生初步了解该案例的基本算法流程, 这时教师应该扮演一个辅导、引导的角色。然后教师要让学生尽量独立的完成案例程序的编写, 在学生容易出错的环节, 教师应及时给予提醒。

2.3.2 任务驱动教学

C程序设计的任务驱动教学应该在案例教学基础上展开, 教师根据本次课程知识重点给出文字描述或程序流程图性质的编程任务说明, 并给出一些必要的任务提示。每个任务要使学生能对所学的几个知识点有所重温。比如, 在一个任务中可以让学生利用特定的循环结构, 特定的选择结构等。

学生在任务驱动教学是在案例基础上, 积累一定的编程经验和编程技巧后, 再根据教师给出的任务说明进行创意编程。创意编程是调动学生的学习积极性, 启发学生积极思考, 激发学生的学习潜能, 注重编程能力的培养的过程。通过编程学生可创作出一些教师也没有用过的独特算法, 这就是创新能力培养的重要环节。在学生完成任务过程中, 教师要随时观察学生情况, 随时解答学生的问题。鼓励引导学生积极思考, 学生完成任务后, 教师要回收每个学生的程序, 并对作品加以总结和讲解, 指出普遍性的问题。发现有创意独特的算法及时展示给学生并让学生给予评论。这样能培养学生养成自我认识, 自我进步和自我教育的良好习惯。讲评和评论能有效加强上机实践环节教学, 是培养学生应用能力和创新能力的关键环节。抓好这个环节, 可以使学生编程能力扎扎实实地得到提高, 创新能力得到开发。

3 改变考核模式

传统的c语言程序设计考核一般以标准化的笔试题为主, 重点在于考核本门程序设计语言的基本语法知识, 而程序设计题目在卷纸上难觅踪迹, 即使有, 也是大家一样, 编写完了也不能验证正确与否。考试时还是在纸质卷子上做选择、填空等题是很难考核学生真实水平的。因此, 需要采用无纸化考试模式, 利用考试软件, 重点考核学生的程序编写能力是重中之重。采用无纸化考试还可以避免千人一张卷的考试弊端, 避免作弊等投机取巧行为, 从而进一步促进学风。

4 结 语

综上所述, 编程能力培养应该成为程序设计教室的一个共识。利用先进教学模式及教学手段真正提高学生编程能力, 达到程序设计课程教学的真正目标。

参考文献

篇4:考查C程序员的基本编程技能

“ 技能包”教学模式包含技能包架构、职业标准汇总、岗位任务分析、项目教学设计四大环节, 其中, 项目教学设计环节是最重要的一环, 是“ 技能包”教学能否取得良好效果的核心。

下面以数控车床加工教学中椭圆宏程序编程为例探讨“ 技能包”教学模式下项目教学设计环节的实践。

一、设定典型项目

数控系统还没有提供完善的非圆曲线插补功能, 椭圆轮廓手工普通编程则无法对其加工点进行控制。

二、确定项目目标

数控车中的椭圆加工有几种常用宏程序编程方法, 通过利用一些简单的数学关系式计算, 编制程序代码可实现加工。

三、明确学习任务

方法1:利用椭圆标准方程编写宏程序;x2/a2+y2/b2=1 ( a为长半轴, b为短半轴) , 由公式可推出y=b/a*SQRT[ a2-x2] 。

实例1:若 ( a=19, b=12) 则转化成数控车坐标系椭圆方程为:z2/192+x2/122=1。 x、z之间的关系列式为:x=12/19*SQRT[ 192-z2] 。

分析:将椭圆曲线分成190 条线段, 用直线进行拟合非圆曲线, 每段直线在z轴方向的直线与直线的间距为0.1, 如#1=#1-0.1, 根据曲线公式, 以z轴坐标作为自变量, x轴坐标作为因变量, z轴坐标每次递减0.1 mm, 计算出对应的x坐标值。

宏程序变量如下:

1.#1 为非圆曲线公式中的z坐标值, 初始值为19。

2.#3 为非圆曲线公式中的x坐标值 ( 半径值) , 初始值为0。

3.GO1X[ 2*#3] Z[ #1-19] 建立非圆曲线在工件坐标系中的xz坐标系就是椭圆的中心坐标。

宏程序部分如下:

#1=19;#2=0;WHILE[ #1 GE #2] DO1;#3=12/19*SQRT[ 19*19-#1*#1] ;

GO1X[ 2*#3] Z[ #1-19] F0.2;#1=#1-0.1;END1;

方法2:利用椭圆参数方程:x=acosθ, y=bsinθ ( a为长半轴, b为短半轴, θ 为椭圆上任意一点与x正半轴的夹角)

分析:上述方程中x和y均与其中一个角度 θ 存在一定关系, 在数控程序中可以把 θ 作为一个自变量#1, x和y则相应设为因变量#2 和#3, 用含#1 的关系式表达出#2 和#3, 然后用无数个直线段连接起来即为椭圆轮廓。

实例2:利用椭圆参数方程编写宏程序 ( 若a=25, b=15) , 转化成数控车坐标系椭圆参数方程为:z=25cosθ, x=15sinθ

( 角度 θ 对应变量#1, Z坐标对应变量#3, X坐标对应变量#4)

宏程序部分如下:

#1=0;#2=90;WHILE[ #1 LE #2] DO1;#3=25*cos[ #1] ;

#4=15*sin[ #1] ;GO1X[ 2*#4] Z[ #3-25] F0.2;#1=#1+0.1;END1;

实例3:利用椭圆参数方程编写宏程序 ( 若a=25, b=15) 转化成数控车坐标系椭圆参数方程为:Z=25cosθ, X=15sinθ ( 角度 θ 对应变量#1, Z坐标对应变量#3, X坐标对应变量#4)

宏程序部分如下:

#1=0;#2=90;N3;#3=25*cos[ #1] ;#4=15*sin[ #1] ;GO1X[ 2*#4]Z[ #3-25] F0.2;#1=#1+0.1;IF[ #1 LE #2] GOTO3;END1;

四、项目教学评价

用户宏程序允许使用变量、算术和逻辑运算及条件转移, 使得编辑相同加工操作的程序更方便、更容易。在CAD/CAM软件普及的情况下, 宏程序的应用越来越少, 但是对于某些特殊形状, 而又符合某一规则的工件加工, 应用宏程序进行编程更为方便和高效。

摘要:数控车床手工编程中, 椭圆是相对较难却又比较典型的非圆曲线, 目前数控系统还没有提供完善的非圆曲线插补功能, 因此, 实际操作中椭圆编程多采用变量来完成, 宏程序在实际生产中有着广泛的应用, 它通过变量编程, 实现逻辑运算、程序循环等, 可使复杂的程序大大简化, 是普通编程方法的重要补充。以椭圆加工为例, 探讨“技能包”教学模式下数控类课程教学方法, 从利用椭圆标准方程、参数方程两方面, 阐述椭圆加工的几种方法。

关键词:数控车床,椭圆,宏程序,技能包

参考文献

[1]袁锋.全国数控大赛试题精选[M].北京:机械工业出版社, 2005.

上一篇:《所以...和黑粉结婚了》观后感下一篇:梗概作文