一道c语言题目,求大神解答~~~

2025-03-03 05:53:52
推荐回答(5个)
回答1:

先贴效果:

请输入一个不多于5位的正整数:
25879
该数是 5 位数,正序是 25879 ,逆序是 97852

再贴代码:
#include "stdio.h"
#include "conio.h"
main()
{
int x=0,y=0,old;
int count=0;
printf("请输入一个不多于5位的正整数:\n");
scanf("%d",&x);
if(x<0||x>=100000)
{
printf("对不起,您输入的数不符合要求!\n");
}
else
{
old=x;
while(x>0)
{
count++;
y=y*10+(x%10);
x=x/10;
}
printf(" 该数是 %d 位数,正序是 %d ,逆序是 %d \n",count,old,y);
}
getch();
}

思路:
while(x>0)
{
printf("%d",x%10);
x=x/10;
}
把一个数 每次除10取余,就得到个位了。
再把这个数除10(整除),就缩小为原来的10分之一了。在此处理就得到十位了。依次循环
直到为0结束!

为了按你的顺序打印出来,我就特别处理了下。用old记录原来输入的x,y记录新的数

好运!

回答2:

#include "stdio.h"//
#include "string.h"//
void main(void){
char a[6],i;
printf("Type an integer(<6 long)...\nn=");
gets(a);
printf("It is %d of long.\n",strlen(a));
printf("Positive sequence output is: ");
for(i=0;a[i];printf("%c ",a[i++]));
printf("\n");
printf("Reverse sequence output is: ");
strrev(a);
for(i=0;a[i];printf("%c ",a[i++]));
printf("\n");
}

回答3:

#include
int main()
{
int num=43453;
int a=0;
int i;
int digit=0; //位数
while (num)
{
a=num%10; //求余数
num=num/10;
printf("%d ",a);
digit++;
}
printf("%d",digit);
return 0;
}

回答4:

#include
void main()
{
int n,i,w,a[6];//建立记录位数的w以及存储每位数的数组a
scanf("%d",&n);//输入该数
if(n>=0)//判断该数为几位数
w=1;
if(n>=10)
w=2;
if(n>=100)
w=3;
if(n>=1000)
w=4;
if(n>=10000)
w=5;
printf("%d\n",w);//输出位数
for(i=1;i<=5;i++)
{
a[i]=n/pow(10,5-i);//对n取整,用数组记录该位数的数字
n=n-a[i]*pow(10,5-i);//取该数剩下大小
}
for(i=1;i<=5;i++)//正序输出(因为之前取整是按5位数取整,如果该数小于5位,则取整出现0)
if(a[i]!=0) printf("%d",a[i]);
for(i=5;i>=1;i--)//逆序输出
if(a[i]!=0) printf("%d",a[i]);
}

回答5:

这个你可以输入一个string的类型