c++输入一数字,逆序输出

来源:百度知道 编辑:UC知道 时间:2024/09/24 04:08:13
输入一个数字,不知其位数,要求逆序输出,如1234,则4321.
鄙人资质鲁钝,冥思苦想,夙兴夜寐,殚精竭虑,辗转反侧不能明其奥义,故上网而问焉,望天下仁义博学之士助我一臂之力,感激不尽,结草相报。
因才自习c++此等洋物不久,勿笑之,笑者脸上痔疮绵延不绝终生者是也……
#include<iostream>
#include<string>
using namespace std;
void main(){
string a,b;
int c,d;
cout<<"num\n";
cin>>b;
int len (string b);求其位数,于网上搜之久矣,不出,无念,故抄一小函数于此。
c= len(b);
for(d=0;d<=c;d++){
a[d]=b[c-d];}将b逆序赋值于a
cout<<a;
}
int len(string b){
int i,c=-1;
for(i=0;b[i]!=NULL;i++)c++;
return c;
}
VS2008 F7时无错,ctr+F5调试时出错(string subscript out of range)……(输入1、2无错,但无返回数字)无奈洋文不熟,不知如何是好
求位数的方法谢了,但是我考虑到后面不是还要逆序输出么……那个b我定义的是string……
还有可以说下为啥这样会错么
或者谁有更好的方法……

按你的思路
首先,写a[d]=b[c-d]就不是正确的方法,
你想将b逆序赋值于a,可以写成
string s;
s = b[i-c-1];
a += s;
其次,求string类型的长度可以直接写成
c=b.size();
还有就是
int len(string b)
{
int i,c=-1;
for(i=0;b[i]!=NULL;i++)c++;
return c;
}
这里面
b[i]!=NULL是不对的
NULL不能这样用,不然他会报错
下面有一用NULL的个小例子
string b;
string *a=&b;
cin >> b;
if(a!=NULL) cout << *a;

//主要思路:冲低位将a中一位一位剥离存入b即可
#include <iostream>
using namespace std;
void main()
{
int a,b=0;
cin>>a;
while(a!=0)
{
b*=10;
b+=a%10;
a/=10;
}
cout<<b<<endl;
}

如果是数的话二楼正解,如果是string的话,reverse(s.bengin(),s.end());

#include <iostream.h>
void main()
{
int b;
cout<<"num:"<<endl;
cin>>b;
while(b/10)
{
cout<<b%10<<' ';
b /= 10;
}