C语言编程规范试题
C语言编程规范试题
[说明]:
1、本试题中不考虑头文件引用问题(假定已经包含正确的头文件),C语言的标准函数都可用;
2、如果不特别说明,假定程序运行环境为:操作系统Windows 2000, VC6.0编译环境,缺省为四字节对齐,X86(80586)CPU处理器(32位小字节序处理器);
3、试卷需要回收再利用,请在答题纸上答题;
4、本试题满分为100分,答题时间为90分钟。
一.单选题(每小题3分,共20小题60分)
( )1.1 程序块要采用缩进风格编写,缩进的空格数为几个?
A. 2 B. 4 C. 6 D. 8
( )1.2 如下代码正确符合规范的是?
A.
MMI_BOOL bSim1Valid;
bSim1Valid = srv_sim_ctrl_is_available(mmi_sim_enum sim);
if (bSim1Valid)
{
… // program code
}
sim_cntx = srv_sim_ctrl_get_sim_cntx(sim);
app_strlcpy(out_imsi_buffer, sim_cntx->imsi, buffer_size);
B.
rect.length = 0; rect.width = 0;
C.
if (pUserCR == NULL) return;
D.
for (...)
{
... // program code
}
if (...)
{
... // program code
}
void example_fun( void )
{
... // program code
}
( )1.3 新增代码时添加注释的Qicker快捷命令是?
A. abg B. mbg C. dbg D. mbe
( )1.4 一般情况下,源程序有效注释量必须在多少比例以上?
A. 40% B. 30% C. 20% D. 10%
( )1.5 新增函数时添加函数头部注释的Qicker快捷命令是?
A. file B. func C. fi D. hi
( )1.6 下列国内软件编译开关命名正确的是?
A. __AHONG_ONEKEY_SAVING_MODE__
B. __AHONG_CALL_SAVING_WAY__
C. __AHONG_MMI_NORMAL_UI_176X220__
D. __MMI_AHONG_IP_NUMBER__
( )1.7 如下代码中命名正确符合规范的是?
A. void set_udt_msg_sls( BYTE sls );
B. #define _EXAMPLE_0_TEST_
C. Add_User
D. void set_sls00( BYTE sls );
( )1.8 比较如下两段代码:
Typedef struct EXAMPLE_STRU { unsigned int valid: 1; PERSON person; unsigned int set_flg: 1; } EXAMPLE; |
typedef struct EXAMPLE_STRU { unsigned int valid: 1; unsigned int set_flg: 1; PERSON person ; } EXAMPLE; |
左右两边定义的结构所占用的内存空间相差几个字节?
A. 0 B. 1 C. 2 D. 4
( )1.9 如下哪个方法是用来保护可重入函数的全局变量的?
A. 开中断 B. 信号量 C. 管道 D. 消息队列
( )1.10 下面关于函数的描述不正确的是?
A. 一个函数仅完成一件功能。
B. 为简单功能编写函数。
C. 函数的规模尽量限制在300行以内。
D. 不要设计多用途面面俱到的函数。
( )1.11 设计函数时,函数的合理扇出应该是?
A. 小于7 B. 小于8 C. 小于9 D. 小于10
( )1.12 优化函数结构时,下面描述的原则哪个是不正确的?
A. 不能影响模块功能的实现。
B. 仔细考查模块或函数出错处理及模块的性能要求并进行完善。
C. 通过分解或合并函数来改进软件结构。
D. 提高函数间接口的复杂度。
( )1.13 正式的软件产品中应该把断言及其他调测开关关掉是为了?
A. 防止无法重启系统 B. 减少程序代码空间
C. 提高系统的稳定性 D. 加快软件运行速度
( )1.14 如下关于效率的描述不正确的是?
A. 不应花过多的时间拼命地提高调用不很频繁的函数代码效率。
B. 尽量减少循环嵌套层次
C. 要追求紧凑的代码
D. 尽量用乘法或其它方法代替除法,特别是浮点运算中的除法
( )1.15 有如下程序代码:
#define OK 0
#define ERR 1
#define ERROR (-1)
#define BUFFER_SIZE 256
char *GetMemory(unsigned long ulSize)
{
char *pcBuf = NULL;
pcBuf = (char *)malloc(ulSize);
if(NULL == pcBuf)
{
return ERROR;
}
return pcBuf;
}
void Test(void)
{
char *pszBuf = NULL;
pszBuf = GetMemory(BUFFER_SIZE);
if(NULL != pszBuf)
{
strcpy(pszBuf, "Hello World!\r\n");
printf(pszBuf);
free(pszBuf);
}
return;
}
如下描述正确的是:
A、pszBuf指向的内存不能超过255
B、GetMemory函数的异常分支返回了-1,是一个非法地址
C、GetMemory中异常分支没有释放空间
D、pcBuf为局部指针,指向的内存将在GetMemory被调用后释放
( )1.16 如下关于测试维护的描述正确的是?
A. 可以通过“试”来解决问题
B. 清理、整理或优化后的代码只要经过测试即可
C. 通过手工备份的方式实现对代码版本进行维护
D. 代码版本升级要经过严格测试
( )1.17 如下宏定义不存在风险的是?
A. #define RECTANGLE_AREA( a, b ) ((a) * (b))
B. #define RECTANGLE_AREA( a, b ) (a) * (b)
C. #define RECTANGLE_AREA( a, b ) (a * b)
D. #define RECTANGLE_AREA( a, b ) a * b
( )1.18 如下代码:
#define SQUARE( a ) ((a) * (a))
int a = 5;
int b;
b = SQUARE( a++ );
执行完之后a和b的值是多少?
A. a = 6 b = 25 B. a = 7 b = 25
C. a = 7 b = 30 D. a = 7 b = 36
( )1.19 有如下代码:
#define SQUARE( a ) ((a) * (a))
int a = 5;
int b;
使用宏的方法正确符合规范的是?
A.
b = SQUARE( a++ );
B.
b = SQUARE( ++a );
C.
b = SQUARE( a );
a++;
D.
b = SQUARE( (a)++ );
( )1.20 有下列程序代码:
#include <stdio.h>
void main()
{
union
{
int k;
char i[2];
}*s,a;
s = &a;
s->i[0] = 0x19;
s->i[1] = 0x18;
printf("%x\n", a.k);
}
输出结果是?
A. 不可预知
B. 1819
C. 1918
D. 180019
二.填空题(每空1分,共20空20分)
2.1 通常在设计函数的时候,函数之间要低______,函数内部要高______,函数之间调用关系要____扇入、______扇出。
2.2 为了提高代码的效率,通常要求循环体内工作量______,把多重循环中最忙的循环放在______。
2.3 代码质量保证优先原则中,最优先保证______,然后依次是稳定性、安全性、______、规范/可读性、全局效率、局部效率、个人方便性。
2.4 代码走读主要是对程序的编程风格如注释、命名等以及编程时易出错的内容进行检查,可由开发人员自己或开发人员 的方式进行;代码审查主要是对程序实现的功能及程序的稳定性、安全性、可靠性等进行检查及评审,可通过自审、 或 等方式进行。
2.5同产品软件(项目组)内,最好使用相同的编辑器,并使用相同的 。
2.6资源文件(多语言版本支持),如果资源是对语言敏感的,应让该资源与源代码文件 ,具体方法有下面几种: 、 或其它单独的描述文件(如数据库格式)。
2.7对较关键的算法最好使用 来确认。
2.8局部效率应为 服务,不能因为提高局部效率而对 造成影响。
2.9在同一项目组或产品组内,要有一套统一的为集成测试与系统联调准备的 及相应打印函数,并且要有详细的说明。
2.10检查函数所有参数输入的有效性,同时还要检查函数所有非参数输入的有效性,如数据文件、 等。
三.编程题(每小题20分,共1小题20分)
3.1 编写函数实现:将整型数变成字符串,如3489变成"3489"。要求不可以使用任何C库函数。函数原型声明如下:
char *intTostring(int num, char *result);
C语言编程规范试题的更多相关文章
- C语言编程规范试题(标准答案)
C语言编程规范试题(标准答案) 一.单选题(每小题3分,共20小题60分) 1.1-1.5 B D A C B 1.6-1.10 C A D B C 1.11 ...
- 华为C语言编程规范
DKBA华为技术有限公司内部技术规范DKBA 2826-2011.5C语言编程规范2011年5月9日发布 2011年5月9日实施华为技术有限公司Huawei Technologies Co., Ltd ...
- linux shell语言编程规范安全篇之通用原则【转】
shell语言编程规范安全篇是针对bash语言编程中的数据校验.加密与解密.脚本执行.目录&文件操作等方面,描述可能导致安全漏洞或风险的常见编码错误.该规范基于业界最佳实践,并总结了公司内部的 ...
- C语言编程规范
C语言编程规范 6 函数与过程 6.1 函数的功能与规模设计 函数应当短而精美,而且只做一件事.不要设计多用途面面俱到的函数,多功能集于一身的函数,很可能使函数的理解.测试.维护等变得困难. 6.2 ...
- Uber Go 语言编程规范
目录 Uber Go 语言编程规范 1. 介绍 2. 编程指南 3. 性能相关 4. 编程风格 5. 编程模式(Patterns) 6. 总结 Uber Go 语言编程规范 相信很多人前两天都看到 U ...
- C++语言编程规范
前言 这里参考了<高质量C++C 编程指南 林锐>.<google C++编程指南>以及<华为C++语言编程规范>编写了这份C++语言编程规范文档,以合理使用 C+ ...
- Golang语言编程规范
Golang语言编程规范 一.说明 编程规范好,可避免语言陷阱,可有利团队协作,有利项目维护. 正常的Go编程规范有两种:编译器强制的(必须的),gofmt格式化非强制的(非必须). Go宣告支持驼峰 ...
- 单片机C语言编程规范
一.基本要求 1.1 程序结构清析,简单易懂,单个函数的程序行数不得超过100行. 1.2 打算干什么,要简单,直接了当,代码精简,避免垃圾程序. 1.3 尽量使用标准库函数和公共函数. 1.4 不要 ...
- C语言编程规范—命名规则
C是一门朴素的语言,你使用的命名也应该这样.与Modula-2和Pascal程序员不同,C程序员不使用诸如“ThisVariableIsATemporaryCounter”这样“聪明”的名字.C程序员 ...
随机推荐
- 在Ubuntu中设置DNS域名服务器
在Ubuntu中设置DNS域名服务器主要有四种方法: 一.设置全局静态DNS $ sudo vi /etc/resolvconf/resolv.conf.d/base(这个文件默认是空的),插入: n ...
- Cmake编译protobuf
编译指令,在powershell中执行 : .\protoc.exe .\ive.proto --cpp_out . .\protoc.exe .\ive.proto --csha ...
- DHTML_____document对象的方法
<html> <head> <meta charset="utf-8"> <title>document对象的方法</titl ...
- EntityFramework(转自wiki)
维基百科 Entity Framework (又称ADO.NET Entity Framework) 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping)解决方案,早期 ...
- 373 Find K Pairs with Smallest Sums 查找和最小的K对数字
给定两个以升序排列的整形数组 nums1 和 nums2, 以及一个整数 k.定义一对值 (u,v),其中第一个元素来自 nums1,第二个元素来自 nums2.找到和最小的 k 对数字 (u1,v1 ...
- Git学习笔记(2)-创建仓库
一.Git简介 1.Git是什么 Git是分布式版本控制系统 2.Git有什么特点 (1)Git是分布式的SCM,SVN是集中式的 (2)Git每个历史版本存储完整的文件,SVN存储文件差异 (3)G ...
- 【C++】智能指针简述(三):scoped_ptr
在介绍scoped_ptr之前,我们先回顾一下前两篇文章的内容. 首先,智能指针采用RAII机制,通过对象来管理指针,构造对象时,完成资源的初始化;析构对象时,对资源进行清理及汕尾. auto_ptr ...
- MySQL——基本安装与使用
基本安装 下载地址:https://dev.mysql.com/downloads/mysql/ 选择解压版本:mysql-5.7.21-winx64.zip 以管理员身份打开cmd(除了安装服务不要 ...
- VMware vCenter 6.5 安装及群集配置介绍
一.介绍 VMware vCenter Server 提供了一个可伸缩.可扩展的平台,为虚拟化管理奠定了基础.可集中管理VMware vSphere环境,与其他管理平台相比,极大地提高了 IT 管理员 ...
- Analysis of container and Injection in Java, their history and future.
Container: 发展历程: 2000 年的时候 FreeBSD 开发了一个类似于 chroot 的容器技术 Jails,这是最早期,也是功能最多的容器技术.Jails 英译过来是监狱的意思,这个 ...