- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
C语言笔试题目及答案
一、基础语法与运算
1.以下代码在32位系统(int占4字节,指针占4字节)和64位系统(int占4字节,指针占8字节)中分别输出什么?
```c
includestdio.h
structTest{
chara;
intb;
doublec;
chard;
};
intmain(){
intarr[5]={1,2,3,4,5};
intp=arr;
charstr[]=hello;
printf(32位:%d%d%d%d\n,sizeof(arr),sizeof(p),sizeof(str),sizeof(structTest));
printf(64位:%d%d%d%d\n,sizeof(arr),sizeof(p),sizeof(str),sizeof(structTest));
return0;
}
```
答案:
32位系统输出:204624
64位系统输出:208624
解析:
-`sizeof(arr)`计算int数组大小,5个int占5×4=20字节,与系统位数无关。
-`p`是指针变量,32位系统指针占4字节,64位占8字节。
-`str`是字符数组,存储hello(5字符+1终止符),共6字节。
-结构体`Test`的内存对齐规则:chara占1字节,偏移0;intb需对齐4字节,偏移4(补3字节),占4字节;doublec对齐8字节,偏移8,占8字节;chard在32位对齐4字节,偏移16(8+8=16),占4字节,总大小16+4=20?不,double占8字节后偏移到16(0+1+3补+4=8;8+8=16),char在32位是4字节,对齐4,所以从16开始,占4字节到19,总大小需对齐最大对齐数(double的8),19+(8-19%8)=24。64位系统char占8字节,对齐8,double后偏移16,char从16开始占8字节到23,总大小24(23+(8-23%8)=24)。
2.执行以下代码,输出结果是什么?
```c
includestdio.h
intmain(){
inta=3,b=5;
intc=(a++=3)(++b=5)||(a+b8);
printf(a=%d,b=%d,c=%d\n,a,b,c);
return0;
}
```
答案:a=4,b=5,c=1
解析:
逻辑与()具有短路特性。首先计算`a++=3`:a初始3,a++后a=4,表达式为真(3=3)。接着计算`++b=5`:b初始5,++b后b=6,6=5为假。因此`(a++=3)(++b=5)`整体为假。此时进入逻辑或(||)的右半部分`a+b8`:a=4,b=6(注意b在++b后已变为6),4+6=108为真。因此整个表达式为真(1)。最终a=4,b=6?不,原代码中`++b=5`计算时,b初始是5,++b后b=6,6=5为假,所以左半部分为假。此时进入右半部分`a+b8`:a此时是4(a++后),b是6(++b后),4+6=108为真,所以c=1。但原代码中b的初始值是5,执行++b后b变为6,所以最终b=6?但原答案是否正确?再检查:原代码中`(a++=3)`是3=3,真,a变为4;然后`(++b=5)`:b原为5,++b后是6,6=5是假,所以左边结果为假。此时执行||右边`a+b8`:a=4,b=6,4+6=108为真,所以整个表达式为真。因此c=1,a=4,b=6。但原题答案是否有误?可能我之前分析错误。原代码中b初始是5,执行++b后b=6,所以最终b=6。那正确输出应为a=4,b=6,c=1。可能之前答案写错了,需修正。
(注:此处发现初始答案错误,需纠正。正确解析应为:a++后a=4,++b后b=6,因此输出a=4,b=6,c=1。)
3.写出以下代码的输出结果:
```c
includestdio.h
intmain(){
intx=10;
x+=x-=xx;
printf(x=%d\n,x);
return0;
}
```
答案:x=-180
解析:
赋值运算符右结合。表达式等价于`x=x+(x=x-(xx))`。计算顺序:
-先计算`xx`:10×10=100。
-计算`x-
您可能关注的文档
最近下载
- 人民大2024思想政治教育心理学(第三版)课件04 第四章 思想政治教育心理学(第三版).ppt VIP
- 人民大2024思想政治教育心理学(第三版)课件02 第二章 思想政治教育心理学(第三版).ppt VIP
- 人民大2024思想政治教育心理学(第三版)课件07 第七章 思想政治教育心理学(第三版).ppt VIP
- 人民大2024思想政治教育心理学(第三版)课件09 第九章 思想政治教育心理学(第三版).ppt VIP
- 人民大2024思想政治教育心理学(第三版)课件01 第一章 思想政治教育心理学(第三版).ppt VIP
- 绪论思想政治教育心理学PPT课件.ppt VIP
- 狼王梦读书分享.pptx VIP
- 中医四诊培训课件.ppt VIP
- 英威腾 GD5000系列高性能矢量高压变频器产品手册_V6.1.pdf VIP
- 自由作文教学课件.ppt VIP
文档评论(0)