注册 登录
编程论坛 新人交流区

继续一个C语言的问题

极限堂 发布于 2007-10-16 17:17, 538 次点击
写一道程序,用户输入五位数,如12345输出54321
提示: n1=n%10; n2=(n%100-n1)/10; n3=(n%1000-n2*10-n1)/100; n4=(n%10000-n3*100-n2*10-n1)/100; n5=(n-1000*n4-100*n3-10*n2-n1)/10000;


麻烦谁能告我这个该怎么写啊
我一点头绪都没有
17 回复
#2
dingpin2007-10-16 20:01

我来搞定....
马上写代码给你,稍等...

#3
zmzlx2007-10-16 20:15
#include<stdio.h>
int main(void)
{
int num;
int n1,n2,n3,n4,n5,change;
printf("please enter an integer for processing:\n");
scanf("%d",&num);
n1=num/10000;
change=num%10000;
n2=change/1000;
change=change%1000;
n3=change/100;
change=change%100;
n4=change/10;
n5=change%10;
printf("%d%d%d%d%d",n5,n4,n3,n2,n1);
return 0;
}
这只是一个五位的特殊程序,不具有通用性,通过栈或者流应该可以通用处理.
#4
dingpin2007-10-16 20:20

好了,你试试吧!
#include <stdio.h>
void main()
{
int i,n,a[5];//5位数就定义一个能存5个数的就中了,数大了再改
printf("请输入一个五位整数:");
scanf("%d",&n);
if(n>=10000 && n<=99999)
{
for(i=0;i<5;i++)
{
a[i]=n%10;
n=n/10;
}

printf("倒过来排列为:");
for(i=0;i<5;i++)
{
printf("%d",a[i]);
}
printf("\n");
}
else
printf("请输入一个五位的整数!!!\n");

}

#5
playchao2007-10-16 20:34

long re(long int a)
{
long int t;
for(t=0;a>0;a/=10)
{
t=t*10+a%10;
}
return t;
}

#6
jzldf1802007-10-17 09:46
有点意思,分享一下我的思路,不妥之处请指正:
vc6下调试通过:
#include<stdio.h>
#include<math.h>

//获取参数的位数
int countChar(int var)
{
int iCount=0;
do
{
iCount++;
}while((var/(pow(10,iCount))>1));
return iCount;
}

//递归实现数字的逆序输出
double outPut(int var, double iDown, double iUp)
{
if (iDown == 0)
{
return 0;
}
else
{
int myVar = (int)(pow(10.0, iDown - 1.0));
return outPut(var % myVar, iDown-1, iUp+1) + var / myVar * pow(10.0, iUp);
}
}

void main()
{
//测试数据变量
int myInt=12345;
//获取测试数据的长度
int sLength=countChar(myInt);
//输出结果
printf("%d\n",(int)outPut(myInt,sLength,0.0));
}
#7
凡喻2007-10-17 11:26
呵呵 学习了
#8
lmy5202007-10-17 11:52
这里果然很多热心的高手
#9
hjlwlyhjl2007-10-17 12:25
方法很多,再研究一下哪个好,哪个劣,也就是所谓的时间和空间复杂度!
#10
beiwei11212007-10-17 22:53
恩 看来 这个论坛 没来 错
#11
yuyuysrs19852007-10-17 23:13
我看C语言教程,好像没那么复杂吧!
#12
mawe1102007-10-18 02:18
呵呵 果然是新手问题...
#13
zxc19982007-10-18 06:57

用递归实现:

long reverse(long a)
{
printf ("%d",a%10);
if (a>10) reverse(a/10);
}

大家可以试一下。

#14
zmzlx2007-10-18 08:13
#include<stdio.h>
#include<string.h>
int main(void)
{
char num[100];
scanf("%s",&num);
int k=strlen(num);
for(int i=k;i>=0;i--)
{
printf("%c",num[i]);
}
return 0;
}
这个应该比较简单易懂了.数组大小呢可以用一个最大数值来定义.
#15
凡喻2007-10-18 09:10
呵呵 来学习哈  高手啊
#16
gaoamining2007-10-18 09:31

#include <stdio.h>

void main()
{
int i,num,temp;

printf("Please enter five bit number:");
scanf("%d",&num);

if(num<0)
{
printf("Number is error!");
}
else
while(num)
{
temp=num%10;
num/=10;
printf("%d",temp);
}
printf("\n");
}

这个程序有功能不管你要几位都可以求

#17
zmzlx2007-10-18 11:19
6 的程序有水平,厉害!
#18
LW8806122007-10-18 14:44
来是没来错了,不过作为C新手的我,一点都不明白
1