华为编程大赛试题2
华为编程大赛题目
cin>>src>>des;
cout<<str_str(src,des)<<endl;
rቤተ መጻሕፍቲ ባይዱturn 0;
}
unsigned int str_str(char * src, char *dst)
{
unsigned int loc=0;
返回:如果dst是src的子串 则返回起始位置 如果不是 则返回0
输入:src 指向母串的指针; dst 指向子串的指针
示例
src->akrsd5859 dst->rsd
则返回3
src->Rstsawerst36ds dst->rst
则返回8
src->dfsge dst-> dfsgesa
{
loc_point=src_tmp;
loc=src_tmp-src+1;
src_tmp++;
dst_tmp++;
}else
输入:n 游戏总人数 s 报数的起始编号 m 报数的数值
输出:p 指向长度为n的数组,出圈次序保存在p指向的数组中
示例
n=7 s=2 m=3 出圈次序为:4 7 3 1 6 2 5
n=3 s=1 m=2 出圈次序为:2 1 3
#include<iostream>
*temp=-1;
if(n1==1)
break;
while(m1)
{
if(temp==end)
temp=p;
else
编程知识竞赛试题及答案
编程知识竞赛试题及答案1. 以下哪个选项是Python语言中用于定义函数的关键字?A. functionB. defC. defineD. func答案:B2. 在JavaScript中,用于声明变量的关键字有哪些?A. varB. letC. constD. all of the above答案:D3. 在HTML中,用于定义文档标题的标签是什么?A. <title>B. <h1>C. <header>D. <title-tag>答案:A4. SQL语句中,用于创建新表的关键字是什么?A. CREATEB. NEWC. TABLED. both A and C答案:D5. 在Java中,哪个关键字用于捕获异常?A. tryB. catchC. throwD. both A and B答案:D6. 在C++中,用于定义类的关键字是什么?A. classB. structC. interfaceD. both A and B答案:D7. 在CSS中,用于选择所有HTML元素的通配符是什么?A. *B. allC. universalD. any答案:A8. 在Python中,哪个操作符用于列表拼接?A. +B. &C. |D. append答案:A9. 在JavaScript中,用于在数组中添加元素的方法是?A. pushB. addC. insertD. append答案:A10. 在HTML5中,用于定义一个段落的标签是什么?A. <p>B. <paragraph>C. <section>D. <div>答案:A11. 在CSS中,用于设置文本颜色的属性是什么?A. colorB. text-colorC. font-colorD. textColor答案:A12. 在Java中,用于定义接口的关键字是什么?A. interfaceB. abstractC. classD. both A and B答案:A13. 在PHP中,用于定义常量的关键字是什么?A. constB. defineC. constantD. both A and B答案:D14. 在C#中,用于定义属性的关键字是什么?A. propertyB. propC. attributeD. both A and C答案:D15. 在Ruby中,用于定义方法的关键字是什么?A. defB. methodC. functionD. proc答案:A。
华为程序设计大赛
12、 关于程序效率,下列说法正确的有:____ CD A 、应该尽量减少循环体内的工作量 B 、做性能优化时,应该先从复杂的函数入手 C 、可以通过优化算法、改进任务的处理方式来程序的提高效率 D 、权衡通用性、灵活性和维护性等因素,可以采用效率稍低的方案,只要该方案可以 满足我们的实际应用需求 13、 关于函数的调用,下列说法正确的有:____ A 、让函数在调用点显得易懂、容易理解 B 、在调用函数填写参数时,应尽量减少没有必要的默认数据类型转换或强制数据类型 转换 C 、 对所调用函数的错误返回码一般可以忽略, 通过输出参数也可以判断执行是否成功; D 、对于提供了返回值的函数,在处理时最好使用其返回值 14、 关于宏的使用,下列说法正确的有:____
•
•
示例 s r c > a k r s d 5 8 5 9 d s t > r s d 则返回 3 s r c > R s t s a w e r s t 3 6 d s d s t > r s t
则返回 8 s r c > d f s g e 则返回 0 d s t >d f s g e s a
C 17、 请指出下面程序的错误:______ void GetMemory(char *ppcChar, int iLength) { if(NULL == ppcChar) { return; } *ppcChar = (char *)malloc(iLength); return; } void Test(void) { char *szStr = NULL; // B
华为JAVA编程规范试题-推荐下载
第 2 页, 共 16 页
2、下面说法或者语句不符合公司编程规范的排版要求的是:
A.逗号、分号只在后面加空格; 比较操作符, 赋值操作符"="、 "+=",算术操
作符"+"、"%",逻辑操作符"&&"、"&",位域操作符"<<"、"^"等双目操作符
的前后加空格; "!"、"~"、"++"、"--"、"&"(地址运算符)等单目操作符
C. if ( writeToFile ) { writeFileThread.interrupt(); }
D. if (a >= b && c > d) { //program code }
E. 在长语句中,如果需要加的空格非常多,那么应该保持整体清晰,而在局 部不加空格。给操作符留空格时不要连续留两个以上空格
文档密级:
JAVA 编程规范试题
一、判断题(每题 2 分,共 28 分)
1、if, for, do, while, case, switch, default 等语句自占一行,且 if, for, do, while, switch, case 等语句的执行语句无论多少都要加括号{}。
2、包的注释内容要求包括:简述本包的作用、详细描述本包的内容、产品模块
性。不再有用的注释不要删除,使用@deprecated 表示此注释无效。
B.避免在注释中使用缩写,特别是不常用缩写;但是,注释也是可使用缩写,
华为编程大赛
华为编程大赛一、单选题(每题1分,共10题)1、下列那种不是任务间通讯的方式____A)信号量B)消息队列C)共享内存D)中断2、以下叙述中不正确的是____A)在不同的函数中可以使用相同名字的变量B)函数中的形式参数是局部变量C)在一个函数内定义的变量只在本函数范围内有效D)在一个函数内的复合语句中定义的变量在本函数范围内有效(复合语句指函数中的成对括号构成的代码)3、若整型变量a的值为50,则c语言表达式a>>2的值为____A)50B) 25C) 12.5D) 124、下面方法中,哪一个不能很好解决死锁问题?____A) 给每一个进程不同的优先级,并按照优先级的大小决定在资源队列中的顺序。
B) 让进程开始运行时获得全部的资源,在不能获得全部资源时重新启动。
C) 给资源编号,并要求进程按照编号的顺序申请资源。
D) 提供超时机制,在进程进入资源等待后一段随机时间内重起进程。
5、下面的程序是对二叉树的前序遍历,请写出下面空格中的语句____其中,Visit函数表示访问节点数据。
void PreOrder(BinaryTreeNode *t){// 对* t进行前序遍历if (t){(_1_);(_2_);(_3_);}}A) PreOrder(t->LeftChild) Visit(t) PreOrder(t->RightChild)B) PreOrder(t->LeftChild) PreOrder(t->RightChild) Visit(t)C) Visit(t) PreOrder(t->RightChild) PreOrder(t->LeftChild)D) Visit(t) PreOrder(t->LeftChild) PreOrder(t->RightChild)6、已知int a[]={10,9,8,7,6}; int *p = a;则(*(p+1))*(p+2)[2]的值是____A)72B)80C)54D)有语法错误7、下面关于new 和delete操作符的说法,哪个是不正确的____A)使用new操作符,可以动态分配全局堆中的内存资源B)若p的类型已由A*强制转换为void *,那么执行语句delete p;时,类A的析构函数不会被调用C)new和delete通常成对地使用D)执行语句A * p=new A[100];时,类A的构造函数只会被调用1次8、如下代码,正确的是____class CExample{public:static void Func( void* pobj );private:char m_cTest;};A) void CExamle::Func( void* pobj ){m_cTest = ( char )0;}B) 在Func内部不能访问类的私有成员m_cTest;C) void CExample::Func( void* pobj ){CExample *pThis;pThis = dynamic_cast< CExample* >( pobj );ASSERT( NULL != pThis );pThis->m_cTest = ( char )0;}D) void CExample::Func( void* pobj ){CExample::m_cTest = ( char )0;}9、对于下面的类CA,在32位计算机、4字节对齐的情况下,sizeof(CA) = ____class CA{public:CA();virtual ~CA();private:int m_iTime;public:int GetTime();int SetTime(int iTime);};A)16B)12C)8D)410、对于下面的代码,描述正确的是____ class A{public:virtual void test(); };class B: public A {public:void test(); ...};class C: public B {public:void test(); ...};A) B类的test函数是虚函数,而C类的也是B) B类的test函数不是虚函数,C类的是C) B类的test函数是虚函数,而C类的不是D) C类的test函数不是虚函数二、多选题(每题2分,共10题,少选可得1分)11、关于变量定义,下列说法正确的有____A)公共变量是增大模块间耦合的原因之一,故应减少没必要的公共变量以降低模块间的耦合度B)命名中若使用特殊约定或缩写,则要有注释说明C)变量名的命名要清晰、明了,有明确含义D)除非必要,不要用数字或较奇怪的字符来定义标识符12、请找出以下程序中的错误,不考虑命名规范和排版的问题____long strlen(char *p ){ASSERT(p);long i = 0;while (*p){i++;p++;}return i;}ShowErrMsg(char *msg){if (msg == NULL) return;char *pBuf = (char *)malloc(256); -------Bif (pBuf == NULL) return;if ( strlen(msg) > 256 ){strncpy(pBuf, msg, 256);pBuf[256] = ‘\0’;}else{strcpy( pBuf, msg); -------C}printf( "No. %d: This message is: %s\n", nCount, pBuf ); nCount++;}13、下列代码中对const关键字的使用是正确并有意义的____ class SomeClass{private:int m_nValue;char* m_pszName;public:SomeClass(int id);int GetValue() const; //---------------- Avoid SetValue(const int value); //------ Bconst char* GetName(); //---------------- Cvoid SetName(const char* pszName); //--- Dvoid DoSomething(char* const p); //------ E}14、多任务系统中,任务所具有的基本状态有____A)就绪B)执行C)阻塞D)挂起15、下列说明哪些是正确的____A)一个类必须至少提供一个构造函数B)缺省构造函数是指不用指定任何实参就能被调用的构造函数,这并不意味着它不能接受实参C)父类的构造函数肯定在子类的构造函数之前被调用D)如果一个类不显式地提供缺省构造函数则编译器会自动生成一个以初始化其数据成员E)子类的析构函数中要调用父类的析构函数以确保父类的成员被释放F)构造和析构函数中不应该调用虚函数16、在一个老版本代码中已经声明了myfunc函数:int myfunc(int a,double b),小李在开发新版本时增加了如下几个函数声明,请问哪些不是对老版本函数的重载声明____A)int myfunc(int c, double d)B)int myfunc(int a,double b=0.5)C)double myfunc(int , double )D)int myfunc(double b,int a)17、类B的析构函数不为virtual,类D是类B的子类,并且是public继承的,B和D都定义了缺省的构造函数,下面正确代码段有____A)B* pb = new B;delete pb;B)D* pd = new D;delete pd;C)B* pb = new D;delete pb;D)D d;B* pb = &d18、假定类CA的声明如下, 下面哪些语句声明了a是CA的对象____class CA{public:CA ();CA (int iValue);... ...};A)CA a;B)CA a();C)CA a(100);D)CA a = 100;19、下面关于指针和引用的说法正确的是____A)指针变量存放的是内存地址,并且可以置为0B)定义引用变量时,必须同时指明具体被引用的对象或变量C)使用取地址操作符,可以取得指针变量自身的地址,但取不到引用变量自身的地址D)类中的数据成员可以是指针变量,但不能是引用变量20、下列代码中正确的有____A)char* p = malloc(100); free(p);B)char* p = malloc(100); delete p;C)char* p = new char[100]; delete p;D)char* p = new char[100]; delete[] p;E)char p[100]; delete[] p;F)char p[100]; delete p[100];三、编程题(共2题,第1题40分,第2题30分。
华为java笔试题目(2)
华为java笔试题目(2)三、判断题1.Java程序中的起始类名称必须与存放该类的文件名相同。
( ) 答案:正确2.Unicode是用16位来表示一个字的。
( ) 答案:正确3.原生类中的数据类型均可任意转换。
( ) 答案:错误1、给定如下JAVA 程序片断: class A{ public A(){ system.out.println(“A”); } } class B extends A{ public B(){System.out.println(“B”);} public static void main(String[] args){ B b=new B();} } 上述程序将( ).(选择一项)A、不能通过编译B、通过编译,输出为: A BC、通过编译,输出为: BD、通过编译,输出为: A2、某一java程序中有如下代码:Datalnputstream din=newDataInputstream(new BufferedInputstream (new FileInputstream(“employee.dat”) )); 假设在employee.dat文件中只有如下一段字符:abcdefg。
则:System.out.println(din)在屏幕上打印().(选择一项)A、AB、BC、97D、983、给定java代码片段,如下:int i=0,j=-1; switch(i){ case 0,1:j=1; case 2:j=2; } System.out.print( j= +j); 编译运行,正确的是()。
(选择一项)A、程序编译出错B、j=1C、j=2D、j=04、在Java中,下面关于构造函数的描述正确的是()。
(选择一项)A、类必须有显式构造函数B、它的返回类型是voidC、它和类有相同的名称,但它不能带任何参数D、以上皆非5、在JAVA编程中,Swing包中的组件处理事件时,下面()是正确的。
华为程序设计竞赛样题
样题1 学生信息管理系统随着社会信息量的与日俱增,学校需要有一个很好的学生成绩管理系统,以方便对学生成绩进行有效的管理。
系统应具有既方便教师对学生成绩的查询和插入,也方便学生对自己的成绩和获得学分进行查询。
1、系统现状目前,我国的大中专院校的学生成绩管理水平普遍不高。
在当今信息时代,传统的管理方法必然要被以计算机为基础的信息管理系统所代替,而且目前很多重点院校都已经有了自己的教务管理系统。
已有的大都比较偏向学生档案管理,学籍管理等,而本系统则重点放在成绩管理上,从整体进行分析设计,这对于其他类似的管理系统的设计有着很高的参考意义。
2、用户需求针对目前各大高校对学生成绩管理方面存在的问题和管理的实际需要,我们将理顺管理体制和建立各种管理规范与开发信息系统地有效结合起来,通过几个功能模块进行统一管理,要求管理系统满足以下几方面的要求。
(1) 从用户角度来看,系统首先应该能够提供便捷与强大的信息查询功能。
对于学校全体教师而言,他们应该能够对系统的不同部分有各自的权限。
例如,任课老师可以录入成绩,但数据一旦保存之后,任课老师不能再具有修改成绩的权限,对于其他教师而言,应该具有查询所有科目及所有学生成绩的权限,等等。
对于学生用户而言,系统应该提供学生能够查询自己的成绩的功能。
从教务管理者角度来看,系统必须能够实现即时查询功能,记录学生的成绩,实现对成绩的各种操作等哦那功能。
(2) 具有较强的灵活性和可扩展性,能够存储一定数量的学生信息,并方便有效地进行相应的数据操作和管理,这主要包括:学生信息的录入、删除及修改,课程信息的录入、删除和修改,班级信息的录入、删除和修改,教师信息的录入、删除和修改,课程表信息的录入、删除和修改,专业信息的录入、删除和修改,各种信息的单条件查询和多条件组合查询,以及学生各科成绩的多关键字检索查询。
(3) 具有较高的安全性,系统登录有各自的安全账户。
系统管理员可添加用户信息,更改用户信息和删除用户信息,同时可以针对其他的信息具有所有的权限;任课老师可以录入信息;学生只能对所有的信息具有查询的功能,不具有修改、删除和录入的权限。
【最新文档】华为杯试题-优秀word范文 (21页)
本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==华为杯试题篇一:华为杯软件编程大赛历年试题(最全整理版)第二届华为杯软件编程大赛初赛试题 (2)201X年华为杯校园编程大赛 (3)201X华为编程大赛初赛成都赛区试题(c语言b卷) (5)201X年华为软件校园招聘编程测验 (7)201X华为编程大赛试题 .................................................................16201X年华为杯校园编程大赛决赛 (18)程序设计大赛报名表 .................................................................. . (20)华为编程规范. ................................................................. . (20)第二届华为杯软件编程大赛初赛试题考试要求:1、根据给定需求,在规定时间内(3个小时)完成试卷。
2、提供统一的工程供编程及测试:开发调试环境:Visual C++ 6.0运行平台:Windows3、编程语言:C/C++4、工程文件已经为考生准备好,所有文件,函数命名等,必须按照本要求提供,否则软件无法自动阅卷,将记录为0分。
5、闭卷考试,考试期间,不得翻阅书籍。
参加考试的人员须单独完成,不允许互相讨论交流,更不允许互相拷贝,不得进行其他任何违反公平公正原则的活动。
6.开考试根据公示的服务器地址,下载试题(web页面)7.考试结束时按照要求打包,点击提交按钮提交客观题答案和编程题答案。
考试标准1、程序生成test.exe文件,且可正常运行。
2、采用自动测试用来进行评分,测试用例由主考官掌握,不对考生公开:出现严重问题(死循环、异常中止)则中止后续用例执行;考试程序的工程说明1、试题工程。
华为挑战杯编程大赛试题
2011 编程题(共1题,100分。
请上机编写程序,按题目要求提交文件。
测试用例不对考生公开,凡不满足提交要求导致不能运行或用例不通过,不予评分。
)1.跳棋快跑跳棋是一种可以由二至六人同时进行的棋,棋盘为六角星型,棋子分为六种颜色,每种颜色10或15枚棋子,每一位玩家占一个角,拥有一种颜色的棋子。
跳棋是一项老少皆宜、流传广泛的益智型棋类游戏。
跳棋的游戏规则很简单,谁最先把正对面的阵地全部占领,谁就取得胜利。
本试题是在跳棋棋盘上,采用部分棋子完成一组简单的功能,在上图所示121格的六角星型棋盘上,给定跳棋棋子的初始布局和结束布局,按照下面描述的规则将棋子从初始布局移动到结束布局。
●棋盘采用如下坐标标识棋盘格子:按照上图所示的六角星棋盘标识位置,从上到下,从左到右,从1开始,依次进行编号,直到最下方的格子标识为121。
●采用的跳棋规则为:1、棋子可以一步步在有直线连接的相邻六个方向推进;2、“相邻跳”:如果相邻位置上有棋子,该位置直线方向下一个位置是空的,则可以直接跳到该空位上,跳的过程中,只要相同条件满足就可以连续进行。
3、“等距跳”:如果在和同一直线上的任意一个空位A所构成的线段中,只有一个位置有棋子,并且该棋子位于该线段中心位置,则可以直接跳到空位A上,跳的过程中,只要相同条件满足就可以连续进行。
●初始布局和结束布局由输入文件给定,程序输出棋子移动的步骤和总的步数到输出文件,输入输出文件都存放于可执行文件所在目录。
输入文件名为testin_x.txt(x为数字),格式如下,“I”标识初始布局,“1 2 3”标识初始布局包括3颗棋子,位于棋盘的第1,2,3个格子上。
“O”标识结束布局,“7 8 9”标识结束布局时3颗棋子位于棋盘的第7,8,9个格子上。
I1 2 3O7 8 9输出文件名为testout_x.txt(x与输入文件名中数字相同),格式如下,其中每一行标识一步,记录下从哪一格出发,跳过哪些中间棋子后,到达哪个结束格。
华为JAVA编程规范试题
JAVA编程规范试题一、判断题(每题2分,共28分)1、if, for, do, while, case, switch, default 等语句自占一行,且if, for,do, while, switch, case等语句的执行语句无论多少都要加括号{}。
2、包的注释内容要求包括:简述本包的作用、详细描述本包的内容、产品模块名称和版本、公司版权、生成日期等。
3、类注释部分,描述部分说明该类或者接口的功能、作用、使用方法和注意事项,每次修改后增加作者、新版本号和当天的日期,@since 表示从那个版本开始就有这个类或者接口,@deprecated 表示不建议使用该类或者接口。
4、对于方法内部用throw语句抛出的异常,必须在方法的注释中标明;对于所调用的其他方法所抛出的异常,在注释中要求说明所有的异常;对于非RuntimeException,即throws子句声明会抛出的异常,必须在方法的注释中标明。
5、类名和接口使用完整的英文单词描述,每个英文单词的首字母使用大写、其余字母使用小写的大小写混合法。
6、com.huawei.四级部门名称.项目名称,符合包命名规范。
7、不能用异常来做一般流程处理的方式,不要过多地使用异常,异常的处理效率比条件分支低,而且异常的跳转流程难以预测。
8、划分类的时候,应该尽量把逻辑处理、数据和显示分离,实现类功能的多样化。
9、一个方法不应抛出太多类型的异常,如果程序中需要分类处理异常,则将异常根据分类组织成继承关系。
10、switch 语句中的 case 关键字要和后面的常量保持一个空格;如果有特殊的需要要在switch语句中定义case以外的标签,需要在注释中说明。
11、没有被覆盖的友好方法和没有子类的友好类应该定义成final。
12、简单的类可以通过名字比较两个对象的类,推荐使用 getClass()或者instanceof()。
13、不要调用 Thread 类的 resume(), suspend(),sleep(), stop() 方法。
华为编程大赛摸底试题
1.#include<iostream>#pragma pack(4) //四字节对齐#define MAX_SIZE 2+3using namespace std;struct _Record_Struct{unsigned char Env_Alarm_ID:4;unsigned char Para1:2;unsigned char state;unsigned char avail:1;} *Env_Alarm_Record;int main(){struct _Record_Struct *pointer;pointer=(struct _Record_Struct *) malloc (sizeof(struct _Record_Struct)*2+3);cout<<sizeof(pointer)<<endl;cout<<sizeof(struct _Record_Struct)*2+3<<endl;}运行结果如下:492.#include<iostream>using namespace std;#pragma pack(4)#define UHORT unsigned shorttypedef union unRec{unsigned long ullndex;unsigned short usLevel[7];unsigned char ucPos;} REC_S;REC_S stMax,*pstMax;UHORT *pucCharArray[10][10];int main(){cout<<sizeof(pucCharArray)<<endl;cout<<sizeof(stMax)<<endl;cout<<sizeof(pstMax)<<endl;cout<<sizeof(*pstMax)<<endl;return 0;}程序运行结果如下:400164163.#include<iostream>#include<cstring>using namespace std;//#pragma pack(4)int main(){char *pcColor="CSOFTX3000";char acColor[]="CSOFTX3000";cout<<strlen(pcColor)<<endl;cout<<strlen(acColor)<<endl;cout<<sizeof(pcColor)<<endl;cout<<sizeof(acColor)<<endl;return 0;}程序运行结果如下所示:10104114.#include<iostream>#include<string>using namespace std;#define CHAR char#define ULONG unsigned long#define VOID voidCHAR *VOS_strncpy(CHAR *pcDest,const CHAR *szSrc,ULONG ulLength) {CHAR *pcPoint=pcDest;if((NULL==szSrc) || (NULL==pcDest)){return NULL;}while(ulLength && (*pcPoint=*szSrc)){pcPoint++;szSrc++;ulLength--;}if(!ulLength){*pcPoint='\0';}return pcDest;}VOID main(){CHAR szStrBuf[]="1234567890";CHAR szStrBuf1[]="1234567890";strncpy(szStrBuf,"ABC",strlen("ABC"));VOS_strncpy(szStrBuf1,"ABC",strlen("ABC"));cout<<szStrBuf<<endl;cout<<szStrBuf1<<endl;}程序运行结果如下所示:ABC4567890ABC5.#include<iostream>using namespace std;#pragma pack(4)#define UCHAR unsigned charstruct tagAAA{UCHAR ucld:1;UCHAR ucPara0:2;UCHAR ucState:6;UCHAR ucTail:4;UCHAR ucA vail;UCHAR ucTail2:4;unsigned long ulData;}AAA_S;int main(){cout<<sizeof(AAA_S)<<endl;return 0;}程序运行结果如下所示:126.#include<stdio.h>//#include<iostream>//using namespace std;struct BBB{long lA1;char cA2;char cA3;long lA4;long lA5;}*p;int main(){printf("%d\n",sizeof(BBB));p=(BBB *)0x100000;printf("0x%x\n",p+0x1);printf("0x%x\n",(unsigned long)p+0x1);printf("0x%x\n",(unsigned long*)p+0x1);printf("0x%x\n",(char *)p+0x1);return 0;}程序运行结果如下所示:0x1000100x1000010x1000040x1000017.#include<iostream>using namespace std;#pragma pack(4)union tagAAAA{struct{char ucFirst;short usSecong;char ucThird;}half;short ll;}number;struct tagBBBBB{char ucFirst;short usSecond;char ucThird;short usForth;}half;struct tagCCCC{struct{char ucFirst;short usSecond;char ucThird;}half;long ll;};int main(){cout<<sizeof(union tagAAAA)<<endl;cout<<sizeof(struct tagBBBBB)<<endl;cout<<sizeof(struct tagCCCC)<<endl;return 0;}程序运行结果如下所示:68128.#include<stdio.h>#include<string.h>#pragma pack(4)#define UCHAR unsigned charint main(int argc,char *argv[])//标准写法{UCHAR puc[4];struct tagPIM{UCHAR ucPim1;UCHAR ucData0:1;UCHAR ucData1:2;UCHAR ucData2:3;}*pstPimData;pstPimData=(struct tagPIM *)puc;memset(puc,0,4); //从数组首地址将连续的4个数据置为0pstPimData->ucPim1=2;pstPimData->ucData0=3;pstPimData->ucData1=4;pstPimData->ucData2=5;printf("%02x %02x %02x %02x\n",puc[0],puc[1],puc[2],puc[3]);return 0;}程序运行结果如下所示:0229 00 009.#include<iostream.h>#include<string.h>#include<assert.h>#include<stdlib.h>#define BUFFER_SIZE 256void GetMemory(char **ppszBuf){if(NULL == ppszBuf){assert(0);return;}*ppszBuf=(char *)malloc(BUFFER_SIZE);return;}void Test(){char *pszBuf=NULL;GetMemory(&pszBuf);strcpy(pszBuf,"hello world\r\n");cout<<pszBuf<<endl;free(pszBuf);return;}void main(){}10.#include<iostream>using namespace std;unsigned long FUNC_B(unsigned long ulCount) {unsigned long ulSum=0;while( 0 < ulCount){ulSum += ulCount;ulCount--;}cout<<ulSum<<endl;return ulSum;}int main(){unsigned long m=12;unsigned long n=20;cout<<(m>n)<<endl;cout<<FUNC_B(m)<<endl;return 0;}11.#include<iostream>using namespace std;char * GetStr(char * (&p)){p="hello world";return p;}int main(){char *str=NULL;if(NULL != GetStr(str)){cout<<str<<endl;}return 0;}12.#include<iostream>using namespace std;void Varlnit(unsigned long *pucArg){*pucArg=1;}void Test(){unsigned long ulGlobal;Varlnit(&ulGlobal);cout<<ulGlobal<<endl;}int main(){Test();return 0;}/*void Varlnit(unsigned char *pucArg){*(unsigned long *)pucArg=1;}void Test(){unsigned long ulGlobal;Varlnit((unsigned char *)&ulGlobal);cout<<ulGlobal<<endl;}int main(){Test();return 0;}*/13.#include<iostream>using namespace std;void AddFunc(unsigned int a,unsigned int b,unsigned int *c){*c=a+b;}int main(){int a=11;cout<<dec<<a<<endl;unsigned char e=200;unsigned char f=100;unsigned char g=0;AddFunc((unsigned int) e,(unsigned int) f,(unsigned int *) &g);cout<<int(g)<<endl;return 0;}14.#include<iostream>using namespace std;#include<cstring>#define ID_LEN 32struct STR_A{char aucID[ID_LEN];int iA;};struct STR_B{char *paucID;int iB;};void funcA(struct STR_A stA,struct STR_B *pstB){pstB->paucID=stA.aucID;}int main(){STR_A stA={0};STR_B stB;strcpy(stA.aucID,"12345");funcA(stA,&stB);//cout<<stB.paucID<<endl;printf("%s\n",stB.paucID);return 0;}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
客观题部分,共30分,建议这部分答题用40分钟。
一、单选题(每题1分,共10题)1、以下叙述中不正确的是______。
A) 在不同的函数中可以使用相同名字的变量B) 函数中的形式参数是局部变量C) 在一个函数内定义的变量只在本函数范围内有效D).在一个函数内的复合语句中定义的变量在本函数范围内有效(复合语句指函数中的成对括号构成的代码)2、下列全局变量定义中,正确的是:______。
A) char abc [] [];B) char abc [] [NUM];C) char abc [NUM] [];D) char abc [0];3、关于断言,错误的说法是:______。
A) 我们可以使用断言来发现软件问题。
B) 在正式发布的软件版本中也要保留断言,以便于定位问题。
C) 断言不能用于对外部输入数据的判断,只能用于程序内部逻辑的判断。
D) 不能用断言来代替错误处理。
4、关于函数参数,正确的说法是______。
A) 防止将函数的参数作为工作变量。
B) 应该为函数功能的扩展预留尽可能多的参数接口。
C) 通常函数内部会对函数参数进行合法性检查,为了提高效率,函数调用者不需要再次进行参数合法性检查。
D) 不要输入指针变量。
5、关于函数实现,下面不正确的说法是______。
A) 为简单功能编写函数。
B) 函数的功能应该是可以预测的,也就是只要输入数据相同就应产生同样的输出。
C) 防止把没有关联的语句放到一个函数中。
D) 为了增强函数的可用性,应尽量设计多用途面面俱到的函数。
6、关于函数,不正确的说法是______。
A) 如果多段代码重复做同一件事情,那么在函数的划分上可能存在问题。
B) 功能不明确较小的函数,特别是仅有一个上级函数调用它时,应考虑把它合并到上级函数中,而不必单独存在。
C) 对所调用函数的错误返回码可以根据需要决定是否处理。
D) 对于提供了返回值的函数,在引用时最好使用其返回值。
7、编程中下面说法错误的是______。
A) 编程时,要防止差1错误。
如:把“<=”误写成“<”或“>=”误写成“>”。
B) 系统运行之初,要初始化有关变量及运行环境,防止未经初始化的变量被引用,但可以使用操作系统的默认初始化值。
C) 有可能的话,if语句尽量加上else分支,对没有else分支的语句要小心对待;switch语句必须有default分支。
D) 要时刻注意易混淆的操作符,如C/C++中的“=”与“==”、“|”与“||”、“&”与“&&”等。
当编完程序后,应从头至尾检查一遍这些操作符,以防止拼写错误。
8、如果有下列定义:char acX[ ]= "abcdefg";char acY[ ]= {'a','b','c','d','e','f','g'};下面四个说法中正确的是:______。
A) 数组acX和数组acY等价B) 数组acX和数组acY的长度相同C) 数组acX的长度大于数组acY的长度D) 数组acX的长度小于数组Y的长度9、假设执行语句S 的时间为O(1) ,则执行下列程序短的时间为______。
(乘法表的计算可以采用这种模式)for(i=1;i<=n;i++) {for(j=i;j<=n;j++) {S;}}A) O(n)B) O(n2)C) O(n*i)D) O(n+1)10、设有98 个已排序列元素,采用二分法查找时,最大比较次数是______。
A) 49B) 15C) 20D) 7二、多选题(每题2分,共10题,少选可以得1分)11、关于全局变量的注释,哪些描述是正确的?______。
A) 全局变量要有较详细的注释B) 注释包括功能、取值范围等C) 如果全局变量的命名是充分自注释的,则可以不加注释D) 注释可以包括使用方法12、关于变量,正确的说法是:______。
A) 在对变量声明的同时,应对其含义、作用及取值范围进行注释说明,同时若有必要还应说明与其它变量的关系;B) 对公共变量赋值时,若有必要应进行合法性检查,以提高代码的可靠性、稳定性;C) 构造仅有一个函数可以修改,而其余函数只读的全局变量,可防止函数的不可重入性;D) 不同的编译器对变量的默认初始化是不同的。
为了避免不同编译器引起的差别,对变量,尤其是指针变量,强烈推荐在使用前将其初始化。
13、下面关于资源分配的说法正确的是:______。
A) 只引用属于自己的存贮空间。
B) 防止引用已经释放的内存空间。
C) 过程/函数中分配的内存,在过程/函数退出之前要释放。
D) 过程/函数中申请的(为打开文件而使用的)文件句柄,在过程/函数退出之前要关闭。
14、如果不使用常量,直接在程序中填写数字或字符串,将会有什么麻烦?______。
A) 程序的可读性(可理解性)变差。
程序员自己会忘记那些数字或字符串是什么意思,用户则更加不知它们从何处来、表示什么。
B) 如果要修改数字或字符串,则会在很多地方改动,既麻烦又容易出错。
C) 在程序的很多地方输入同样的数字或字符串,难保不发生书写错误。
D) 程序无法编译。
15、关于宏define SQUARE(a)((a)*(a))正确的用法是______。
A) b = SQUARE( a++ );B) b = SQUARE( a ) ; a++ ;C) b = SQUARE( a --) ; a-- ;D) b = SQUARE( a) ; a-- ;16、以下对结构(struct)和联合(union)的说法正确的有:______。
A) 结构和联合都是由多个不同的数据类型成员组成;B) 在任何同一时刻, 联合中只存放了一个被选中的成员;C) 在任何同一时刻,都可以访问结构和联合的所有成员;D) 对于结构和联合的不同成员赋值是互不影响的。
17、关于编译预处理程序的功能包括但不限于:______。
A) 宏定义;B) 条件编译;C) 在源代码中插入预定义的环境变量;D) 打开或关闭某个编译选项。
18、下列extern "C" 的用法,哪些是正确的:______。
A) 在C++中引用C语言中的函数和变量;B) 引用其它文件定义的函数和变量;C) C++实现的DLL,导出动态连接符号给C语言代码使用;(直接使用extern即可)D) 引用其它C程序定义的函数和变量。
19、下面哪些是sprintf函数正常使用出现情况:______。
A) 输出缓冲区太短,出现溢出;B) 参数多于格式符的数目;C) 多线程同时用不同缓冲区调用sprintf;D) %s格式符对应了空指针。
20、关于关于数组和指针描述正确的是:______。
A) 数组可以在静态存储去或者栈上创建;B) 指针可以随意指向任意类型的内存单元;C) 用sizeof运算符可以计算出数组的容量(字节数),而不能用sizeof()计算出指针p所指向的内存容量;D) 当指针p指向常量字符串时,也可以向字符串数组那样修改其中的某个字符。
三、编程题(共2题,第1题40分,第2题30分。
请上机编写程序,按题目要求提交文件。
本试题采用自动测试用例进行评分,测试用例不对考生公开,凡不满足提交要求导致不能编译或用例不通过,不予评分;)。
1.电路板布线问题•问题描述:o对于一个有N个引脚的电路板,我们需要在这些引脚之间连线。
现在对于给定的连接引脚的方法,需要程序判断,这组方法是否会产生线段之间的交叉。
•输入:o N 电路板的引脚数量; (1,2), (3,4) , ...... 连线的方式。
(1,2)表示1、2号引脚存在连线。
o•要求实现函数:unsigned int Lay_line(int n, unsigned int *p)不产生交叉返回0 ;产生交叉返回 1输入参数:n:电路板引脚个数;p:指向一个数组(长度固定为64),表示电路板引脚连接方式;输入:1 4 2 3 0 (0表示布线结束)表示该连接方案有两个连接1号 4号管脚连接 2号3号管角连接•示例o N = 4; (a1,a4), (a2,a3) 程序输出"0"N = 4; (a3,a1), (a4,a2) 程序输出"1"N = 4; (a2,a1), (a2,a3) 程序输出"0"注:没有布线(输入数据为0) 意味着没有连线可认为没有交叉2. 括号匹配判断(用栈实现)•问题描述:o检查字符串表达式中的括号是否匹配;o左括号数目同有括号数目不相等即为不匹配;o去除多余的左括号或者右括号,优先保留先出现的括号;o匹配后去除无效的括号:如:((表达式)) 应为(表达式);o只考虑小括号,不考虑先出现右括号的情况;•要求实现函数: (字符串最长长度为60;表达式正确性不需要考虑) void Bracket(char* src, char* dst);如果匹配则通过dst输出原串;如果不匹配则根据要求去处多于括号后通过dst输出匹配后的串•示例输入:12+(345*25-34) 输出:12+(345*25-34)输入:12+(345*(25-34) 输出: 12+(345*25-34)输入:(12+345)*25)-34 输出: (12+345)*25-34输入:(543+(256-43)*203))+24输出:(543+(256-43)*203)+24输入:((1+2)*((34-2))+((2*8-1)输出:((1+2)*(34-2)+2*8-1)。