问题 问答题

[函数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;
(1) ;
while (d%n! =0) (2) ;
printf("%d\n",d);[函数2.2说明]
下述程序接收键盘输入,直到句点“.”时结束。输入的字符被原样输出,但连续的空格输入将转换成一个空格。
[函数2.2]
#include <stdio.h>
main()
char c,preChar=’\0’;
c = getchar();
while(c! = ’.’)
if( (3) ) putchar(c);
else if(preChar! =’ ’) putchar(c);
(4) ;
c= (5) ;

答案

参考答案: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)接收下一个输入。

多项选择题
判断题