c语言中怎样输入一个很大的整数

用int 的话,输入一个很大的整数好像会出错
main()
{
int countdigit(int number,int digit);
int n;
int m;
printf("Enter a number:\n");
scanf("%d",&n);
printf("输入一个你想统计个数的数字:\n");
scanf("%d",&m);
printf("'%d'的个数为%d个\n",m,countdigit(n,m));
}
int countdigit(int number,int digit)
{
int count=0;
double t;
while(number>0){
t=number%10;
if(t==digit)count++;
number=number/10;
}
return count;
}
例如,这里输入一个很大的整数就会出错,小点的数就正确,怎样解决这个问题?

可以利用字符数组来存放整数的各位数值,即将整数当成一串字符来输入。

如果要输入12345678901234567890,则定义一个char型数组a[20],将用户输入的整数当成一串字符存入字符数组a中。


具体实现方法可以参考如下程序段:

char a[20];
scanf("%s", a);   // 输入12345678901234567890,即可将该整数输入到字符数组a当中
// 则数组a中各元素值为a[0]='1', a[1]='2', a[2]='3', ....... , a[19]='0'
// 在进行运算的时候将字符转换为数字即可(即a[i]-'0')

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-12
这种使用的话,最好就用字符串,可以存储很长的数字,而int型的话,就只有那么大本回答被提问者采纳
第2个回答  2013-10-12
你可以把int改为long int或者用double
第3个回答  2013-10-12
整型数的最大数不能超过2的31次方-1
第4个回答  2013-10-12
把int换成long long。