c语言怎么将输入一个数输出其位数

Python012

c语言怎么将输入一个数输出其位数,第1张

将它作为字符串读入,测长度即可。

char s[80]

scanf("%s",s)

printf("%d",strlen(s))

例如:输入 -123.987654321

输出 14 (含符号,小数点,数字

若要转 double a 可以用 sscanf(s,"%lf", &a) 输出a: printf("%.9lf",a)

要输出整型数值的每一位数字,关键在于将每一个数字提取出来。

方法有很多,实现方式更是多种多样,以最常见的两种方式举例说明:

一、传统方法,通过除法和模除,取出每一位,并输出。

参考代码如下:

#include<stdio.h>

void output(int n)

{

    int a[10]

    int l=0

    /*

    循环获取每一位的值,并存到数组a中。

    其中l表示已经获取到的位数。

    由于每次获取的是个位n%10,所以存在数组a中的是各个位数的逆序。

    */

    while(n)

    {

        a[l++] = n%10

        n/=10

    }

    //反序输出每一位值。

    while(--l>=0) 

        printf("%d ", a[l]) 

}

int main()

{

    int n

    scanf("%d",&n)//输入n值。

    output(n)//输出各个位。

    return 0

}

二、转为字符串,然后输出字符串各个字符。

由于在C语言中,有很多库函数,比如itoa, sprintf等,都可以很方便的将整数转为字符串,而逐位输出字符串各个字节值是很简单的,所以可以通过转为字符串,再输出的方式输出各个位的值。

参考代码:

#include<stdio.h>

void output(int n)

{

    char a[11]

    int i

    sprintf(a, "%d", n)//转为字符串。

    for(i = 0 a[i] i++)//遍历字符串。

        printf("%c ", a[i])//输出各个位值。

}

int main()

{

    int n

    scanf("%d",&n)//输入n值。

    output(n)//输出各个位。

    return 0

}

1. 使用itoa函数把数转换为字符串类型,在使用strlen函数统计字符串长度。即数字的位数。

2. 例程:

#include <stdio.h>

#include <stdlib.h> // itoa 要使用的头文件

#include <string.h> // strlen 要使用的头文件

void main()

{

 int i, len

 char str[20]

 

 scanf("%d", &i)  // 读入一个数字

 itoa(i, str, 10) // 将该数字转换成字符串类型

 len = strlen(str) /* 计算字符串的长度 [参数1:要转换的数 参数2:转换后存放到的位置 参数3:以十进制转换]*/

 printf("IN Total: %d\n", len)

}