问答题 [函数2.1说明] 下面程序的功能是计算x和y的最小公倍数。 [函数2.1] main() { int m,n,d,r; seanf("%d %d",&m,&n); if(m<n) {r=m;m=n;n=r;} {{U}}(1) {{/U}}; while (d%n! =0) {{U}}(2) {{/U}}; printf("%d/n",d); } [函数2.2说明] 下述程序接收键盘输入,直到句点“.”时结束。输入的字符被原样输出,但连续的空格输入将转换成一个空格。 [函数2.2] #include <stdio.h> main() { char c,preChar='/0'; c = getchar(); while(c! = '.'){ if({{U}} (3) {{/U}}) putchar(c); else if(preChar! =' ') putchar(c); {{U}}(4) {{/U}}; c={{U}} (5) {{/U}}; } }
【正确答案】
【答案解析】d=m (2) d+=m或d=d+m (3) c!=‘’ (4) preChar=c (5) getchar() [解析] (1)下文使用了变量d,因此需在此初始化,由下面循环的条件“d%n!=0”知初值不能是n,因此必为m; (2)此处while循环生成最小公倍数d,其终止条件是n整除d,因此循环过程中需要保证m整除d并且d尽可能地小,于是d应以m为增量递增; (3)当输入的字符非空格时,原样输出; (4)程序中变量preChar用于记录上一次读入的字符,循环过程中应不断更新其值; (5)接收下一个输入。