输入输出模块_输入11010会输出01011,怎么样可以让他输出1011呢?

原问题:输入11010会输出01011,怎么样可以让他输出1011呢?
分类:编程开发 > 最后更新时间:【2016-12-13 15:15:52】

最佳答案

从前面看是顺序反过来了吧,所以就输入1011的反顺序,1101


追问:
做题的要求是输入10110,怎么能输入1101 追答:
意思是你写了一个程序,目前是输入11010的话会输出01011,但是你想让他输出的是1011,来问的是怎么改程序的思路么
追问:
对,就是不知道怎么改 追答:
你这个01011看着像是存在了数组或者类似数组的容器里面,这样的话就可以再额外定义一个标记变量,比如int head=0;具体思路我注释在代码里了,具体代码类似下面:有问题的话可以把你的代码贴出来,在你的基础上再改void main(){int a[]={0,1,0,1,1};//具体怎么得到的01011你已经实现了,就不再重复了int head=0;//做标记用for(int i=0;i-1)//如果head>-1说明还在找开头不是0的数{if(a[i]==0)//a[i]==0说明开头还是0{head++;//开头是0的话就把head+1,为了最后比较这个数会不会全是0continue;}else{head=-2;//a[i]!=0说明找到了第一个不是0的数,从这里开始就可以正常输出了cout 追答:
上面那段粘贴出来格式有问题,漏了东西,我换个格式提交的时候说内容重复不让提交了,for循环里面内容应该是:for(int i=0;i-1){这里面是上面的for循环下的内容,最后那个cout是cout 追答:
有点尴尬,还是贴不出来,我把所有注释发过来吧//具体怎么得到的01011你已经实现了,就不再重复了//head做标记用//如果head>-1说明还在找开头不是0的数//a[i]==0说明开头还是0//开头是0的话就把head+1,为了最后比较这个数会不会全是0//a[i]!=0说明找到了第一个不是0的数,从这里开始就可以正常输出了//通过head和数字的长度判断是不是a数组的所有位都是0//是的话说明上一段就什么都没有输出,就在这里输出一个0 追答:
总结一下总体思想就是,在输出之前定义一个变量int head=0;从第一位开始判断要输出的数,如果是0,就不输出,同时head+1,继续往下判断,直到发现有一位不是0,就从这一位开始输出剩下的所有数,如果都是0,这时候head的大小就会等于数字的位数,最后就判断一下head是不是等于数字的位数,如果是,说明这个数全部都是0,这种情况感觉应该就是只输出一个0,输出就行了,否则,说明这些数里存在不是0的数,在上面就已经输出了,就不用再输出0了
追问:
我能私加你吗?
追问:
他这道题目的完整表述是这样的数的逆序输出-普通函数有返回值,编写名为 reversalNum的函数,函数原型为 int reversalNum(int n),功能是返回翻转数。如参数为4321,返回值为1234,假设n不超过5位数。 追答:
整数的话就可以倒着依次取出每一位数,然后乘以十相加了,我就只用文字描述了,代码可能还像之前那样显示不全,先判断,如果n小于10,直接输出n就行了,否则就进入下面流程声明一个变量存储最后结果,比如叫rn,初值为0,如果此时的n不等于零,就进入下面的while循环让rn等于(rn乘以10,加n%10),然后让n等于n除以10while循环出来之后rn就是反转之后的数了,
  • 追答:
    刚才中间换了思路,去掉那句“如果n小于10,直接输出n就行了,否则就进入下面流程“,,直接进入循环就行了,
    最佳答案由网友  暗黑破坏牛  提供
  • 公告: 为响应国家净网行动,部分内容已经删除,感谢网友理解。
    1

    分享到:

    其他回答

    暂无其它回答!

      推荐