C的一段程序如果输入两位或两位以上的数(假设位数为n)把这个-查字典问答网
分类选择

来自欧阳志为的问题

  C的一段程序如果输入两位或两位以上的数(假设位数为n)把这个数的后n-1位输出例如输入123输出23..unsignedt,s=0,s1=1,p=0;t=m;while(t>10){if(t/10)p=t%10;s=s+p*s1;s1=s1*10;t=t/10;}returns;我承认这段程序

  C的一段程序如果输入两位或两位以上的数(假设位数为n)把这个数的后n-1位输出例如输入123输出23..

  unsignedt,s=0,s1=1,p=0;

  t=m;

  while(t>10)

  {

  if(t/10)

  p=t%10;

  s=s+p*s1;

  s1=s1*10;

  t=t/10;

  }

  returns;

  我承认这段程序作为验证后是对的但是我不明白为什么请高手不要笑我啊我只说出自己的想法例如我输入123它大于10对吧进入if中t/10是12然后它除以10余2把这个值给了p然后s=2这是我输入123的十位之后就看不懂了它给s扩大十倍后又让t除以10之后是怎么变成我想输出的23的呢怎么都想不懂呜.

1回答
2020-12-30 01:08
我要回答
请先登录
金海

  思路:

  t=m(估计m你定义的是输入的那个数,拿123举例吧)

  while(t>10),如果t100

  if(123/10)即if(12),条件真

  则执行下面的p=t%10;p=123%10=3

  s=3*1=3//这是各位数字

  s1=10

  t=t/10(t=12)

  -----------------------

  if(12/10)为真

  p=12%10=2

  s=3+10*2

  t=t/10=1

  ---------------------

  循环结束

  返回s结果23

  p是每一位的数字,s1是位数的系数(十位10、百位100)

  123=1*100+2*10+3*1(其中1、10、100就是s1的意义)

  注意if(t/10)执行后t的值并没有改变

2020-12-30 01:12:18

最新问答

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  •