C语言编程基础知识测试题:选择题、是或否、真或假、阅读代码
Part1: 选择题
- 以下哪种声明是不允许的? ( ) A. uint8 u8Counter; B. int8 i8Index; C. typedef uint8 MOD_tu8ExampleType; D. unsigned int u32PulseCounter;
答案:D
- 根据每个模块的描述,哪个是正确的? ( ) A.C1.H 包含模块的公共接口 B.CE.H 包含公共配置所需的所有信息 C.CT.H 包含其他模块可以使用的所有 API 类型 D.CA.H 包含容器和函数调用表的原型和实现,可以由用户进行配置 E:CI.H 配置模块本身并将其适应于外部模块
答案:A
- 以下哪种是模块前缀的合理定义? ( )
A. typedef struct EEPX_test{
uint8 EEPX_ui8Data;
uint32 ui32Data;
} B. enum test{ EEPX_ui8Data=0; EEPX_ui32Data; } C. union test { uint8 EEPX_ui8Data; uint32 EEPX_ui32Data;
} D. 以上都是
答案:D
- 在文件局部区域中定义标识符为u8Byte。 ( ) B.u8Byte C.SWOD_Byte A.SWOD_u8Byte D.SWOD__u8Byte
答案:A
- 根据API文件“导出接口”的格式,以默认值命名,哪种定义是正确的? ( ) A.SWMOD1C1.H B.SWMOD1C.H C.SWMODC1.H D.SWMODC.H
答案:C
- 以下哪种注释不符合C编程规则。 ( ) A. /* Number of pulses equal to 10meter*/ B. /*Velocity CAN input Error /0x1FFF/ / C. / * PT1 damping fall factor */ D. 以上都不是
答案:B
- 模块SWMOD的哪些文件不在inc中? ( ) A. #include SWMODXCA.H B. #include SWMODXCE.H C. #include SWMODXCn.C D. #include SWMODXC1.H
答案:C
- 以下使用不同数据类型定义函数局部变量的声明哪个是不正确的? ( ) A.uint32 SMOD__ui32Result B.bit8 SMOD__bi8Result C.typedef uint8 SMOD_tu8Example D.enum SMOD__enResult
答案:B
- 以下哪种名称定义是正确的? ( )
A.Getvalue
B.GetValue
C.Get_Value
D.GetValue11
答案:B
- 以下关于访问结构和数组元素的说法是正确的? ( ) A. 不允许访问数组越界 B. 数组元素必须始终由数组[index]寻址。 C. 不要为未知大小的数组使用typedef D. “结构体”或“联合体”中的成员数不能超过127个
答案:B
Part2: 是或否题
- switch (bState)
{
case 1 : func1(); break;
case 2 : func2(); break;
default : func4(); break;
case 3 : func3(); break;
} 这个switch语句是正确的吗? ( )
答案:否
Part3: 真或假题
- 下面的代码定义了一个名为CAN_tstBasicCan的结构体,包括后缀变量名为uint8 Data和uint32 Data。
/*code
typedef struct {
uint8 bi8LowFuelWrnData_Flg;
BOOL boWarningon_flg;
BOOL TNC_boDiagMode_Stat;
} CAN_tstBasicCan; 这是真的还是假的? ( )
答案:假的
- 数据类型的分配标识符通常由'typedef'定义为't',因此,typedef enum SMOD__enResult的定义是真还是假? ( )
答案:假的
- 结构体可以方便配置,定义清晰的职责并减少编译和链接时间。 ( )
答案:真的
Part4: 阅读C代码
- 编程运行时输出什么?
文件a.h: ... #define MACRO ... 文件b.h ... #ifdef MACRO #undef MACRO #endif ... 文件c.h #include "a.h" #include "b.h" #ifdef MACRO ... #else #error "error: MACRO is not defined" #endif
答案:MACRO没有定义的错误消息将被输出。
- 以上C编程中哪句话是错误的?
char EXMPL_sSomeBuffer= EXMPL_sInitBuffer(); struct SomeT EXMPL_xCountry= { /Name/ "germany", /Code/ "D" }; ... char* sFirstSub; char* sSecondSub; ... sFirstSub= EXMPL_sSomeBuffer; sSecondSub= EXMPL_sSomeBuffer+ EXMPL_i8BufferLength; while(sFirstSub <= sSecondSub) /* ok */ { ... sFirstSub++; sSecondSub--; } ... sSecondSub= EXMPL_xCountry.cCode; ... if(sFirstSub <=sSecondSub) ...
答案:第一句话是错误的,因为它试图将一个函数赋给一个字符变量。
原文地址: https://www.cveoy.top/t/topic/oMW0 著作权归作者所有。请勿转载和采集!