反向输出问题,注释有一处问题,请大佬帮忙解释
#include <stdio.h>void getInput();
void getInput()
{
int ch;
if ((ch = getchar()) != '!')
{
getInput();
}
else
{
printf("反向输出:");
}
putchar(ch);
}
int main(void)
{
printf("请输入一句以感叹号结尾的英文句子:");
getInput(); //调用这个函数,为什么可以不传入参数?不应该用scanf接收一下用户输入的字符串然后再传入函数中么再调用么?
putchar('\n');
return 0;
} 1,你定义的时候就没定义参数
2,getInput这个函数替代了scanf 这是一个函数递归调用。每次调用getInput()函数,会用getchar()函数读取一个字符放到被调用函数局部变量ch中,如果读到“”,表示输入结束, 执行当前getInput()中的else即输出“反向输出:”。输入结束后,会从最后一个调用getInput()执行putchar(ch)输出当前层的局部变量ch,然后返回上一层,知道返回到main中。
#include <stdio.h>
void getInput();
void getInput()
{
int ch;
if ((ch = getchar()) != '!') //读取一个字符放到ch,
{
getInput(); //如果ch中读取到的字符不是“!”, 递归调用getInput(), 读取下一个字符并判断
}
else
{
printf("反向输出:");//如果ch中读取到的字符时“!”,打印"反向输出:"
}
putchar(ch); //输出当前层的ch字符
}
int main(void)
{
printf("请输入一句以感叹号结尾的英文句子:");
getInput(); //getInput()函数的字符读取不是用scanf整句读入的,而是用getchar()函数,从前往后一次读取一个字符,读取完成后,从后往前一次输出一个字符!具体看上面的代码注释
putchar('\n');
return 0;
}
页:
[1]