1、拆解整数

1、题目:拆解整数

编程要求:

  1. 输入:从键盘1个数(多次测试,输入的数的位数为:1位,2位,3位,4位,5位)
  2. 输出:如果是负数输出error,否则分别输出(1)这个数的位数(2)正序输出该数(3)逆序输出该数
  3. :输入 325,输出 523
#include<stdio.h>
#include<math.h>
int main(){
	int n, m, p, count=0;
	scanf("%d", &n);
	m=n;
	p=n;						//n、m、p均为输入的数,count记录位数

//一、求出该数的位数,用n
	if(n<0){
		printf("error\n");
	}else{
		do{
			count++;
			n = n/10;
		}while(n!=0);
	printf("位数为%d\n", count);
	
//二、正序输出,用m
	printf("正序输出为:");
	int divide;
	divide = pow(10,count-1);	//以除法得m的最高位数字,需要先确定除数的大小,如:321/100 = 3
	do{
		printf("%d", m/divide);
		m = m%divide;			//m去掉它的最高位 
		divide = divide/10;
		if(divide!=0){			//该if语句可有可无。有,则可避免多输出结尾的一个空格
			printf(" ");
		}
	}while(divide!=0);			//******正序输出则不能用m!=0做判据,否则当输入100、10等数时,输出是不合预期的******
	printf("\n");
	
//三、逆序输出,用p
	printf("逆序输出为:");
	do{
		printf("%d", p%10);
		p = p/10;
		if(p!=0){
			printf(" ");
		}
	}while(p!=0);				//******逆序输出则可以用p!=0做判据******
	printf("\n");
	
	return 0;
}

说明:注释中,带星号的部分为注意事项

发布了16 篇原创文章 · 获赞 0 · 访问量 335

猜你喜欢

转载自blog.csdn.net/NAU_LHT/article/details/104144181