7.main() { char s[][6]={”1234”,”56789”},*p[2];5 B4 t5 Y6 N4 l: @2 _. p
int i,sum=0;: Y. g b& g$ H8 I- s# u$ h
p[0]=s[0],p[1]=s[1];: ]) @ F% Y4 Q# K! c1 Y1 S8 v
for(i=0;p[0][i」!=’\0’;i++,i++)) g# ~3 s5 C+ C3 d
sum=10*sum+p[0]-’0’;
5 w4 S% G, t# Q) E% o" o1 l for(i=1;p[1]「i」!=’\0’;i++,i++) x5 ^; ~7 X6 I* l, B( s* C. N% w
sum=10*sum+p[1]-’0’;
9 j; z5 A `7 b1 z& `9 D printf("%d",sum);7 w5 d" x, s) z b
}
' V$ q f5 F" l: Z 【解析】本程序的第1条语句是定义2行5列的二维字符型数组s,并且赋了初值如下:, @8 Z% }5 k, F7 o( c1 F8 f6 h* L
s[0][0]='1's[0][1]='2's[0][2]='3's[0][3]='4's[0][4]='\0'
3 P- W0 D$ }( t$ |* t$ a2 C s[1][0]='5's[1][1]='6's[1][2]='7's[1][3]='8's[1][4]='9'S[1][5]='\0'% @. Z7 Y f% H6 M& ^
此外还定义了字符型指针数组p,利用第3条语句赋了值,结果如下:) C7 |$ X4 v; h" X
p[0]指向以“s[0]”为数组名的一维数组首地址,即p[0]就相当于s[0]
# p9 o8 I4 d1 F6 k( |+ v* g" [) n0 _ p[1]指向以“s[1]”为数组名的一维数组首地址,即p[1]就相当于s[1]% f/ e" O5 N, {/ A8 ~3 E/ k# E
第2条语句定义了整型变量i(用于单重循环的控制变量)和sum,并对sum清0。
8 i9 a+ M; r" y+ C 第4条语句是for循环,控制变量i初值为0,每次加2,控制循环的条件是“p[0」!='\: C$ \# `* c) K! d, ^& `" L: o
0',注意其中的“p[0]”就是“s[0]”,这个控制循环的条件可以理解为“二维字符型数组元素s[0]不是字符串的结束标记则继续循环”。从控制变量i的取位来看,二维字符型数组元素只能取s[0][0]、s[0][2],因为下一个数组元素是s[0][4],该元素值是'\0'。再分析循环体中的语句,其中“ p[0]-'0'”是将数组元素s[0]中存放的数组字符减去'0',结果将是该数字字符对应的一位整数,整个语句是将sum变量中的原值乘以10以后再加上当前的数字。循环结束后的sum值就是s[0」[0」和s[0][2]中的两个数字组成的2位十进制数,结果为13。3 t' |# v( z0 z8 y. E8 a) u" O
按照同样的道理,可以分析出第2个for循环作用是完全相同的,它是把s[1」[1」、s[1][3]中的两个数字(前者为6,后者为8)拼接到sum的原值中,结果sum中值为十进制整数1368。程序的最后一个语句就是输出变量sum中的整数值。
/ @9 \3 h) c6 T# N8 P$ {; a+ n 【参考答案】 1368
. V/ a, M1 s. a; a: W8 B# | 8.int p(m,n); y# k6 j& k$ k8 y6 J4 W3 O
int m,n;% u l. |0 y$ ~- ]6 C! y1 M5 O
{ int i,pp;
; L0 n! \) N6 r1 } for(i=pp=1;i+ s0 j4 f/ s1 }
PP*= m;, k0 g5 c9 V Z1 T8 r# r' D/ A$ _
return(pp);# B3 p; I" G% g' \ u! q" X
}' d! L8 M7 V0 G. U7 V
main()8 ]3 C4 Y& }' g3 I `& c7 g
{ printf("%d"、 p(3,4));
: v) k; F( z9 v+ P; X# X }6 f' U* `- }* d' X u4 p
【解析】主函数中只有一条输出语句,输出结果是函数调用“p(3,4)”的返回值。所以本题的关键是函数p的功能。7 |) F, @ } o1 U7 N5 u/ M7 Y
分析函数p(),有两个参数m、n。函数体中关键的是for循环语句。分析这个循环语句可以看出,控制变量是i,初值为1;,终值为n,每次循环i加1。所以是标准的次数型循环,共计循环n次。循环体中是将参数m的值乘到变量pp中,变量pp在开始循环时已经设置初值为1,所以整个循环是将n个m乘到pp中。显然循环语句的功能是计算m”。而函数的返回值正是这个变量pp中的值。
, @9 V: W% ^' s i8 } 由此分析可知,函数调用“p(3,4)”的返回值就是34。结果为 81,也就是本程序的输6 d; ^* \ t/ J& G- K: g: l
出结果。
% {0 t) S! Q( \! A5 } 【参考答案】81 |