C语言中任意输入一个整数 编一个程序输出整数长度 能不能有解法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中任意输入一个整数 编一个程序输出整数长度 能不能有解法相关的知识,希望对你有一定的参考价值。

可以用sprintf(str, "%d", num);将数字输出为字符串,再用strlen(str)检查其长度:

int nulen(int num)

char str[10];
sprintf(str, "%d", num);

return strlen(str);

参考技术A #include<stdio.h>
int main()

int a,i,j;
scanf("%d",&a);
for(i=1,j=0;;i=i*10)

if(a==0)

printf("共有1位\n");
break;

else

if(a/i==0)

printf("共有%d位\n",j);
break;

j++;


return 0;


这样也可以看它的长度是多少
参考技术B 如果没有其他要求,你可以把输入的整数当字符串看待,然后一个函数就可以搞定了strlen追问

这是非主函数的程序 可以把数字转化成字符串吗?

追答

如果已知输入的参数是int 类型,不用考虑超大的正整数溢出之类,那么可以:
1、偷懒的法子:简单地用个itoa之类的函数转化成字符串,然后strlen搞定
2、自己实现:用个for循环,除以10,一直到等于0 为止,记录下循环次数就是长度

C语言。编写一个程序,输入一个二进制的字符串(长度不超过32),然后计算出相应的十进制整数,并打印。

编写一个程序,输入一个二进制的字符串(长度不超过32),然后计算出相应的十进制整数,并把它打印出来。
  输入格式:输入为一个字符串,每个字符都是’0’或’1’,字符串的长度不超过32。
  输出格式:输出一个整数。
  输入输出样例
  输入样例:
  1101
  输出样例:
  13
我的程序:
#include <stdio.h>
#include <string.h>
int main()

char data[33];
int dota[33];
int i, j, num, len;
gets(data);
len = strlen(data);
for (i = 0; i <= len; i++)


if (data[i] == '1')

dota[i] = (int)data[i] -48;

else if (data[i] == '0')

dota[i] = (int)data[i] - 48;


num = dota[0];
for (j = 1; j <= len; j++)

num = num * 2 + (int)dota[j];

printf("%d", num);


在学数组。请问哪里错了?
有什么简单的方法吗?

参考技术A #include <stdio.h>
#include <string.h>
int main()

char data[33];
int dota[33];
int i, j, num, len;
gets(data);
len = strlen(data);
for (i = 0; i <= len; i++)

dota[i] = (int)data[i] -'0';

num = dota[0];
for (j = 1; j < len; j++)

num = num * 2 + (int)dota[j];

printf("%d\n", num);

//改了一下,自己看吧!不明可以问的!本回答被提问者采纳

以上是关于C语言中任意输入一个整数 编一个程序输出整数长度 能不能有解法的主要内容,如果未能解决你的问题,请参考以下文章

C语言任意输入一个有五位数字的正整数,逆序输出每一数位上的数字 如输入12345 输出5 4 3 2 1

Java语言,编写一个程序能将用户输入的个任意长度的整数,求出各个位上的数,并逆序输出。

C语言:任意输入一个三位整数,然后逆序输出。如123变为321。

c编程任意输入一个整数,要求计算并输出此整数的各位数字之和。如:231的各位之和是2+3+1。

JAVA程序题:任意输入一个正整数,正序输出它的每一位,用循环语句怎么写啊?谢谢(急)

c语言,任意输入一个五位正整数,逆序输出每一位上的数