
一个C语言程序问题(高分)
使用If语句的嵌套和switch给定一个不多于5位的正整数,要求:(1)求它是几位数;(2)分别打印出每一位数字;(3)按逆序打印出各位数字。例如原数为321,应输出12...
使用If语句的嵌套 和 switch
给定一个不多于5位的正整数,要求:(1)求它是几位数;(2)分别打印出每一位数字;(3)按逆序打印出各位数字。例如原数为321,应输出123
这个题目的解题详细思路是什么
有源代码的话 请写出程序,并加上注释
感谢了!
TC2.0环境下运行 展开
给定一个不多于5位的正整数,要求:(1)求它是几位数;(2)分别打印出每一位数字;(3)按逆序打印出各位数字。例如原数为321,应输出123
这个题目的解题详细思路是什么
有源代码的话 请写出程序,并加上注释
感谢了!
TC2.0环境下运行 展开
5个回答
展开全部
提供一个思路,这个是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() );
}
/// <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() );
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
直接上代码了。
#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);
}
#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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;
}
用不同的方法给你做了一遍
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;
}
用不同的方法给你做了一遍
参考资料: 自己写的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
晕.....写完了才发现“使用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;
}
#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;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
很简单,主要是%和/的运用,
如果原数A=45464;
1.S=A%10;-->打印S;
2.A=A/10;
重复1.2直到A=0;
如果原数A=45464;
1.S=A%10;-->打印S;
2.A=A/10;
重复1.2直到A=0;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询