一个C语言程序问题(高分)

使用If语句的嵌套和switch给定一个不多于5位的正整数,要求:(1)求它是几位数;(2)分别打印出每一位数字;(3)按逆序打印出各位数字。例如原数为321,应输出12... 使用If语句的嵌套 和 switch

给定一个不多于5位的正整数,要求:(1)求它是几位数;(2)分别打印出每一位数字;(3)按逆序打印出各位数字。例如原数为321,应输出123

这个题目的解题详细思路是什么

有源代码的话 请写出程序,并加上注释

感谢了!
TC2.0环境下运行
展开
 我来答
linux7985
2008-09-24 · TA获得超过1231个赞
知道小有建树答主
回答量:501
采纳率:0%
帮助的人:463万
展开全部
提供一个思路,这个是C#的,和C其实也差不了多少,看一下

/// <summary>
/// 堆栈
/// </summary>
private Stack<int> Intstack = new Stack<int>( 5 );

public void DtoD( int iNum )
{
Intstack.Push( iNum % 10 ); // 余数入栈
int d = iNum / 10;
if ( d != 0 )
DtoD( d ); // 求下一个十进制位

return;
}

//下面是调用程序
public static void Main()
{
Intstack.Clear();
DtoB( 11 );
StringBuilder s = new StringBuilder();
MessageBox.Show( "它是" + Intstack.Count.ToString() + "位数!" );
while ( Intstack.Count != 0 )
{
int t = Intstack.Pop();
MessageBox.Show( "分别打印出每一位数字:" + t.ToString() );
s.Append( 0, t.ToString() ); // 从堆栈中取出所有的十进制位,按逆序存放
}

MessageBox.Show( "按逆序打印出各位数字:" + s.ToString() );
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
高金山
2008-09-25 · TA获得超过1万个赞
知道大有可为答主
回答量:4101
采纳率:0%
帮助的人:1992万
展开全部
直接上代码了。

#include <stdio.h>

//使用If语句的嵌套 和 switch
int func1(int n)
{
int m;

if(n>99999)
{
m=0;
}
else if(n>9999)
{
m=5;
}
else if(n>999)
{
m=4;
}
else if(n>99)
{
m=3;
}
else if(n>9)
{
m=2;
}
else if(n>0)
{
m=1;
}
else
{
m=0;
}
switch(m)
{
case 0:
printf("Input ERROR!\n");
break;
default:
printf("It is %d int.\n",m);
break;
}
return m;
}

void func2(int n,int m)
{
printf("Its every digit is:\n");
while(m>0)
{
int t=1,mt=m-1;

while(mt>0)
{
t=t*10;
mt--;
}
printf("%d ",n/t);
n=n%t;
m--;
}
printf("\n");
}

void func3(int n)
{
printf("Its every digit in ob-order is:\n");
while(n!=0)
{
printf("%d ",n%10);
n=n/10;
}
printf("\n");
}

void main()
{
int n,m;

printf("input a int:");
scanf("%d",&n);
m=func1(n);
func2(n,m);
func3(n);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
无文人18
2008-09-25 · TA获得超过501个赞
知道小有建树答主
回答量:429
采纳率:0%
帮助的人:487万
展开全部
#include <stdio.h>

int digit(int n) //(1)
{
int i = 1; //record digit
if (n < 0)
{
n = -n;
}

if (n == 0)
{
i = 0;
return i;
}
else if (0 < n && n < 10)
{
return i;
}
else
{
while ((n/10) != 0)
{
i++;
n /= 10;
}
return i;
}
}

void PrintDigit(int n,int d) //(2),(3)
{
if (d == 0)
{
printf("the number is 0\n");
}
int i;
int flag = 0; //record +/-

if (n < 0)
{
n = -n;
flag = 1;
}
char a[5];

sprintf(a,"%d",n);

if (flag == 1)
{
printf("This is a negative number\n");
}
printf("before swap\n");
for (i = 0; i < d; i++) //(2)
{
printf("%c\n",a[i]);
}

printf("\nafter swap\n");
while(n != 0) //(3)
{
printf("%d\n",n%10);
n = n/10;
}
}

int main(void)
{
int a = -4432;
int d;
d = digit(a);
printf("digit = %d\n",d);
PrintDigit(a,d);
system("pause");
return 0;
}
用不同的方法给你做了一遍

参考资料: 自己写的

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
totozii
2008-09-25 · TA获得超过145个赞
知道小有建树答主
回答量:152
采纳率:0%
帮助的人:0
展开全部
晕.....写完了才发现“使用If语句的嵌套 和 switch”

#include <stdio.h>
#include <string.h>

int main()
{
char a[256];
int len,i;
scanf("%s",a);
len = strlen(a);
printf("位数:%d\n",len);
for(i = 0 ; i < len ; i++)printf("%c",a[i]);
printf("\n");
for(i = len-1 ; i >= 0 ; i--)printf("%c",a[i]);
return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
川大治安管理队
2008-09-24 · 超过12用户采纳过TA的回答
知道答主
回答量:72
采纳率:0%
帮助的人:0
展开全部
很简单,主要是%和/的运用,
如果原数A=45464;
1.S=A%10;-->打印S;
2.A=A/10;
重复1.2直到A=0;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式