南太子湖创新谷美术馆:关于一道C语言设计题```高手进```

来源:百度文库 编辑:神马品牌网 时间:2024/04/28 23:42:07
长整数的处理。假定用一个整型数组表示一个长整数,数组的每个元素存储长整数的一位数字,则实际的长整数m表示为:
m=a[k]×10k-1+a[k-1]×10k-2+….+a[2]×10+a[1]
其中a[0]保存该长整数的位数。求:
长整数除普通整数。

void divide(unsigned char a[], unsigned long d)
{
int i;
unsigned long x=0;
for (i=a[0];i;i--)
{
x*=10;
x+=a[i];
a[i]=unsigned char(x/d);
x%=d;
}
}

void main()
{
unsigned char a[]={18,1,1,2,1,4,5,4,6,5,1,1,2,1,4,5,4,6,5};
unsigned long x=7890; int i;
for (i=a[0];i;i--) printf("%d",a[i]); printf("/%ld=",x);
divide(a,x);
for (i=a[0];i;i--) printf("%d",a[i]); printf("\n");
}

main()
{ /*输入一个长整数,输出一个长整数*/
int i,k,a[100];
printf("输入位数:");
scanf("%d",&a[0]);
k=a[0];
printf("依次输入长整数的每一位:");
for(i=k;i>0;i--)
scanf("%d",&a[i]);
printf("该长整数为:");
for(i=k;i>0;i--)
printf("%d",a[i]);
}
main()
{ /*2个长整数相加*/
int i,k,n,a[100],b[100];
printf("分别输入两个长整数的位数,以逗号隔开:");
scanf("%d,%d",&a[0],&b[0]);
k=a[0];
n=b[0];
printf("依次输入2个长整数的每一位:");
for(i=k;i>0;i--)
scanf("%d",&a[i]);
for(i=n;i>0;i--)
scanf("%d",&b[i]);
if(k>=n){
for(i=1;i<=n;i++)a[i]+=b[i];
printf("相加后的长整数为:");
for(i=k;i>0;i--)printf("%d",a[i]);
}
else{
for(i=1;i<=k;i++)b[i]+=a[i];
printf("相加后的长整数为:");
for(i=n;i>0;i--)printf("%d",b[i]);
}
}
main()
{ /*转换为16进制输出*/
int i,j,k,m,a[100],b[100];
printf("输入位数:");
scanf("%d",&a[0]);
k=a[0];
printf("依次输入长整数的每一位:");
for(i=k;i>0;i--)
scanf("%d",&a[i]);
m=a[1];
for(i=2;i<=k;i++)
m+=a[i]*10*(i-1);
for(i=0;m==0;i++)
{
b[i]=m%16;
m/=16;
}
j=i;
for(i=0;i<j;i++)
{
if(b[i]==10)b[i]=65;
if(b[i]==11)b[i]=66;
if(b[i]==12)b[i]=67;
if(b[i]==13)b[i]=68;
if(b[i]==14)b[i]=69;
if(b[i]==15)b[i]=70;
}
printf("转换16进制后为:");
for(i=j-1;i>=0;i--)
{
if(b[i]>9)printf("%c",b[i]);
else printf("%d",b[i]);
}
}

昆明理工的吗???~~~~~呵呵