c语言 当一个数位数超过11位 怎么输入输出

#include <stdio.h>
void main()
{long int a,n,N=1;
printf("请输入a和n");
scanf("%d%d",&a,&n);
printf("a=%d,n=%d\n",a,n);sn=an=0;
while(N<=n){
an=an*10+a;sn=sn+an;N++;
printf("%d %d\n",an,sn);}
printf("sn=%100d\n",sn);
}
当输入1 15 也就是说当n>10时 该怎么输入输出
我找到解决办法了 就是定义为doubie 输出%e就行

c语言中因数据的存储格式限制,不同类型的数据所能精确表示的数据(整数)位数是有限度的,如:

    int 占4字节,有符号最大数为:2^31-1 = 2147483647 有效数据位最大为10位。 输入输出格式串为%d

    long 在64位编译系统下,占8字节,有符号最大数为:2^63-1=9223372036854775807    (受机器和开发工具限制) 有效数据位最大为19位。 输入输出格式串为%ld

    double 占8字节,有效数据位最大为16位。  输入时,采用%lf格式串,输出时,采用%.0f来去掉小数部分的0

如果操作的数据在以上位数范围内,可选择相应的类型进行数据变量定义。

如果想表达任意长度的整数,则只能采用字符串进行数据存储,输入输出按字符串进行处理,格式串为%s。如果需要进行相应的算术运算,则需要自定义函数去完成相应的功能。实现过程就是按四则运算规则,进行相应位的数据计算。详情可查问大数加减法运算资料。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-08-09
可以用字符数组保存大数,,,不仅大于11行 100~200及更多位都行
大数相加
#include<stdio.h>
#include<string.h>
int Maxlen ;
char a[110] , b[110] ;
int an1[110] , an2[110] ;
int Addition(int maxlen , int an1[] , int an2[] );int main()
{

int i , j ;
scanf("%s" , a) ;
scanf("%s" , b) ; memset( an1 , 0 , sizeof(an1) ) ;
memset( an2 , 0 , sizeof(an2) ) ;

int len1 = strlen(a) ;
int len2 = strlen(b) ;
if(len1 > len2 )
Maxlen = len1 ;
Maxlen = len2 ;
for(j = 0, i = strlen(a)- 1 ; i >= 0 ; i --)
an1[j++] = a[i] - '0'; for(j = 0 , i = len2 - 1 ; i >= 0 ; i --)
an2[j++] = b[i] - '0';

Addition ( Maxlen , an1 , an2 ) ;

for( i = 100 ; i >= 0; i -- )
{
if( an1[i] != 0 )break;

}
for(;i>=0;i--)
printf("%d" ,an1[i]) ;
printf("\n") ;
}
int Addition( int maxlen , int an1[] , int an2[] )//大数相加函数
{
for( int i = 0 ; i < maxlen ; i++ )
{
an1[i] += an2[i] ;

if( an1[i] >= 10 )
{
an1[i] -= 10 ;
an1[i + 1] ++ ;
}

}
return 0;
}追问

你这是使用的什么语言?

追答

c语言啊 有什么问题 尽管说

第2个回答  2012-08-09
#include <stdio.h>
void main()
{
__int64 a,n,N=1;//结果不超过18位的话可以用int64这个是64位的
__int64 sn,an;
printf("请输入a和n\n");
scanf("%I64d%I64d",&a,&n);
printf("a=%I64d,n=%I64d\n",a,n);
sn=an=0;
while(N<=n){
an=an*10+a;
sn=sn+an;
N++;
printf("%I64d %I64d\n",an,sn);
}
printf("sn=%100I64d\n",sn);
}本回答被网友采纳
第3个回答  2012-08-09
因为int型只有4字节,32位,long long int 也只有8字节,存放不了太大的数字,如果数字太大,你可以将数字放在char 数组中,或者将数字变成字符串,
第4个回答  2012-08-09
数组啊! 啊?这不是双精度浮点型吗?

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网