我这个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 就输出正确。
这是什么问题??? 求大神解答啊, 展开
我是这样写的#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 就输出正确。
这是什么问题??? 求大神解答啊, 展开
3个回答
展开全部
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;
}
#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后,输入方式就改变了,你直接用我给你的第二个程序就可以了
展开全部
如果你用int定义一个变量进行计算,那么他的值只能在-32728~32767之间,否则运算结果就不对,可以换成long试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这么大的数已经把int爆了
追问
哈哈,才疏学浅,没办法0.0
追答
改成long long
或者用字符串把……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询