这个题该怎么写?

编一程序从键盘里输入一个正整数,要求输出经过逆序转换后的正整数.例如输入整数3276,输出则为6723.... 编一程序从键盘里输入一个正整数,要求输出经过逆序转换后的正整数.例如输入整数3276,输出则为6723. 展开
 我来答
白亚明
2007-08-02
知道答主
回答量:37
采纳率:0%
帮助的人:22.6万
展开全部
gufengboy 的方法是简单的,但他处理不了进来的字符的错误,人家题目要求的正整数。

实现办法有很多..很简单的题.
建议这么典型的问题用栈来解决.因为栈的最大的特点就体现在先进后出.
先入栈再出栈就可以了.顺序就反了.
详细的程序清单可以找本数据结构.里面都有的
回答者:手链魔咒 - 助理 二级 7-30 22:08

#include<iostream>
#include<string>
using namespace std;

int main()
{
string str;
string str1;

cin>>str;
for(int i=str.size()-1; i>=0; i--)
{
str1+=str[i];
}

cout<<str1;
}

参考资料:http://zhidao.baidu.com/question/17875729.html
回答者:狂风掠影 - 助理 二级 7-30 22:13

#include <stdio.h>
int b(int a) //转换函数
{ while (!(a%10)) a=a/10;//将反转后开头的0删除,如果不需要删除无意义的0,请去掉这行语句。

while (a)
{
printf("%d",a%10);
a=a/10;
}
}

void main()
{
b(3211010); //对函数进行测试

}
回答者: WXD11011 - 副总裁 十级 7-30 22:15

简单啊。用c语言
#include<stdio.h>
#include<string.h>
main()
{
char c[1000];
int n,i;
scanf("%s",c);
n=strlen(c);
for (i=n-1;i>=0;i--)
{
printf("%c",c[i]);
}
getch();
}
这是用c语言写的,用的是数组。简单明了。
回答者:nimitz_007 - 童生 一级 7-30 23:06

用了字符串数组+函数来实现,这样就能实现任何字符+字母+空格等情况下就行反序排列了。

#include <iostream>

void str(char b[])
{
int i,j,tmp;
j=1;
for (i=0;i<(strlen(b)-1)/2;i++)
{
tmp=b[i];
b[i]=b[strlen(b)-j];
b[strlen(b)-j]=tmp;
j++;
}
}

void main()
{
char a[256];

gets(a);
str(a);
printf("%s\n",a);
}
回答者:bbb_orz - 助理 二级 7-30 23:09

最简单的:
#include<stdio.h>
void main()
{
char num[20];
int i=0;
printf("请输入一串数字:\n");
do
{
num[i]=getchar();
if(isdigit(num[i]))//如果输入的是数字,则处理,否则跳过
i++;
}while(num[i-1]!='\n');
for(i--;i>=0;i--) //反向输出
printf("%c",num[i]);
putchar('\n');
}

参考资料: 参与gufengboy的答案

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhaozhenzho
2007-08-04 · TA获得超过136个赞
知道答主
回答量:69
采纳率:0%
帮助的人:26.3万
展开全部
应该是输入一个整数,才符合题意
我做的:
#include <stdio.h>

main(){
int i,temp,b,n=0,sf=10,j,a[10],flag=1;;
printf("请输入一个正整数:");
scanf("%d",&b);
temp=b;

//循环得到整数的位数
while((temp=temp/10)>0)
n++;

n=n+1;

//进行转换
for(i=0;i<n;i++){
sf=10;
//根据规律
for(j=0;j<i;j++){
sf=sf*10;
}

temp=b%sf;

//当这位不是第一位也不是最高位时
if(i!=0&&b/sf!=0)
temp=temp/(sf/10);

//当这位是最高位时,得到最高位
if(b/sf==0)
temp=b/(sf/10);

//将数字赋给数组,n-i-1是为了实现逆转
a[n-i-1]=temp;

//判断是不是正整数
if(temp<'0'||temp>'9'){
printf("不是正整数\n");
flag=0;
break;
}
}
//打印
if(flag==1)
for(i=n-1;i>=0;i--)
printf("%d",a[i]);

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nimitz_007
2007-07-30 · TA获得超过207个赞
知道答主
回答量:60
采纳率:0%
帮助的人:42.9万
展开全部
简单啊。用c语言
#include<stdio.h>
#include<string.h>
main()
{
char c[1000];
int n,i;
scanf("%s",c);
n=strlen(c);
for (i=n-1;i>=0;i--)
{
printf("%c",c[i]);
}
getch();
}
这是用c语言写的,用的是数组。简单明了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友3c91970
2007-07-30 · 超过22用户采纳过TA的回答
知道答主
回答量:100
采纳率:0%
帮助的人:0
展开全部
实现办法有很多..很简单的题.
建议这么典型的问题用栈来解决.因为栈的最大的特点就体现在先进后出.
先入栈再出栈就可以了.顺序就反了.
详细的程序清单可以找本数据结构.里面都有的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bbb_orz
2007-07-30
知道答主
回答量:10
采纳率:0%
帮助的人:0
展开全部
用了字符串数组+函数来实现,这样就能实现任何字符+字母+空格等情况下就行反序排列了。

#include <iostream>

void str(char b[])
{
int i,j,tmp;
j=1;
for (i=0;i<(strlen(b)-1)/2;i++)
{
tmp=b[i];
b[i]=b[strlen(b)-j];
b[strlen(b)-j]=tmp;
j++;
}
}

void main()
{
char a[256];

gets(a);
str(a);
printf("%s\n",a);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(9)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式