c语言笔试题Word文档格式.docx

上传人:b****4 文档编号:17953804 上传时间:2022-12-12 格式:DOCX 页数:11 大小:27.91KB
下载 相关 举报
c语言笔试题Word文档格式.docx_第1页
第1页 / 共11页
c语言笔试题Word文档格式.docx_第2页
第2页 / 共11页
c语言笔试题Word文档格式.docx_第3页
第3页 / 共11页
c语言笔试题Word文档格式.docx_第4页
第4页 / 共11页
c语言笔试题Word文档格式.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

c语言笔试题Word文档格式.docx

《c语言笔试题Word文档格式.docx》由会员分享,可在线阅读,更多相关《c语言笔试题Word文档格式.docx(11页珍藏版)》请在冰豆网上搜索。

c语言笔试题Word文档格式.docx

请计算

sizeof(str)= ____________ 

sizeof(p)= ______________  

sizeof(n)= 

______________

344

(3) 

UCHAR*pucCharArray[10][10];

typedefunionunRec

{

ULONGulIndex;

USHORT 

usLevel[6];

UCHAR 

 

ucPos;

}REC_S;

REC_S 

stMax,*pstMax;

四字节对齐方式时:

sizeof(pucCharArray)=______,sizeof(stMax)=_______,sizeof(pstMax)=________,sizeof(*pstMax)=________.

40012412

(4) 

structBBB

unsignedcharucId:

1;

unsignedcharucPara0:

2;

unsignedcharucState:

6;

unsignedcharucTail:

4;

unsignedcharucAvail;

unsignedcharucTail2:

unsignedlongulData;

}AAA_S;

问:

AAA_S在字节对齐分别为1、4的情况下,占用的空间大小是多少?

912

(6)#pragmapack(4)/*编译选项,表示4字节对齐*/

intmain(intargc,char*argv[])

{

structtagTest1

shorta;

chard;

longb;

longc;

};

structtagTest2

shortc;

longa;

structtagTest3

structtagTest1stT1;

structtagTest2stT2;

structtagTest3stT3;

printf("

%d%d%d"

sizeof(stT1),sizeof(stT2),sizeof(stT3));

return0;

}

#pragmapack()(编译选项结束)

请问输出结果是:

_________

121216

(7)enumENUM_A

X1=2,

Y1,

Z1=6,

A1,

B1 

enumENUM_AenumA=Y1;

enumENUM_AenumB=B1;

请问enumA=____;

enumB=______;

38

(8)以下程序的输出结果是________.

#include 

<

intfun(int 

x,int 

y)

static 

int 

m=0;

i=2;

i+=m+1;

m=i+x+y;

return 

m;

voidmain()

j=4;

m=1;

k;

k=fun(j,m);

%d,"

k);

k=fun(j,m);

%d\n"

return;

817

(9)以下程序的输出结果为________

#defineCIR(r) 

r*r/*请注意这种定义的缺陷,不允许这么定义*/

inta=1;

intb=2;

intt;

t=CIR(a+b);

t);

5

(10)structtagABC

char 

cB;

shortsC;

cD;

long 

lA;

}*pAbc;

pAbc=0x100000;

那么pAbc+0x100=0x_________;

(ULONG)pAbc+0x100=0x_________;

(ULONG*)pAbc+0x100=0x_________;

(char*)pAbc+0x100=0x_______;

100C00 

100100 

100400 

100400

2.改错题

(1)下面程序把"

hello"

这个字符串输出,请指出其中的错误。

voidTest(void)

charpcArray[10];

strncpy(pcArray,"

5);

%s\n"

pcArray);

strncpy没有把中止符NULL写入数组中

(2)如下程序用于把"

系统备板工作异常"

字符串打印出来,请指出其中的错误:

voidPrintErrInfo(void)

characMsg[16];

strcpy(acMsg,"

);

%s"

acMsg);

每个汉字占两个字节,空间不足,字符串结尾还有'

\0'

(3)如下函数实现打印字符串"

helloworld"

的功能,请指出错误:

#defineBUFFER_SIZE 

256

voidGetMemory(char*pszBuf)

if(NULL==pszBuf)

ASSERT(0);

return;

}

pszBuf=(char*)malloc(BUFFER_SIZE);

char*pszBuf=NULL;

GetMemory(pszBuf);

 

strcpy(pszBuf,"

helloworld\r\n"

pszBuf);

free(pszBuf);

函数要返回指针就需要传进去指针的地址

(4)本题不考虑魔鬼数字问题

voidAddFunc(unsignedinta,unsignedintb,unsignedint*c)

*c=a+b

voidmain(void)

unsignedchare=200;

unsignedcharf=100;

unsignedcharg=0;

AddFunc((unsignedint)e,(unsignedint)f,(unsignedint*)&

g);

%d"

g);

g是一个字节的变量,将g的地址强制转换成四个字节unsignedint地址,导致写内存越界

(5)找出下面题目中的错误

#defineID_LEN 

32

structSTR_A

charaucID[ID_LEN];

iA;

structSTR_B

char*paucID;

intiB;

//该函数将pstB内的paucID指向结构stA的aucID

voidfuncA(structSTR_AstA,structSTR_B*pstB)

pstB->

paucID=stA.aucID;

main()

STR_AstA={0};

STR_BstB;

strcpy(stA.aucID,“12345”);

funcA(stA,&

stB);

printf(“%s\n”,stB.paucID);

funcA传入的stA的参数是一个值拷贝,pstB指向的是堆栈中的地址。

(6)指出下面程序的错误

VOIDB(ULONG*p)

*p=66*10000;

return;

VOIDA()

unsignedshorta=10*1000;

B((ULONG*)(&

a));

字符越界/溢出

7、请找出下面代码中的所有错误(题目不错,值得一看)  

说明:

以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”  

#include"

string.h"

  

main()  

{  

char*src="

hello,world"

char*dest=NULL;

intlen=strlen(src);

dest=(char*)malloc(len);

char*d=dest;

char*s=src[len];

 

while(len--!

=0)  

d++=s--;

printf("

dest);

return0;

}  

方法1:

一共有4个错误;

intmain()  

{  

 char*src="

 intlen=strlen(src);

 char*dest=(char*)malloc(len+1);

//要为分配一个空间   char*d=dest;

 char*s=&

src[len-1];

//指向最后一个字符  

 while(len--!

=0)  

 *d++=*s--;

 *d=0;

//尾部要加’\0’  

 printf("

%sn"

   

free(dest);

//使用完,应当释放空间,以免造成内存汇泄露

dest=NULL;

  //防止产生野指针 

 }

方法2:

(方法一需要额外的存储空间,效率不高.) 不错的想法

string.h>

charstr[]="

intlen=strlen(str);

chart;

for(inti=0;

i<

len/2;

i++)

t=str[i];

str[i]=str[len-i-1];

//小心一点

str[len-i-1]=t;

str);

8、请问下面程序有什么错误?

inta[60][250][1000],i,j,k;

for(k=0;

k<

=1000;

k++)

for(j=0;

j<

250;

j++)

for(i=0;

i<

60;

i++)

a[i][j][k]=0;

答:

把循环语句内外换一下

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 电大

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1