C语言一个递归函数的问题

题目要求:编递归函数将整数转换为字符
请回答程序中标注的几个问题

#include <stdio.h>
void change(int n) //将整数转换为字符的递归函数,这个函数是什么思路?
{
int i, r;
i = n/10;
if(i!= 0)
change(i);
r=n%10;
putchar(r+'0'); //这是什么意思
}

int main()
{
int n;
while(scanf("%d",&n) != EOF) //EOF是什么意思?
{
if(n < 0)
{
putchar('-');
n = -n;
}
change(n);
}
return 0;
}

第1个回答  2013-11-12
这个函数的思路就是除10取模 得到个位 十分百位……。

如果这个数除10后不等于0 就再次调用自己 除10,知道等于0,这个时候得到的也就是最高位。

得到最高位数字的办法就是%10;然后函数开始回归。一次得到地位数字。


 putchar(r+'0'); 数字在asic码是递归的,所以'1'-‘0’=1,'n'-'0'=n;
 因此得到字符 'n'=n+'0';
 
 
 
 
 EOF 是文件结束标志,在这里是输入结束标志。

第2个回答  2013-11-12
#include <stdio.h>
void change(int n)    //将整数转换为字符的递归函数,这个函数是什么思路?

int i, r; 
i = n/10;  // i右移动一位  即 整数去掉当前最低位 
if(i!= 0)  
change(i);
 r=n%10;  //  取出当前的最低位
putchar(r+'0'); //转换成ascii 码对应的 阿拉伯数字  0->48 1->49  putchar 输出字符
}
/*
   function:   输入一个整数   然后每次我都取出其中的一位  然后将这位转换成ascii输出
*/
while(scanf("%d",&n) != EOF)    //EOF  输入到文件结束

 

//这个代码输出的整数字符串  不是正序的吧。。。  感觉就不对 倒序输出啊。。

本回答被网友采纳
第3个回答  2013-11-12
EOF = End Of File
相似回答