当前位置: 代码迷 >> C语言 >> 有一道题,大家帮忙看看呀
  详细解决方案

有一道题,大家帮忙看看呀

热度:227   发布时间:2005-10-22 15:55:00.0
有一道题,大家帮忙看看呀
各位帮帮忙呀,小弟谢了先。题目如下:
给一个不多于5位的正整数,要求:(1)求出它是几位数;(2)分别打印每一位数字;(3)按逆序打印出各位数字,例如原数为321,应输出123。
搜索更多相关的解决方案: 打印  321  正整数  

----------------解决方案--------------------------------------------------------
我自己做的第一问,可是没法运行呀,请高手指点呀!
main()
{int x,y;
scanf("%d",&x);
switch(x)
{case'0<=x&&x<=9':printf("1");break;
case'10<=x&&x<=99':printf("2");break;
case'100<=x&&x<=999':printf("3");break;
case'1000<=x&&x<=9999':printf("4");break;
case'10000<=x&&x<=99999':printf("5");break;
default:printf("error\n");
}
}
----------------解决方案--------------------------------------------------------
case后面好像应该是常量表达式
----------------解决方案--------------------------------------------------------
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void main()
{int x;
char s[100];
scanf("%d",&x);
itoa(x,s,10);
int len = strlen(s);
printf("输入的是%d位数\n",len);
}
第一题!
----------------解决方案--------------------------------------------------------
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void main()
{int x;
char s[3];
scanf("%d",&x);
itoa(x,s,10);
int len = strlen(s);
printf("输入的是%d位数\n",len);
for(int i=0;i<len;i++)
printf("第%d位是%c\n",i+1,s[i]);
printf("逆续为:  ");
for(i=len-1;i>=0;i--)
printf("%c",s[i]);
printf("\n");
}
呵呵~做完了,刚学c一个月,还请多多指教!
----------------解决方案--------------------------------------------------------
你用的是C++吧!我用的是TC没法运行你编的那个程序呀!
----------------解决方案--------------------------------------------------------
对呀!TC好象没有头文件"string.h".
----------------解决方案--------------------------------------------------------
5楼的是标准的c语言。其中string.h用的是strlen函数,求字符串长度。stdlib.h用的是itoa()函数。这个函数的定义是itoa(int, char *, int),3个参数分别表示要转换的数字,转换后的字符串,和要转换数字的进制,必须在2-36间取值。其实这个问题用这个函数是最合适的,数字变成字符串之后求位数和逆序就很简单了。如果不想用这个函数,也可以用ASCII码+'0'的方法转换,就是麻烦一点
----------------解决方案--------------------------------------------------------
不用itoa()和strlen()函数可以这么做
#include <stdio.h>
void main()
{
int x,i,j=0,k;
char s[5];
scanf("%d",&x);
for(i=0;i<5,x>0;i++)
{
  s[i]=x%10+'0';
  x/=10;
  j++;
}
printf("输入的是%d位数\n",j);
for(i=j-1,k=1;i>=0;i--,k++)
  printf("第%d位是%c\n",k,s[i]);
  printf("逆续为:  ");
for(i=0;i<j;i++)
  printf("%c",s[i]);
printf("\n");
}
----------------解决方案--------------------------------------------------------
我也是从其他例子上看到的. 觉得还算可行!我用的是c++的编译器!
----------------解决方案--------------------------------------------------------
  相关解决方案