习题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); }