C程序设计语言
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

习题2

2.1 对给定的一个年份,判断是不是闰年。要求用N-S图描述该算法。提示:能被4整除但不能被100整除的年份或能被400整除的年份是闰年。

2.2 用N-S图描述求n!的算法。

2.3 判断一个正整数n是否为素数。要求用N-S图描述该算法。提示:所谓素数就是除了1和本身之外,不能被任何数整除的数。

2.4 用N-S图描述求100个数中的最小的数的算法。

2.5 用N-S图描述将3个数按从小到大的顺序排列的算法。

2.6 找出10~1000内各位非零数字之积为12的所有整数,如26,62,206,340,430,621,…。要求用N-S图描述该算法。

2.7 找出10~1000之间所有的对称数。所谓对称数就是正序读和逆序读的值相等,如33、151、313等。要求用N-S图描述该算法。

2.8 百钱买百鸡。鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一,百钱买百鸡,问鸡翁、鸡母、鸡雏各多少。要求用自顶向下、逐步细化的方法设计该算法,并用N-S图描述。

2.9 根据实际问题设计应用程序大致要经过哪几个步骤?

2.10 判断下列常量的正误,并指出正确的常量的数据类型:

32.01

'0'

0

"012"

"0"

-0123

0876

-0.1e-2

'123'

ABF

0xef87

'\n'

0x12gf

5-3

2.11 判断下列变量名是否正确:

Aaa

abc o-3

if

+y

_sss

*x

A#3

f.3

a/b

main

-test

t3

e_2

2.12 选择题

(1)下面不正确的字符常量是( )。

A."c"

B.'\\'

C.'\567'

D.'K'

(2)下列4组选项中,均是不合法的用户标识符的选项是( )。

A.W P_0 do

B.b-a goto int

C.float la0 _A

D.-123 abc TEMP

(3)设C语言中,一个int型数据在内存中占2个字节,则unsigned int型数据的取值范围为( )。

A.0~255

B.0~32767

C.0~65535

D.0~2147483647

(4)若x、i、j、k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为( )。

A.4

B.16

C.32

D.52

(5)设以下变量均为int类型,则值不等于7的表达式是( )。

A.(x=y=6, x+y, x+1)

B.(x=y=6, x+y, y+1)

C.(x=6, x+1, y=6, x+y)

D.(y=6, y+1, x=y, x+1)

2.13 填空题

(1)若有定义int m=5,y=20;,则计算表达式y+=y-=m*=y后,y的值是_____。

(2)若一个int型数据在内存中占2个字节,则int型数据的取值范围为_____。

(3)若s是int型变量,且s=6,则表达式s%2+(s+1)%2的值为_____。

(4)若a是int型变量,则表达式(a=4*5,a*2),a+6的值为_____。

(5)若x和a均是int型变量,则计算表达式x=(a=4,6*2)后的x值为_____,计算表达式x=a=4,6*2后的x值为_____。

(6)若x和n均是int型变量,且x和n的初值均为5,则计算表达式x+=n++后x的值为_____,n的值为_____。

(7)若有定义int x=3,y=2;float a=2.5,b=3.5;,则表达式(x+y)%2+(int)a/(int)b的值为_____。

2.14 字符型常量和字符串常量有什么区别?

2.15 将下列数学算式转换为C语言表达式:

(1)

(2)

(3)

(4)

2.16 已知a=5,b=3,x=3.5,y=2.6,求下列表达式的值:

(1)x+a%3*(int)(x+y)%2/4

(2)(float)(a+b)/2+(int)x%(int)y

(3)a/b+x/y-(int)x%3*(float)a/b

2.17 设变量c是char型,i是int型,j是long型,f和r是float型,d是double型,请写出下列表达式类型转换的过程:

            r=(c*i)+(f/d)-(i+f)+(i/j)

2.18 写出下列程序的执行结果。

(1)

            #include <stdio.h>
            void main()
            {   int m=1,n=2;
                int k=++m;
                printf("k=%d",k);
                k=m+n++;
                printf("m=%d,n=%d,k=%d\n",m,n,k);
                k=--n-m;
                printf("m=%d,n=%d,k=%d\n",m,n,k);
                k=(m>=n);
                printf("k=%d\n",k);
            }

(2)

            #include <stdio.h>
            void main()
            {   int a=4,b=3,c=2,d=1;
                printf("%d\n",(a+b,b+c,c+d));
            }

(3)

            #include <stdio.h>
            void main()
            {   int a=1,b=2,c=0;
                printf("%d\n",a++-1);
                printf("%d\n",b/++a);
            }

(4)

            #include <stdio.h>
            void main()
            {   int a=-5,b=10;
                float x=1.75,y=2.34e-03;
                printf("a+b=%d\n",a+b);
                a++;b--;
                printf("a*b=%d\n",a*b);
                printf("x+y=%f\n",x+y);
            }