求大神帮忙看看,为什么这里需要输入EOF来结束程序?

AngdevX 2017-03-15 07:45:55
#include <stdio.h>
int digits();
int power();
int main()
{
int a,b,d,sum=0;
scanf("%d",&a);
if(a>0)
{
d=digits(a);
}
while(a>0)
{
b=a%10;
a/=10;
sum+=b*power(10,d-1);
d--;
}
printf("%d",sum);
return 0;
}

int digits(int n)
{
int i=0;
scanf("%d",&n);
i++;
n/=10;
while(n>0)
{
i++;
n/=10;
}
return i;
}
int power(int base,int n)
{
int p;
for(p=1;n>0;--n)
p=p*base;
return p;
}




程序是用来输出逆序数的,我知道这个办法是把问题复杂化了,不过这不是重点
问题是我这个程序里明明没有用EOF,为什么最后要用ctrl+Z才能输出结果?
求大神指教,谢谢
...全文
88 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
AngdevX 2017-03-15
  • 打赏
  • 举报
回复
引用 1 楼 自信男孩的回复:
int digits(int n)
{
    int i=0;
    //scanf("%d",&n);    /*delete this */
    i++;
    n/=10;
    while(n>0)
    {
        i++;
        n/=10;
    } 
    return i;
}
去掉digit中的输入,这个输入没必要,n是main传进来的。 另外,函数声明时,至少要带上参数类型
哦哦,成功了,谢谢 不过我还想请教下,多了这一句,程序不是有问题了吗?那为什么只要按了ctrl+Z就能输出对的结果了?这个操作起了什么样的作用呢?还望不吝赐教,谢谢
Pingo520 2017-03-15
  • 打赏
  • 举报
回复
目测是scanf的问题
自信男孩 2017-03-15
  • 打赏
  • 举报
回复
int digits(int n)
{
    int i=0;
    //scanf("%d",&n);    /*delete this */
    i++;
    n/=10;
    while(n>0)
    {
        i++;
        n/=10;
    } 
    return i;
}
去掉digit中的输入,这个输入没必要,n是main传进来的。 另外,函数声明时,至少要带上参数类型
赵4老师 2017-03-15
  • 打赏
  • 举报
回复
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒:再牛×的老师也无法代替学生自己领悟和上厕所! 单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧