c语言实现输出一个数的每一位

比方输入1234。在屏幕上打印出1 2 3 4

代码展示:

方法一:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>
//实现打印一个数的每一位
int main()
{
	int num = 1234;
	int count = 0;//用来保存数字的位数
	int tmp = num;
	int y = 0;
	while (tmp)
	{
		++count;
		tmp /= 10;
	}
	while (num)
	{
		printf("%d ",y = num/pow(10,count-1));
		num = num - y * pow(10,count - 1);
		--count;
	}
	system("pause");
	return 0;
}

分析:对于给定的数或者是输入的数,从高位到低位一次输出~第一个while循环计算出了数据的位数。第2个while循环用于打印每个位,假设我们未定义tmp变量。第一个while运行完。给定数字变成0。第二个while就进不去。所以。设定新的变量保存一份数据。

第2个while是怎样实现打印的呢?以num = 1234为例。

     num = 1234,打印y = 1234/(10^3) = 1。  num = num - 1*1000 = 234;count = 4,。

    num = 234。打印y = 234/100 = 2;num = num - 2*100 = 34;

   num = 34。......

   num = 4,......

   num = 0,退出循环~

方法二:

int main()
{
	char arr[5];
	int num = 1234;
	int i = 0;
	while (num)
	{
		arr[i] = num % 10 + '0';
		num /= 10;
		i++;
	}
	while (i >= 1)
	{
		printf("%c ",arr[i-1]);
		i--;
	}
	system("pause");
	return 0;
}

分析:利用字符数组存储每一位,比用整型数组存储更节省空间。以num = 1234为例。

第一个while

      num= 1234,arr[0] = ‘4‘;i = 1;

      num = 234,   arr[1] = ‘3‘;i = 2;

      num = 34,    arr[2] = ‘2‘;i = 3;

      num = 4,      arr[3] = ‘1‘;i = 4;

      num = 0,退出循环

第2个while循环,arr[3] = arr[4-1];依次输出~

方法三:递归实现

void print_num(int n)
{
	if (n > 9)
		print_num(n/10);
	printf("%d ",n % 10);
}
int main()
{
	print_num(1234);
	system("pause");
	return 0;
}

注:最后两段代码都未引入头文件。在每段代码中。測试数据我都是直接给出,当然,我们也能够键盘输入測试数据~~

时间: 2024-10-12 17:08:39

c语言实现输出一个数的每一位的相关文章

【c语言】求两个数中不同的位的个数

// 求两个数中不同的位的个数 #include <stdio.h> int dcount(int a,int b) { int count = 0; int num = a ^ b; while (num) { count++; num = num & (num - 1); } return count; } int main() { printf("%d\n", dcount(3, 5)); return 0; } 版权声明:本文为博主原创文章,未经博主允许不得

输出一个数二进制的所有位及奇偶位

首先我们看一下输出一个整数二进制的所有位. 如果要输出它的所有位,从最高位开始每次移动i个长度,并且每一位都与1. 代码: #include <stdio.h> int main() { int num = 9; int i; for (i = 31; i>=0;i--) { printf("%d",((num>>i)&1)); } return 0; } 同理奇数位从它的最高位开始,每次移动i个长度并且i=i-2,每一位都与1,.偶数位从第二为开

利用c语言编写程序输出一个数的每一位(多种方法)

第一种: #include <stdio.h> int main() { int zheng,i; int m=0; int yu[10]; int count=0; scanf("%d",&m); zheng=m; for(i=0;i<10;i++) if (zheng!=0) { yu[i]=zheng%10; zheng=zheng/10; count++; } for(i=0;i<count;i++) { printf("%d &quo

C语言编程 输出一个数二进制位模式从左到右翻转后的值

eg:在32位机器上25这个值包含下列各位:00000000000000000000000000011001翻转后:(2550136832)10011000000000000000000000000000程序结果返回:2550136832 代码核心思想是将原来二进制序列最后一位看作反转后第一位,将原来二进制序列第一位看作反转后最后一位进行重新计算 比如15的2进制为 --0000 1111计算方法为12^1 + 12^2 + 12^3 + 12^4反转后为1111 0000--计算方法为12^3

【C语言】输出一个整数的每一位

#include<stdio.h> int main() { int n; printf("请输入一个五位整数:");    // 在此输入五位数,若有需要,可更改 scanf("%d",&n); printf("%d %d %d %d %d\n",n/10000,n%10000/1000,n%1000/100,n%100/10,n%10); return 0; }

C语言:输入一个数,输出比这个数小的所有素数,并求出个数。

//C语言:输入一个数,输出比这个数小的所有素数,并求出个数. 1 #include<conio.h> 2 #include<stdio.h> 3 #include<stdlib.h> 4 #define MAX 100 5 int fun(int lim, int aa[MAX]) 6 { 7 int i, j,k=0; 8 for (i = 2; i <= lim; i++)//罗列每个数 9 { 10 for (j = 2; j < i; j++)//

C语言格式化输出小结

函数说明 在gcc编程中,我们常用到的字符格式化输出函数是printf的,实际上gcc继承了C语言处理字符具有强大功能的风格,它提供了一系列的格式化输出函数,主要存在两个库函数文件stdio.h/ stdarg.h中,具体函数如下: #include <stdio.h> printf, int printf(const char *format, ...); fprintf, int fprintf(FILE *stream, const char *format, ...); sprintf

输入一个整数,判断其是否是2^n,是就输出这个数,不是就输出和它最接近的为2^n的那个整数。

输入一个整数,判断其是否是2^n,若是,输出这 //个数,若不是,输出和它最接近的为2^n的那个整数. 附加源代码1: #include<stdio.h> #include<stdlib.h> #include<math.h> int main() { int input;//键盘输入一个整数input int i,j;//i,j待会儿存放input与左边和右边的为2^n的差值 int m,n;//保存左边,右边的与inout最接近的2^n printf("请

从小到大输出三个数 练习

import java.util.*; public class Min_To_Max { static int a,b,c,d; /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("将从小到大输出三个数"); System.out.println("请输入第一个数:"); Scanne