文档名称 文档密级
void incre() {
static int x = 1; x *= (x + 1); printf(\ return; } 2 6
70、 以下程序的输出的结果是___________
#pragma pack(4)/*四字节对齐*/ int main(int argc, char* argv[]) {
unsigned char puc[4]; struct tagPIM
{ unsigned char ucPim1; unsigned char ucData0:1; unsigned char ucData1:2; unsigned char ucData2:3; }*pstPimData;
pstPimData = (struct tagPIM *)puc;
memset(puc, 0, 4);
pstPimData->ucPim1 = 1; pstPimData->ucData0 = 2; pstPimData->ucData1 = 3; pstPimData->ucData2 = 4;
printf(\ return 0; }
#pragma pack()/*恢复缺省对齐方式*/ 01 26 00 00
71、 enum NEW_SERV_ID
{
NSID_SERV_NULL = 0, ...
NSID_SERV254 = 254, NSID_SERV255 , NSID_BUTT
31
文档名称 文档密级
};
unsigned char GetNsid(char nsid) {
return (nsid); }
GetNsid(NSID_SERV_NULL) = _____; GetNsid(NSID_SERV255) = _______; GetNsid(NSID_BUTT) = __. 0 , 255, 0
三、指出下列程序中导致不能出现预期结果的唯一错误(不考虑编程规范错误)
72、 下面程序把\这个字符串输出,请指出其中的错误。
void Test(void) {
char pcArray[10];
strncpy(pcArray,\ printf(\ return;
}
strncpy没有把中止符NULL写入数组中
73、 如下程序用于把\系统备板工作异常\字符串打印出来,请指出其中的错
误:
void PrintErrInfo(void) {
char acMsg[16];
strcpy(acMsg,\系统备板工作异常\ printf(\ return;
}
每个汉字占两个字节,空间不足,字符串结尾还有'\\0'
74、 如下函数实现打印字符串\的功能,请指出错误: #define BUFFER_SIZE 256 void GetMemory(char *pszBuf) {
if(NULL == pszBuf) {
ASSERT(0); return ; }
32
文档名称 文档密级
pszBuf = (char *)malloc(BUFFER_SIZE); return; }
void Test(void) {
char *pszBuf = NULL; GetMemory(pszBuf); if(NULL == pszBuf) {
return ; }
strcpy(pszBuf, \ printf(\ free(pszBuf); return;
}
函数要返回指针就需要传进去指针的地址
75、 如下函数实现打印字符串\的功能,请指出错误:
char *GetMemory(void)
{
char pcBuf[] = \ return pcBuf; }
void Test(void) {
char *pcStr = NULL; pcStr = GetMemory(); if(NULL == pcStr)
{
printf(\ return; } else {
printf(\ }
return; }
要打印的字符串存在于栈内存,可能不会正确打印
76、 下面程序把\这个字符串输出,请指出其中的错误。
void PrintBLUE(void)
33
文档名称 文档密级
{
char* pcColor ; char pcNewColor[5]; pcColor = \
strncpy(pcNewColor, pcColor,4); printf(\ return;
}
strncpy没有把中止符NULL写入数组中
77、 请指出下面程序错误的地方:
LONG A() {
if (条件1) {
return; }
return VOS_OK; } VOID B() {
if (A())
{
DoSomeThing1(); } else {
DoSomeThing2(); } return; }
return语句少了返回值
78、 本题不考虑魔鬼数字问题
void AddFunc (unsigned int a, unsigned int b, unsigned int * c) { } {
*c = a + b
void main(void)
unsigned char e = 200; unsigned char f = 100;
34
}
文档名称 文档密级
unsigned char g = 0;
AddFunc((unsigned int)e,(unsigned int)f,(unsigned int *)&g); printf(\
g是一个字节的变量,将g的地址强制转换成四个字节unsigned int地址,导致写内存越界
79、 找出下面题目中的错误
#define ID_LEN struct STR_A { }
32
char aucID[ID_LEN]; int iA;
struct STR_B { }
// 该函数将pstB内的paucID指向结构stA的aucID
void funcA(struct STR_A stA, struct STR_B *pstB) {
pstB->paucID = stA.aucID; char *paucID; int iB;
}
main() {
STR_A stA = {0}; STR_B stB;
strcpy(stA.aucID, “12345”); funcA(stA, &stB);
printf(“%s\\n”, stB.paucID);
}
funcA传入的stA的参数是一个值拷贝,pstB指向的是堆栈中的地址。
80、 以下函数主要目的是为一个全局空间迅速填充指定字符garbage,请指出有错误的地方 #define MAX_LEN 20 char pBuffer[MAX_LEN]; unsigned char garbage=0x4E;
int longfill(const char *pv, unsigned char b)
35
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C语言编程基础考试试题(7)在线全文阅读。
相关推荐: