C新手,有大神帮我看看作业哪错了吗

qq_44815599 2019-03-22 08:57:49
输入一个不大于三位的正整数,在求两位数和一位数的逆顺序数时多输出了两个很大的数字
...全文
56 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
棉猴 2019-03-22
  • 打赏
  • 举报
回复
我最喜欢的VC++6.0,没有之一!
计算输入数字的位数的代码没有错误,主要是求逆序数,即case 2语句中有一些小小的错误
	case 2:
printf("输入一个不多于三位的数字以继续:\n");
scanf("%d", &i);
b = i / 100;
c = (i - (b * 100))/10;//-------修改求c的代码-----------
d = i - (b * 100) - (c * 10);
if (b != 0)
{//------添加括号------
e = b;
b = d;
d = e;
printf("%d%d%d\n", b, c, d);
}//------添加括号------
else if (c != 0)//-------改为else if-------
{//------添加括号------
e = d;
d = c;
c = e;
printf("%d%d\n", c, d);
}//------添加括号------
else if (d != 0)//-------改为else if-------
{//------添加括号------
printf("%d\n", d);
}//------添加括号------
break;

VC++6.0 User,加油!
  • 打赏
  • 举报
回复
错了好多,都不知道怎么说。
奔跑的老蜗牛 2019-03-22
  • 打赏
  • 举报
回复
自己加个断点调一下就清楚了,代码上看的话,输入56,会输出655,因为这时候c,d(十位,个位)都不等于0,应该用else if;
if(b!=0)
{...}
else if (c!=0)
{...}
else
{...}

或者用switch
或者这样:
if(b!=0)
{只输入百位}
if (c!=0)
{只输入十位}
if(d!=0)
{只输入个位}

69,381

社区成员

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

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