C++ 输入某数,然后ci数逆序后输出,输入123,输出321,越简单越好,我的这个怎么错误了 ,求大神指教

作者&投稿:禄炎 (若有异议请与网页底部的电邮联系)
用C++编写序输入任意一个三位数,将其各位数字按逆序输出(例如:输入数据123,输出321 求解~


package com.yuxin.learn;
public class Main{
//输入整数后,逆序输出为字符串,通过递归实现
public static String reverse(int a){
if(a<0)return"";
if(a<10)return Integer.toString(a);
int last=a-(a/10)*10;//取得这个整数的最后一位
return Integer.toString(last)+reverse(a/10);//递归输出最后一位和前面的倒序数字
}
public static void main(String[]args){
int x=123023040;
String rev=reverse(x);
System.out.println(rev);
System.out.println(reverse(123));
}
}
输出结果:
1、040320321
2、321

扩展资料:C++与C#的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。
面向过程
静态全局变量
在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下:
//Example1
#include<iostream>
using namespace std;
void fn();//声明函数
static int n;//声明静态全局变量
int main()
{
n=20;//为n赋初值
printf("%d",n);//输出n的值
fn();//调用fn函数
}
void fn()
{
n++;//n的值自加一(n=n+1)
printf("%d",n);//输出n的值
}
静态全局变量有以下特点:
该变量在全局数据区分配内存;
未经初始化的静态全局变量会被程序自动初始化为0(在函数体内声明的自动变量的值是随机的,除非它被显式初始化,而在函数体外被声明的自动变量也会被初始化为0);
静态全局变量在声明它的整个文件都是可见的,而在文件之外是不可见的;
静态变量都在全局数据区分配内存,包括后面将要提到的静态局部变量。对于一个完整的程序,在内存中的分布情况如下图:
代码区//low address全局数据区堆区栈区//high address
一般程序把新产生的动态数据存放在堆区,函数内部的自动变量存放在栈区。自动变量一般会随着函数的退出而释放空间,静态数据(即使是函数内部的静态局部变量)也存放在全局数据区。全局数据区的数据并不会因为函数的退出而释放空间。细心的读者可能会发现,Example 1中的代码中将
static int n;//定义静态全局变量
改为
int n;//定义全局变量
程序照样正常运行。
的确,定义全局变量就可以实现变量在文件中的共享,但定义静态全局变量还有以下好处:
静态全局变量不能被其它文件所用;
其它文件中可以定义相同名字的变量,不会发生冲突;
参考资料:
百度百科——static(计算机高级语言)

#include<iostream>
using namespace std;
int main()

int a,b,c,d,e;
cout<<"输入三位数字———"<<endl;
cin>>a; //读取输入
e=a%10;
d=a%100;
d=d/10;
c=a/100; //c是百位上的值
b=100*e+10*d+c;
cout<<b<<endl;
return 0;
}


#include<iostream.h>
void main()

int a,b,c,d,e;
cout<<"输入三位数字:";
cin>>a;
c=a%10;//输入数字的个位
d=a/10%10;;//输入数字的十位
e=a/100;//输入数字的百位
b=c*100+d*10+e;
cout<<b<<endl;
}

代码运行成功。。。



不要读数,当字符处理,读字符串更简单,每次读一个string字符串,然后反转,详见标准库

std::reverse(str.begin(),str.end());

#include <iostream>
#include <algorithm>
#include <string>

int main()
{
    std::string str;
    
    std::cin << str;
    
    std::reverse(str.begin(),str.end());
    
    std::cout << str << std::endl;
    
    return 0;
}


cin >> a;
b = a / 100; 
c = (a % 100)/10;
d = a % 10;
a = d*100 + c*10 + b;
cout << a << endl;


#include<iostream.h>
void main()
{
int a,b,c,d,e;
cout<<"输入三位数字———"<<endl;
e=a%10;
d=a%100;
d=d/10;
c=a/100;
b=100*e+10*d+c;
cout<<b<<endl;
}
e=a/100;改成了 c=a/100;


武夷山市19364581520: c++编程从键盘输入一个四位数,输出其逆序数. -
寸类富马: main() { int a; cin>>a; do { cout<<a%10; a/=10; }while(a); cout<<endl; }

武夷山市19364581520: 用C++编写序输入任意一个三位数,将其各位数字按逆序输出(例如:输入数据123,输出321 求解 -
寸类富马: 【解题思路】 整数的逆序输出是很常见的题目,也比较简单.可以通过取余运算符(%)和除号(/)来完成,具体的思路如下:比如要对123逆序输出. 第一步是先对 123除以10取余数,这样就会得到3; 第二步是把123除以10取整,得到12,...

武夷山市19364581520: (C++)从键盘输入一个数,要求将该数的反向序列输出. -
寸类富马: #include<stdio.h>#include<stdlib.h>#include<math.h> int main() { long a,temp; int i; scanf("%d",&a); for(i=0;;i++) { if(a<(int)pow(10.0,i)) //退出条件2113 break; else { temp=(a%(int)pow(10.0,i+1))/(int)pow(10.0,i); //循环取整数5261的4102各位 ...

武夷山市19364581520: C++编程:输入一个整数,将它反序后输出. -
寸类富马: #include <iostream.h> int f(int n) { if(n<10) return n; else cout<<(n%10); return f(n/10); } void main() { int a; cin>>a; cout<<f(a)<<endl; }

武夷山市19364581520: C++编程,输入一个整数,将各位数字反序输出. -
寸类富马: #include void ReverserPrint(long n) { std::cout << n%10; if(n >= 10) ReverserPrint(n / 10); } int main() { long n = 0; std::cin >> n; ReverserPrint(n); return 0; }

武夷山市19364581520: 用C++编写:输入一个字符串,将其逆序后输出.... -
寸类富马: #include <iostream>#include <cstring> using namespace std; int main() { char s[255]; int l; cin >> s; l = strlen(s); char * p, *q, t; p = s; q = s + l - 1; while (p < q) { t = *p; *(p++) = *q; *(q--) = t;} cout << s; } 测试通过

武夷山市19364581520: C++,输入一个五位以内的数,然后顺序、逆序输出各个位的数,用C++来做 -
寸类富马: 展开全部#include using namespace std; int main() { char num[6]; int len; cout<cin>>num; len=strlen(num); if(len>5) { cout<exit(0); } for(int i=0;i{ if(num[i]'9') { cout<exit(0); } cout<for(int i=0;i{ cout<} cout<for(int i=len-1;i>=0;i--) { cout<} cout<system("pause"); return 0; }

武夷山市19364581520: c++输入一数字,逆序输出 -
寸类富马: 按你的思路 首先,写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;

武夷山市19364581520: c++中任意输入一个数,把它的位数倒过来 -
寸类富马: #includeint main() {int a,b; cin>>a; while(a!=0) {b=a%10; cout< a=a/10; } return 0; }

武夷山市19364581520: C++中如何输入一些数字然后反序输出
寸类富马: 你上面这个子程序貌似是判断反序之后的数字是否跟原数字相等吧其实while(i) { m=m*10+i%10; i=i/10 ; }这段代码就是在做反序的工作了如果有不懂的 还可以继续追问我

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网