① 大一c语言:用数组设计一个20位长整数,并实现用这个长整数进行加法或减法运算。 急求啊
//这是肢信我之前写的一个大整数的加减乘的程序,先输入两个数的各位的值
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
voidputin(int*x,int*y,inta,intb)
{
inti;
for(i=0;i<a;i++)
{
printf("输入x[%d]:",i);
scanf("%d",&x[i]);
}
for(i=0;i<b;i++)
{
printf("输入y[%d]:",i);
scanf("%d",&y[i]);
}
}
voidjiafa(int*x,int*y,int*z,int*c,inta,intb)
{
inti,j;
z[0]=(x[0]+y[0])%10;
c[0]=(x[0]+y[0])/10;
for(i=1,j=1;i<a;i++,j++)
{
if(j<b)
{
z[i]=(x[i]+y[j]+c[i-1])%10;
c[i]=(x[i]+y[j]+c[i-1])/10;
}
elseif(i==b)
{
z[i]=x[i]+c[b-1];
}
elsez[i]=x[i];
}
if(c[i-1]!=0)
{
z[i]=c[i-1];
}
elsez[i]=0;
}
voidchengfa(int*x,int*y,int*z,int*c,inta,intb)
{
inti,j;
int*t=(int*)malloc(sizeof(int)*b*(a+b));
int*c1=(int*)malloc(sizeof(int)*(a+b));
int*p=(int*)malloc(sizeof(int)*(a+b));
for(i=0;i<a+b;i++)
c1[i]=0;
for(i=0;i<b;i++)
for(j=0;j<a+b;j++)
t[i*(a+b)+j]=0;
for(j=0;j<b;j++)
{
for(i=0;i<a;i++)
{
if(i==0)
{
t[j*(a+b)+i]=(x[i]*y[j]+c[0])%10;
c[i]=(x[i]*y[j]+c[0])/10;
}
else
{
t[j*(a+b)+i]=(x[i]*y[j]+c[i-1])%10;
c[i]=(x[i]*y[j]+c[i-1])/10;
}
}
if(c[i-1]!=0)
t[j*(a+b)+i]=c[i-1];
}
for(i=0;i<b;i++)
for(j=0;j<i;j++)
{
for(intk=a+b-1;k>0;k--)
t[i*(a+b)+k]=t[i*(a+b)+k-1];
t[i*(a+b)+0]=0;
}
jiafa(t+0*(a+b),t+1*(a+b),z,c1,a+b,a+b);
for(i=2;i<b;i++)
{
for(j=0;j<a+b;j++)
p[j]=z[j];
jiafa(p,t+i*(a+b),z,c1,a+b,a+b);
}
}
voidjianfa(int*x,int*y,int*z,int*c,inta,intb)
{
inti,j;
x[0]>尘握=y[0]?c[0]=0:c[0]=-1;
z[0]=(x[0]-y[0]+10)%10;
for(i=1,j=1;i<a;i++,j++)
{
if(j<b)
{
x[i]>=y[j]?c[i]=0:c[i]=-1;
z[i]=(x[i]-y[j]+c[i-1]+10)%10;
}
elseif(j==b)
{
z[i]=x[i]+c[j-1];
}
elsez[i]=x[i];
}
}
voidprint(int历兄轮*x,int*y,int*z,inta,intb,intc)
{
inti;
for(i=0;i<c-a;i++)
printf("");
for(i=a-1;i>=0;i--)
printf("%d",x[i]);
printf(" ");
for(i=0;i<c-b;i++)
printf("");
for(i=b-1;i>=0;i--)
printf("%d",y[i]);
printf(" ");
for(i=c-1;i>=0;i--)
printf("-");
printf(" ");
for(i=c-1;i>=0;i--)
printf("%d",z[i]);
printf(" ");
}
voidmain()
{
intlengtha=5,lengthb=4,i;
//printf("输入数组a和b的长度(a的长度大于b的长度):");
//scanf("%d%d",&lengtha,&lengthb);
int*a=(int*)malloc(lengtha*sizeof(int));
int*b=(int*)malloc(lengthb*sizeof(int));
int*sum=(int*)malloc((lengtha+1)*sizeof(int));
int*c=(int*)malloc((lengtha)*sizeof(int));
int*cha=(int*)malloc(lengtha*sizeof(int));
int*ji=(int*)malloc((lengtha+lengthb)*sizeof(int));
for(i=0;i<lengtha;i++)
{
a[i]=i+2;
b[i]=i+2;
c[i]=0;
}
a[lengthb]=9;
/*
printf("输入%d个数组a的元素:",lengtha);
for(i=0;i<lengtha;i++)
scanf("%d",&a[i]);
printf("输入%d个数组b的元素:",lengthb);
for(i=0;i<lengthb;i++)
scanf("%d",&b[i]);
*/
putin(a,b,lengtha,lengthb);
jiafa(a,b,sum,c,lengtha,lengthb);
printf("加法: ");
print(a,b,sum,lengtha,lengthb,lengtha+1);
jianfa(a,b,cha,c,lengtha,lengthb);
printf("减法: ");
print(a,b,cha,lengtha,lengthb,lengtha);
chengfa(a,b,ji,c,lengtha,lengthb);
printf("乘法: ");
print(a,b,ji,lengtha,lengthb,lengtha+lengthb);
}
② 求大神用C语言编程 求两个整数的最大值的代码
#include<stdio.h>
int main()
{
int a,b,max;
printf("请输入两个整数:");
scanf("%d,%d",&a,&b);
if(a>b)
{
max = a;
}
else
{
max = b;
}
printf("较大的数是:%d",max);
return 0;
}
简洁的语言
C语言包含的各种控制语句仅有9种,关键字也只有32个,程序的编写要求不严格且以小写字母为主,对许多不必要的部分进行了精简。实际上,语句构成与硬件有关联的较少,且C语言本身不提供与硬件相关的输入输出、文件管理等功能,如需此类功能,需要通过配合编译系统所支持的各类库进行编程,故c语言拥有非常简洁的编译系统。
以上内容参考:网络-c语言
③ c语言编程:输入一个很大的整数n(n<100),输出n各位数字之和 ,利用字符串实现
思路:输入字符串,从字符串的第一个位置开始依次把每个数字字符转成整数,并计算其累加和。
参考代码:
#include"stdio.h"
#include"string.h"
intmain(){
chara[100];
inti,sum=0;
gets(a);
for(i=0;a[i]!='