c语言与程序设计-第2章课后习题参考答案

上传人:ni****g 文档编号:508425091 上传时间:2022-09-17 格式:DOC 页数:5 大小:25KB
返回 下载 相关 举报
c语言与程序设计-第2章课后习题参考答案_第1页
第1页 / 共5页
c语言与程序设计-第2章课后习题参考答案_第2页
第2页 / 共5页
c语言与程序设计-第2章课后习题参考答案_第3页
第3页 / 共5页
c语言与程序设计-第2章课后习题参考答案_第4页
第4页 / 共5页
c语言与程序设计-第2章课后习题参考答案_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《c语言与程序设计-第2章课后习题参考答案》由会员分享,可在线阅读,更多相关《c语言与程序设计-第2章课后习题参考答案(5页珍藏版)》请在金锄头文库上搜索。

1、2.1 下列哪些是词法记号?关键字(是)注释空白符八进制常量(是)三字符序列字符串常量(是)括号(是)2.2 C编译器可将下列每一个源字符串分解为哪些记号?(不必考虑记号组合是否合法)(1) x+yx, +, +, y(2) -0xabL-, 0xabL(3) 2.89E+12L2.89E+12L(4) String+FOO String+ FOO(5) x*2x, *, *, 2(6) X?/X?/(7) a?ba, ?, b(8) x-+=yx, -, +=, y(9) intx=+10intx, =, +, 10(10) StringFOOString, FOO(这道题当时改的时候有几个

2、小题改得有错误,注意!)2.3 下列哪些不是标识符,为什么?标识符由字母、数字和下划线组成,但首字符必须是字母或下划线。4th不是,以数字开头;sizeof不是(标准C的关键字)_limit是_is2是xYshould是x*y不是,* 非法o_no_o_no是temp-2不是,- 非法isnt不是, 非法enum不是(标准C的关键字。注:关键字也称为保留字,是被系统赋予特定含义并有专门用途的标识符。关键字不能作为普通标识符,但可以作为宏名。所有预处理均发生在识别这些关键字之前。)2.4 在下列表示中,哪些是合法常数,哪些是非法常数?对于合法常数,指出其类型;对于非法常数,说明其错误原因。2L合

3、法,long长整型不合法,单引号组中的单引号前需要转义字符.12合法,double双精度浮点型0x1ag不合法,g不是16进制数中的符号,也不表示任何类型33333合法,int整形a合法,字符串常量合法,字符串常量0. L合法,long double长双精度浮点型E20不合法,缺少尾数部分0377UL合法,unsigned long无符号长整型18不合法,存在非8进制位0xa不合法,不符合十六进制字符码表示规则xhh0x9cfU合法,unsigned int无符号整形45合法,char字符型1. E-5合法,double双精度浮点型0合法,char字符型3. F合法,float浮点型34不合法

4、,缺少转义符合法,char字符型(P35,双引号作为字符常量时既可用图形符号也可用转义序列表示)a合法,char字符型2.6 以下的变量声明语句中有什么错误?(1) int a; b = 5;第一个分号改为逗号int a, b=5;(2) doubel h;关键字错误double h;(3) int x = 2.3;类型错误float x = 2.3;(4) const long y;需要赋初值const long y = 0;(5) float a = 2.5*g;g未定义变量int g = 1; float a = 2.5*g;(6) int a = b = 2;b未定义变量int a =

5、 2, b = 2;2.7 设变量说明为:int a = 1, b = 2, c = 3, d;double x = 2.0; y = 7.7;请给出下列表达式的值。(1) +a*b-4(2) !a+b/c0(3) a=-b+ctrue(4) d=a+,a*=b+1d为1, a为6(5) d=y+=1/xy为8.2, d为8(6) a2正确(9) a+=i+=1+2正确(10) int(a+b)正确,VC+下可运行2.9 下面代码的执行结果是什么?char a = 1, b = 2, c = 3;printf(%d,%d,%d,%dn,sizeof(c), sizeof(a), sizeof(

6、c=a), sizeof(a+b+7.7);结果:1,4,1,82.10 设变量说明为:unsigned short x = 1, y = 2, z = 4, mask = 0xc3, w;short v;请给出下列表达式的值。(1) x&x0(2) v=x-2(3) w=xx65535(4) x|y&x|z5(5) w=y|z,(w3)+(w1)60(6) w=x|y&x|zx113(7) v=-1,v232.11写一个表达式,将整数k的高字节作为结果的低字节,整数p的低字节作为结果的高字节,拼成一个新的整数。表达式为:32位k 24 | (k & 2558)8 | (p & 2558 |

7、p 2416位(k 8) | (p 8)2.12 写一个表达式,将整数x向右循环移位n位。表达式为:32位x(n%32)16位x(n%16)2.13 写一个表达式,将整数x从第p位开始的向右n位(p从右至左编号为015)翻转(即1变0,0变1),其余各位保持不变。表达式为:x(0)(16-p-1)或:x(0(16-n)(p+1-n)2.15 表达式v &= (v-1)能实现将v最低位的1翻转。比如v=108,其二进制表示为01101100,则v &= (v-1)的结果是01101000。用这一方法,可以实现快速统计v的二进制中1的位数,只要不停地翻转v的二进制数的最低位的1,直到v等于0即可。

8、请用该方法重写例2-18。#includeint main(void)unsigned char data, backup, t = 0;int parity = 0;data = getchar();backup = data;while(data)t+;data &= (data -1);data = backup | (parity7)(tb?ac?a:c:bc?b:c 或(ab)?(ac?a:c):(bc?b:c) 或(ab)?(ac)?a:c):(bc)?b:c)2.18 写一个表达式,如果整数a能被3整除且个位数字是5,则结果为非0,否则为0。表达式为:a%3 ? 0 : (a%1

9、0=5 ? 1 : 0)2.19 定义一个枚举类型enum month,用来描述一年12个月:一月(jan)、二月(feb)、十二月(dec),并编写一个程序,根据用户输入的年份,输出该年各月的英文名及天数。#includeenum year jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec;int main(void)enum yaer month;int year_num, year_days=365;char *month_name =January, February, March, April, May, June,

10、July, August, September, October, November, December;int month_days = 31,28,31,30,31,30,31,31,30,31,30,31;scanf(%d, &year_num);if(!(year_num%4) & year_num%100 | !(year_num%400)month_days1=29, year_days=366;printf(n%dn, year_days);for(month=jan; month 0 ) ? (double)a : b友情提示:部分文档来自网络整理,供您参考!文档可复制、编制,期待您的好评与关注! /

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 习题/试题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号