我这个c语言程序 怎么输入过大的数就出错??

题目是输入一长整数,从高位开始逐位分割并输出。如输入123456输出1,2,3,4,5,6。我是这样写的#include<stdio.h>#include<math.h>... 题目是输入一长整数,从高位开始逐位分割并输出。如输入123456 输出1,2,3,4,5,6。
我是这样写的#include<stdio.h>
#include<math.h>
int main(void)
{
int num,i,a,n,b;

i=0;
printf("Enter num:\n");
scanf("%d",&num);
n=num;

while(num!=0){
num=num/10;
i=i+1;
}

for(b=i;b>=1;b--){
a=n/pow(10,(b-1));

n=(int)n%(int)pow(10,(b-1));

printf("%d,",a);
}

return 0;
}
如果我输入123456789111213141516 就输出8,7,5,3,1,0,6,0,4。 但我输入123456789 就输出正确。
这是什么问题??? 求大神解答啊,
展开
 我来答
chensunrise7
2013-11-25 · TA获得超过140个赞
知道答主
回答量:59
采纳率:0%
帮助的人:37.2万
展开全部
int的位数太少了,你把int换成long long,如果你的是vc 6.0,你就把int换成__int64,这样就可以了
#include<math.h>
int main(void)
{
long long num,i,a,n,b;

i=0;
printf("Enter num:\n");
scanf("%lld",&num);
n=num;

while(num!=0){
num=num/10;
i=i+1;
}

for(b=i;b>=1;b--){
a=n/pow(10,(b-1));

n=(long long)n%(long long)pow(10,(b-1));

printf("%lld,",a);
}

return 0;
}
其实完全可以不用long long,直接用char
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
int main()
{
char str[1000];
scanf("%s",str);
for (int i=0;i<strlen(str);i++)
printf("%c ",str[i]);
return 0;
}
更多追问追答
追问
我试试__int64
追答
__int64后,输入方式就改变了,你直接用我给你的第二个程序就可以了
张东鹤1009
2013-11-25 · 超过28用户采纳过TA的回答
知道答主
回答量:119
采纳率:0%
帮助的人:19.4万
展开全部
如果你用int定义一个变量进行计算,那么他的值只能在-32728~32767之间,否则运算结果就不对,可以换成long试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蜗牛如风x
2013-11-25
知道答主
回答量:39
采纳率:0%
帮助的人:19.1万
展开全部
这么大的数已经把int爆了
追问
哈哈,才疏学浅,没办法0.0
追答
改成long long
或者用字符串把……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式