C语言按保留字次数降序输出,C语言第二章作业详解.doc

C语言(第二章)作业详解

[题2.1]标识符在命名时,应注意哪几个方面?

在C语言中标识符是用户自定义的一种字符序列,它由字母或下划线开头,由下划线、数字与字母组成的一组符号。在C语言中大小写有区别,一般情况下标识符尽可能“见文识意”,它不能与系统的保留字相同。在C语言的不同编译环境中对于字符串的长度要求也不同,DOS环境下,长度最长32个字符。

[题2.2]C语言中整数-8在内存中的存储形式是什么?

在计算机中所有参与运算的数据在运算的过程中采用补码方式,因此将-8转换为补码保存在计算机中。

-8原码:1000 0000 0000 1000。

-8反码:1111 1111 1111 0111。

-8补码:1111 1111 1111 1000

[题2.3]字符与字符串常量有什么区别?

在C语言中字符是基本数据类型,而字符串不是,在计算机表达字符串时,内部采用字符数组方式。字符使用单引号表示,字符串则使用双引号表示。在字符长度相同的情况下,字符串存储的实际长度比字符多一个字节。可以将字符存储为字符中,但不能将字符串存储为字符。

[题2.4]已知“int i,a;”,执行语句“i=(a=2*3,a*5),a+6”后,变量i的值是多少?

参考代码如下:

# include

main()

{

int i,a;

i=(a=2*3,a*5),a+6;

printf("i=%d a=%d\n",i,a);

}

运行结果如下:

题目解读:

i=(a=2*3,a*5),a+6;应当理解为是“,”运算概念,a+6是内在中的计算内容,它的值与i没有关系。(a=2*3,a*5)中的括号级别最高,优先进行运算,其中的内容中a=2*3与a*5按从左向右运算,因此结果是a=6,然后再计算a*5=30。在此运算结束后将后面的数据作为最终的结果。因此表达式变成了i=30,a+6?i=30,6=6?i=30,12。它最终的结果如截屏所示。

试分析下面代码的结果。

# include

main()

{

int i,a;

i=(a=2*3,a*5),a+6;

printf("%d\n",(a=2*3,a*5),a+6);

printf("i=%d a=%d\n",i,a);

}

# include

main()

{

int i,a;

i=(a=2*3,a*5),a+6;

printf("%d\n",((a=2*3,a*5),a+6));/*多了一个括号有什么影响?

printf("i=%d a=%d\n",i,a);

}

[题2.5]设“int i=1,j=2,k=3”,请写出以下表达式的值及计算后变量i,j,k的值。

(1)(++i)*(++j)*(++k)

(2)(i++)*(++j)*(k++)

(3)i=i+j,j=j+k,k=k+i

解答如下:

(1)参考代码:

# include

main()

{

int i=1,j=2,k=3,m;

m=(++i)*(++j)*(++k);

printf("m=%d i=%d j=%d k=%d\n",m,i,j,k);

}

说明:

++i表示的概念是先自增然后再使用其值参与运算。它等价与i=i+1之后再参与相关运算。同理j与k道理相同,因此表达式为2*3*4=24。

(2)参考代码

# include

main()

{

int i=1,j=2,k=3,m;

m=(i++)*(++j)*(k++);

printf("m=%d i=%d j=%d k=%d\n",m,i,j,k);

}

说明:

i++表示先参与运算,然后i再实现自增。表达式为1*3*3=9。

(3)参考代码

# include

main()

{

int i=1,j=2,k=3,m;

i=i+j,j=j+k,k=k+i;

printf("i=%d j=%d k=%d\n",i,j,k);

}

[题2.6]求下面算术表达式的值。

(1)x+a%3*(int)(x+y)%2/4(设x=2.5,a=7,y=4.7)

(2)(float)(a+b)/2+(int)x%(int)y(设a=2,b=3,x=3.5,y=2.5)

解答如下:

(1)参考代码:

# include

main()

{

float x=2.5,y=4.7;

int a=7;

float c;

c=x+a%3*(int)(x+y)%2/4;

printf("x+a%%3*(int)(x+y)%%2/4=%f\n",c)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值