您的位置:首页 > 其它

顺序表数组——连续存储单元的应用

2018-02-10 11:32 316 查看
顺序表——数组:通过连续的存储单元来实现存储的数据集合
要素:首地址,长度

例一:利用数组输出13^100
分析:长整型存储单元大小为4字节,最大可存储的数值为2147483647,显然13^100次方超出最大值,会产生溢出。
          考虑利用数组进行存储,一个单元只存储一个数字(0~9)。
           设数组a
(N为足够大的数字),a[N-1]=1
           k=a[N-1]*13; a[N-1]=k%10; a[N-2]=k/10;
           每一次乘以13,相当于将数组中的每一个元素乘以13并进行进位求和#include<stdio.h>
int main()
{
int a
,k,s,cp,i,j;\\N为足够大的整数
a[N-1]=1;
s=N-2;\\设置岗哨,永远在第一个数字的前面
for(i=0;i<100;i++){
j=N-1;
cp=0;
while(j>s){
k=a[j]*13+cp;
a[j--]=k%10;
cp=k/10;
}
while(cp){
a[s--]=cp%10;
cp/=10;
}
for(i=s+1;i<N;i++)
printf("%d\t",a[i]);
}
}
例二:任意输入两个超大整数求和并输出结果
分析:利用字符串将百位整数输入,利用数组进行处理并输出#include<stdio.h>
#include<string.h>
int main()
{
char s1[100],s2[100];
int r[100],i,k,cp,x;
cp=0;
printf("请输入第一个整数:");
gets(s1);
printf("请输入第二个整数:");
gets(s2);
i=strlen(s1)-1;
j=strlen(s2)-1;
k=99;
while(i>-1||j>-1){
if(i>-1&&j>-1)
x=s1[i]-'0'+s2[j]-'0'+cp;
else if(i>-1)
x=s1[i]-'0'+cp;
else if(j>-1)
x=s2[j]-'0'+cp;
  r[k]=x%10;
cp=x/10;
i--;
k--;
j--;
}
if(cp)
r[k--]=cp;
for(k=k+1;k<N;k++)
printf("%d",r[k]);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: