user-0 提问: 超出int型的范围了，不知怎么办，求助

回复:
user: user-1
content: 字符数组保存大整数

user: user-2
content: 引用 13 楼 u014539580 的回复:[quote=引用 10 楼 mujiok2003 的回复:] [quote=引用 8 楼 u014539580 的回复:] [quote=引用 6 楼 mujiok2003 的回复:] 分多次读入。  #include <stdio.h>  int main() {     int n,a=0;     while(scanf("%9d",&n) == 1){      if (n< 0) n = -n;      while(n>0){         if(n%10==1) a++;         n/=10;     }    }     printf("%d",a);           return 0; }   这句话没看懂什么意思  while(scanf("%9d",&n) == 1){[/quote] 最多解析9个字符到n中，这样对12位的大整数， 就分两次处理， 第一次9个数， 第二次3个数。 [/quote]  为什么我运行的时候没有结果呢？[/quote] http://ideone.com/3eTD3Z

user: user-3
content: 看看大数运算，还有long long类型啊

user: user-0
content: 引用 10 楼 mujiok2003 的回复:[quote=引用 8 楼 u014539580 的回复:] [quote=引用 6 楼 mujiok2003 的回复:] 分多次读入。  #include <stdio.h>  int main() {     int n,a=0;     while(scanf("%9d",&n) == 1){      if (n< 0) n = -n;      while(n>0){         if(n%10==1) a++;         n/=10;     }    }     printf("%d",a);           return 0; }   这句话没看懂什么意思  while(scanf("%9d",&n) == 1){[/quote] 最多解析9个字符到n中，这样对12位的大整数， 就分两次处理， 第一次9个数， 第二次3个数。 [/quote]  为什么我运行的时候没有结果呢？

user: user-4
content: 楼主因该帮输入当作字符来看，这样输入10个1也不会溢出来了，你只需要定义一个数组来保存输入进来的字符串几可以了

user: user-5
content: http://blog.csdn.net/yiyefangzhou24/article/details/6819828

user: user-2
content: 引用 8 楼 u014539580 的回复:[quote=引用 6 楼 mujiok2003 的回复:] 分多次读入。  #include <stdio.h>  int main() {     int n,a=0;     while(scanf("%9d",&n) == 1){      if (n< 0) n = -n;      while(n>0){         if(n%10==1) a++;         n/=10;     }    }     printf("%d",a);           return 0; }   这句话没看懂什么意思  while(scanf("%9d",&n) == 1){[/quote] 最多解析9个字符到n中，这样对12位的大整数， 就分两次处理， 第一次9个数， 第二次3个数。

user: user-6
content: 只把输入当成字符串的话可以这样写： #include <stdio.h>  int main() {     int a;     char c;     a=0;     while((c=getchar())!='\n')     {         if(c-'0'==1)         {             a++;         }     }     printf("%d",a);     return 0; }

user: user-0
content: 引用 6 楼 mujiok2003 的回复:分多次读入。  #include <stdio.h>  int main() {     int n,a=0;     while(scanf("%9d",&n) == 1){      if (n< 0) n = -n;      while(n>0){         if(n%10==1) a++;         n/=10;     }    }     printf("%d",a);           return 0; }   这句话没看懂什么意思  while(scanf("%9d",&n) == 1){

user: user-0
content: 引用 1 楼 u012982053 的回复: char chrBigNum[100] ={0}; scanf("%s", chrBigNum); int nLen = strlen(chrBigNum); int nCount = 0; for(int i = 0; i < nLen; i++) 	if(chrBigNum[i] == '1') 		nCount++;  不晓得符合不。 如果数是给定的就直接char chrBigNum[100] ="xxxxxx"; 厉害，没想过把它当字符看，谢谢了

user: user-2
content: 分多次读入。  #include <stdio.h>  int main() {     int n,a=0;     while(scanf("%9d",&n) == 1){      if (n< 0) n = -n;      while(n>0){         if(n%10==1) a++;         n/=10;     }    }     printf("%d",a);          return 0; }

user: user-7
content: http://www.cnblogs.com/kuangbin/archive/2011/07/23/2115001.html lz可以试试换个变量的类型

user: user-8
content: 输入的数据和你变量能表达的范围要适配啊。。。

user: user-9
content: 可以用getchar() 然后挨个判断

user: user-10
content: int 能表示的最大值是 2147483647， 11111111111 已经超出了最大范围，变成了负数，结果肯定不正确。 改用__int64  和 %I64d   __int64 n,a=0; 	scanf_s("%I64d",&n); 	while(n>0){ 		if(n%10==1) a++; 		n/=10; 	} 	printf("%d",a);

user: user-11
content: char chrBigNum[100] ={0}; scanf("%s", chrBigNum); int nLen = strlen(chrBigNum); int nCount = 0; for(int i = 0; i < nLen; i++) 	if(chrBigNum[i] == '1') 		nCount++;  不晓得符合不。 如果数是给定的就直接char chrBigNum[100] ="xxxxxx";