在C语言中如何是整数的范围变大

在C语言中如何是整数的范围变大,第1张

如果你需要表示的整数超过了机器所能表示的最大范围,那就需要你自己编写转换程序了。

基本思路可以这样做:定义字符串数组,字符串数组可以定义得很长,然后用户输入完后,你可以将输入的字符串转换成数字。而这个过程对用户来说是透明的,用户无需了解你的内部转换机制,他只要在使用中能够得到正确的结果即可。

#include"stdioh"

int main()

{

int a, b;

scanf("%d%d",&a,&b);

if(a>b)

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

else

{printf("%d",b);}

return 0;

}

NODE mulint(NODE p,NODE q)

{

NODE pc,qc,s,t,r;

int i,number,total = 0;

s=(NODE

)malloc(sizeof(NODE)); /建立存放乘积的链表表头/

s->data=-1; /给存放乘积的链表表头赋值-1/

pc=p->next;

r=t=s;

t->next = s;

i=0; / i为进位 /

while(pc->data!=-1){ /不是表头/

qc=q->next;

while(qc->data!=-1){ /不是表头/

if(t->next->data==-1){

total=pc->dataqc->data+i; /对应位的积与前次进位的和/

i=total/HUNTHOU; /求进位/

number=total-iHUNTHOU; /求出需要存入链表链表中的部分的数值/

t=insert_after(t,number); /将部分积存入s指向的链表中/

t->next=s;

}

else{

total=t->next->data+pc->dataqc->data+i;

i=total/HUNTHOU;

number=total-iHUNTHOU;

t->next->data=number;

t=t->next;

}

total = 0;

qc=qc->next; /移动指针/

}

if(i!=0){

t=insert_after(t,i); /处理最后一次进位/

t->next=s; /指向头结点/

}

i = 0;

pc=pc->next; /移动指针/

t=r->next;

r=r->next;

}

return s; /返回指向积的结构指针/

}

精度的实现是需要用字符形数组和整形数组的配合来实现,下面的例子,是一道ACM试题,关于计算高精度的问题,是算a的b次方但如果a是整数的话,后面需要输入 a0空格b回车。可以计算21的5000次方 或者是20的9000次方

#include<stdioh>

#include<mathh>

int qq(int n)

{ int i, sum=1;

for(i=1;i<=n;i++)

sum=10sum;

return(sum);

}

int main()

{

float r;

int n;

while(1)

{

char a[10000];

long int b[10000];

int k,h,m,i,j,z,g,t,q,e;

long int c=0;

if(scanf("%s%d",a,&n)==EOF)break;

for(i=0;a[i];i++)

if(a[i]=='')k=i;

m=i-k-1;

for(i=k;i<k+m;i++)

a[i]=a[i+1];

h=i;

for(i=0;i<h;i++)

b[i]=a[i]-48;

for(i=0;i<h;i++)c=c10+b[i];

for(i=0;i<h/2;i++){ t=b[i];b[i]=b[h-1-i];b[h-1-i]=t;}

for(e=1;e<n;e++)

{

for(i=0;i<h;i++)b[i]=b[i]c;

for(j=0;j<h-1;j++)

if(b[j]>=10){t=b[j];b[j]=t%10;b[j+1]+=t/10; }

if(b[h-1]>=10)

{

t=b[h-1];

q=b[h-1];

z=1;

while(t>=10)

{

t=t/10;

z++;

}

g=z;

while(z>=1)

{

b[h+g-z-1]=q/qq(g-z)%10;

z--;

}

h=h+g-1;

}

}

if(h<mn)

{

printf("");

for(j=mn-1;j>h-1;j--)printf("0");

for(j=0; ;j++)if(b[j]!=0)break;

for(i=h-1;i>=j;i--)

printf("%d",b[i]);

}

if(h==mn)

{ for(j=0; ;j++)if(b[j]!=0)break;

printf("");

for(i=h-1;i>=j;i--)

printf("%d",b[i]);

}

if(h>mn)

{

for(j=0; ;j++)if(b[j]!=0)break;

if(j<mn-1&&b[h-1]==0)

{

printf("");

for(i=mn-1;i>=j;i--)printf("%d",b[i]);

}

if(j<=mn-1&&b[h-1]!=0)

{ for(i=h-1;i>=mn;i--)

printf("%d",b[i]);

printf("");

for(i=mn-1;i>=j;i--)printf("%d",b[i]);

}

if(j>=mn)

{

for(i=h-1;i>=mn;i--)

printf("%d",b[i]);

}

} printf("\n");

}

return 0;

}

你这个题目有问题啊, 输入一个整数,然后输出比输入值大10的数,难道不就只有一个,还有所有的的

比5大10的数不就是15吗

#include<stdioh>

void main()

{

int b;

scanf("%d",&b);

printf("%d", b + 10);

}

再者,这样的题目你也要到网上问,是不是太懒了,除非自己完全没有学过编程,否则这样的题目怎么说也轻松啊

以上就是关于在C语言中如何是整数的范围变大全部的内容,包括:在C语言中如何是整数的范围变大、用c语言编写程序,求两个整数中的较大者并输出较大者。、c语言大整数运算问题高分求助各位帮忙,不胜感激 写了一个利用循环链表进行超大整数四则运算的c程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10140256.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存