首页 > 试题广场 >

给一个不多于5位的正整数,要求: ①求出它是几位数;

[问答题]

给一个不多于5位的正整数,要求:

①求出它是几位数;

②分别输出每一位数字;

③按逆序输出各位数字,例如原数为321,应输出123.

推荐

#include <stdio.h>

#include <math.h>

int main( )

{

int num,indiv,ten,hundred,thousand,ten_thousand,place;      //分别代表个位,十位,百位,千位,万位和位数

printf(“请输入一个整数(0-99999):”);

scanf("%d",&num);

if(num>9999)

place=5;

else if(num>999)

place=4;

else if(num>99)

place=3;

else if(num>9)

plac=2;

else place=1;

printf("位数:%d\n'",place);

printf(“每位数字为:”);

ten_thousand=num/10000;

thousand=(int(num-ten_thousand*10000)/1000;

hundred=(int)(num-ten_thousand*10000-thousand*1000)/100;

ten=(int)(num-ten thousand*10000-thousand*1000-hundred*100)/10;

indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10);

switch(place)

{case 5:printf("%d,%d,%d%d,%d”,ten_thousand,thousand,hundred,ten,indiv);

printf(“\n反序数字为:");

printf("%d%d%d%d%d\n",indiv,ten,hundred,thousand,ten_thousand);

break;

case 4:printf("%d,%d,%d,%d",thousand,hundred,ten,indiv);

printf("\n反序数字为:");

printf("%d%d%d%d\n",indiv,ten,hundred,thousand);

break;

case 3:printf("%d,%d,%d",hundred,ten,indiv);

printf(“\n反序数字为:");

printf("%d%d%d\n"indiv,ten,hundred);

break;

case 2:printf("%d,%d"ten,indiv);

printf(“\n反序数字为:");

printf("%d%d\n",indiv,ten);

break;

case 1:printf("%d",indiv);

printf("\n反序数字为:");

printf("%dn",indiv);

break;

}

return 0;

}


发表于 2018-03-25 10:50:52 回复(0)
#include<stdio.h>
#include<cstdlib>
int main(){
	int num,d1,d2,d3,d4,d5;
	printf("请输入一个不多于5位的正整数:");
	scanf("%d",&num);
	if(num>99999||num<0){
			printf("输入错误!");
		exit(0);
	}
	d5=num/10000;
	num=num%10000;
	d4=num/1000;
	num=num%1000;
	d3=num/100;
	num=num%100;
	d2=num/10;
	num=num%10;
	d1=num;
	
	if(d5!=0){ 
		printf("该数为5位数\n");
		printf("第5位为%d,第4位为%d,第3位为%d,第2位为%d,第1位为%d",d5,d4,d3,d2,d1);	
		printf("\n逆序为:%d%d%d%d%d",d1,d2,d3,d4,d5);
	}
	else if (d4!=0){ 
		printf("该数为4位数\n");
		printf("第4位为%d,第3位为%d,第2位为%d,第1位为%d",d4,d3,d2,d1);	
		printf("\n逆序为:%d%d%d%d",d1,d2,d3,d4);
	}
	else if(d3!=0){ 
		printf("该数为3位数\n");
		printf("第3位为%d,第2位为%d,第1位为%d",d3,d2,d1);
		printf("\n逆序为:%d%d%d",d1,d2,d3);	
	}
	else if(d2!=0){ 
		printf("该数为2位数\n");
		printf("第2位为%d,第1位为%d",d2,d1);
		printf("\n逆序为:%d%d",d1,d2);	
	}
	else{ 
		printf("该数为1位数\n");
		printf("第1位为%d",d1);	
		printf("\n逆序为:%d",d1);
	}
	return 0;	
}

发表于 2021-01-11 16:48:38 回复(0)
#include <stdio.h>

int main() {
    int x;
    printf("给一个不多于5位的正整数");
    scanf("%d",&x);
    while(1){
        if(x>=100000||x<=0){
            printf("范围错误!请重新输入");
            scanf("%d",&x);
        }else{
            break;
        }
    }
    //判断几位数
    int y = x;
    int sum = 0;
    for(int i = 0;i<y;i++){
        y/=10;
        sum++;
    }
    printf("①你给的数为%d位数\n",sum);
    y = x;
    //每位数
    int digit = 0;
    //结果
    int result = 0;
    while(y>0){
        digit = y%10;
        result = result *10 + digit;
        y/=10;
        printf("②分别输出每一位数字%d\n",digit);
    }
    printf("③按逆序输出数字为%d",result);
    return 0;
}

发表于 2022-09-17 22:56:47 回复(0)
第二三问可以直接用那个数依次除以10取余,得到的就为反序后的数
发表于 2019-03-12 17:11:06 回复(0)