判断位数并输出每位的数字

判断位数并输出每位的数字

例:给一个正整数,要求:
(1)求出它是几位数;
(2)分别输出每一位数字;
(3)按逆序输出各位数字,例如原数为321,应输出123。

解答如下:

头文件

 #include<stdio.h> 
 #include<math.h>
 int GetFigures(int n);//函数声明

统计n是个几位数字

        int GetFigures(int n)
        {
        	if(n == 0)
        	{
        		return 1;
        	}
        	int count = 0;
        	do
        	{
        		count++;
        		n /= 10;//n = n /10;.丢掉个位数字
        	}while(n != 0);
        	return count;
        }

顺序输出每一位数字

 void PrintOrder(int n)
    {
       //得到n是几位数
    	int c = GetFigures(n);
       //计算除以和取余的数字
    	int power = (int)pow(10.0,c-1);
        //循环输出每位数字
    	do
    	{
    		printf("%d ",n/power);//输出高位
    		n %= power;//丢弃高位 
    		power /= 10;
    	}while(n != 0);
    	printf("\n");
    }

逆序输出n的每一位

 void PrintReverse(int n)
        {
        	if(n < 0)
        	{
        		printf("-");
        		n = -n;
        	}
        	do
        	{
        		printf("%d ",n%10);//得到个位数字
        		n /= 10; //丢弃个位
        	}while(n != 0);
        	printf("\n");
        }

主函数及测试结果

 int main()
        {
        	PrintOrder(123456789);
        	PrintOrder(0);
        	PrintOrder(1);
        	PrintReverse(-123456789);
        	PrintReverse(123456789);
        	PrintReverse(-1);
        	PrintReverse(-123456789);
        	printf("%d\n",GetFigures(123456789));
        	printf("%d\n",GetFigures(-123456789));
        	printf("%d\n",GetFigures(-1));
        	return 0;
        } 

在这里插入图片描述

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用以下代码实现: num = input("请输入个位数不大于10的正整数:") for i in range(len(num)): if i == len(num) - 1: print(num[i]) else: print(num[i] + ",", end="") 这段代码首先通过input函数获取用户输入的正整数,然后使用for循环遍历每一位数字。在循环中,使用if语句判断当前数字是否为最后一位,如果是,则直接输出数字;否则,在数字后面加上逗号输出,并使用end参数指定输出不换行。这样就可以实现每位数字之间用逗号分隔的效果。 ### 回答2: 本题要求输入个位数不大于10的正整数,并输出每位数字每位数字之间用逗号分隔。我们可以利用字符数组和循环的方法进行求解。 首先,我们需要用scanf函数从键盘读入一个整数n,该数的位数不大于10。接着,我们将该整数转化为一个字符数组。这可以通过sprintf函数来实现。该函数的用法为: sprintf(str, "%d", n); 其中,str为目标字符串,"%d"表示要转换的格式为10进制整数,n为要转换的数字。执行该语句后,我们便得到了一个字符数组str,该数组的每个元素都是该整数的每一位数字。 接下来,我们需要循环遍历该字符数组,并输出每个字符。由于字符数组中的每个元素都是ASCII码字符,我们需要将其转化为相应的数字。这可以通过字符减去字符‘0’来实现。例如,字符‘3’减去字符‘0’的结果为3。 在输出每个数字之前,我们需要判断其是否为最后一个数字。如果不是最后一个数字,我们需要在数字后面加上一个逗号。如果是最后一个数字,则不需要添加逗号。 最后,我们需要记得输出换行符来结束该行输出。完整的代码如下所示: ```c #include <stdio.h> int main() { int n; char str[20]; // 定义一个字符数组,其大小为10位数字加上逗号的总数 scanf("%d", &n); sprintf(str, "%d", n); int len = strlen(str); for (int i = 0; i < len; i++) { int digit = str[i] - '0'; // 将字符转化为数字 printf("%d", digit); if (i != len - 1) { // 判断是否为最后一个数字 printf(","); } } printf("\n"); // 输出换行符 return 0; } ``` 当输入为1234时,该程序的输出为1,2,3,4。 ### 回答3: 对于这个问题,我们可以采取以下的思路进行解答。 首先,我们可以通过输入函数获取用户输入的正整数,然后将其转化为字符串类型,方便我们进行遍历操作。接着,我们遍历这个字符串,对于每个字符,我们将其转化为整型,并将其输出到一个列表中。最后,我们将这个列表用逗号进行分隔并输出。 以下是完整的代码实现: ```python num = input("请输入个位数不大于10的正整数:") digits = [] for char in num: digit = int(char) digits.append(digit) output = ','.join(str(d) for d in digits) print(output) ``` 通过以上代码,我们可以输入一个正整数,然后输出每位数字,以逗号分隔的字符串。例如,对于输入的 123456789,输出为 1,2,3,4,5,6,7,8,9。 这个问题比较简单,但也涉及到了字符串和列表的操作。对于初学者来说,它是一个很好的练习题,可以帮助我们深入理解字符串和列表的用法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值