㈠ c語言編程 100以內整數加減法
srand(time(0));
inta[20];
for(inti=0;i<20;i++)
{
a[i]=rand()%100;
}
for(inti=10;i<20;i+=2)
{
if(a[i]<a[i+1])
{
intt=a[i];a[i]=a[i+1];a[i+1]=t;
}
}
intscore=0;
for(inti=0;i<20;i+=2)
{
charc=i<10?'+':'-';
printf("%d%c%d=幾? ",a[i],c,a[i+1]);
intx;
scanf("%d",&x);
if((i<10&x=a[i]+a[i+1])|(i>=10&x=a[i]-a[i+1]))
{
score+=10;
cout<"回答正確"<<endl;
}
elsecout<"回答錯誤"<<endl;
}
switch(score)
{
case0:
case10:
case20:
case30:
case40:
case50:cout<<"要加油哦"<<endl;break;
case60:
case70:
case80:cout<<"真不錯哦"<<endl;break;
case90:cout<<"你真棒"<<endl;break;
case100:cout<<"酷斃了"<<endl;break;
default:;
}
㈡ 怎樣用C語言做超大整數的加減運算
用高精度演算法來實現,即用數組或指針來儲存數字,例如A〔20〕來儲存a ,用B〔20〕來儲存b,這樣a 和b就可以是很大的數,再用一個C〔21〕來儲存結果,為什麼C要21呢,你知道,加法是要近位的,呵呵。這里給出相加的偽代碼,d =0/*用來存儲近位*/,for i=0到19{c=A〔i〕+B〔i〕+d ,d =c/10,c=c%10,C〔i〕=c}if d 不等於0 C〔i+1〕=d ,再逆的輸出C就可以了!編程要學會思考,現在你可以試試編下高精度乘法,例如可以輸出100的階乘!
㈢ 用c語言 數組 做大數 加減乘除 急
參考代碼:
#include<stdio.h>
#defineMAXINT1000
intcompare(inta[],intb[]);
intbigplus(inta[],intb[],intc[]);
intbigsub(inta[],intb[],intc[]);
intbigmult(inta[],unsignedintb,intc[]);
intbigmult2(inta[],intb[],intc[]);
intbigdiv(inta[],unsignedintb,intc[],int*d);
intbigdiv2(inta[],intb[],intc[],intd[]);
intmain(intargc,char*argv[])
{
inta[MAXINT]={10,5,4,6,5,4,3,2,1,1,1};//被乘數或被除數
intb[MAXINT]={7,7,6,5,4,3,2,1};//乘數或除數
intc[MAXINT],d[MAXINT];//c[]存放商,d[]存放余數
intdiv=1234;//小乘數或小除數
intk=0;
int*res=&k;//小余數整數指針
bigplus(a,b,c);
bigsub(a,b,c);
bigmult2(a,b,c);
bigdiv2(a,b,c,d);
getchar();
return0;
}
intbigplus(inta[],intb[],intc[])//大整數加法
{
inti,len;
len=(a[0]>b[0]?a[0]:b[0]);//a[0]b[0]保存數組長度,len為較長的一個
for(i=0;i<MAXINT;i++)//將數組清0
c[i]=0;
for(i=1;i<=len;i++)//計算每一位的值
{
c[i]+=(a[i]+b[i]);
if(c[i]>=10)
{
c[i]-=10;//大於10的取個位
c[i+1]++;//高位加1
}
}
if(c[i+1]>0)len++;
c[0]=len;//c[0]保存結果數組實際長度
printf("Bigintegersadd:";
for(i=len;i>=1;i--)
printf("%d",c[i]);//列印結果
printf(" ";
return0;
}
intbigsub(inta[],intb[],intc[])//大整數減法
{
inti,len;
len=(a[0]>b[0]?a[0]:b[0]);//a[0]保存數字長度,len為較長的一個
for(i=0;i<MAXINT;i++)//將數組清0
c[i]=0;
if(compare(a,b)==0)//比較a,b大小
{
printf("Result:0";
return0;
}
elseif(compare(a,b)>0)
for(i=1;i<=len;i++)//計算每一位的值
{
c[i]+=(a[i]-b[i]);
if(c[i]<0)
{
c[i]+=10;//小於0的原位加10
c[i+1]--;//高位減1
}
}
else
for(i=1;i<=len;i++)//計算每一位的值
{
c[i]+=(b[i]-a[i]);
if(c[i]<0)
{
c[i]+=10;//小於0原位加10
c[i+1]--;//高位減1
}
}
while(len>1&&c[len]==0)//去掉高位的0
len--;
c[0]=len;
printf("Bigintegerssub=";
if(a[0]<b[0])printf("-";
for(i=len;i>=1;i--)//列印結果
printf("%d",c[i]);
printf(" ";
return0;
}
intbigmult2(inta[],intb[],intc[])//高精度乘以高精度
{
inti,j,len;
for(i=0;i<MAXINT;i++)//數組清0
c[i]=0;
for(i=1;i<=a[0];i++)//被乘數循環
for(j=1;j<=b[0];j++)//乘數循環
{
c[i+j-1]+=a[i]*b[j];//將每一位計算累加
c[i+j]+=c[i+j-1]/10;//將每一次結果累加到高一位
c[i+j-1]%=10;//計算每一次的個位
}
len=a[0]+b[0];//取最大長度
while(len>1&&c[len]==0)//去掉高位0
len--;
c[0]=len;
printf("Bigintegersmulti:";
for(i=len;i>=1;i--)//列印結果
printf("%d",c[i]);
printf(" ";
}
intbigdiv2(inta[],intb[],intc[],intd[])//高精度除以高精度
{
inti,j,len;
if(compare(a,b)<0)//被除數較小直接列印結果
{
printf("Result:0";
printf("Arithmeticcompliment:";
for(i=a[0];i>=1;i--)printf("%d",a[i]);
printf(" ";
return-1;
}
for(i=0;i<MAXINT;i++)//商和余數清0
{
c[i]=0;
d[i]=0;
}
len=a[0];d[0]=0;
for(i=len;i>=1;i--)//逐位相除
{
for(j=d[0];j>=1;j--)
d[j+1]=d[j];
d[1]=a[i];//高位*10+各位
d[0]++;//數組d長度增1
while(compare(d,b)>=0)//比較d,b大小
{
for(j=1;j<=d[0];j++)//做減法d-b
{
d[j]-=b[j];
if(d[j]<0)
{
d[j]+=10;
d[j+1]--;
}
}
while(j>0&&d[j]==0)//去掉高位0
j--;
d[0]=j;
c[i]++;//商所在位值加1
}
}
j=b[0];
while(c[j]==0&&j>0)j--;//求商數組c長度
c[0]=j;
printf("Bigintegersdivresult:";
for(i=c[0];i>=1;i--)//列印商
printf("%d",c[i]);
printf(" Arithmeticcompliment:";//列印余數
for(i=d[0];i>=1;i--)
printf("%d",d[i]);
printf(" ");
}
㈣ C語言計算兩個50位數之和
#include <stdio.h>
void main()
{
int a[50],b[50],sum[50]; //數據無法接收50位的數(記得)
int i,n=0; //定義數組a(第一個),b(第一個)
char ch; //sum(結果)和變數i(循環工具)
for(i=0;i<50;i++) //n(進位)
{
getchar(ch); //接收數據放進a數組
a[i] = ch;
}
for(i=0;i<50;i++)
{
getchar(ch); //接收數據放進a數組
b[i] = ch;
}
for(i=49;i>0;i--)
{
sum[i] = (int)(a[i]+b[i]) + n; //相加,並加進位數
if(sum[i]>10)
{
sum[i]%=10; //如果結果大於10就進位
n=1; //並進位數為1
}
else
{
n=0; //否則為0
}
}
for(i=0;i<50;i++)
{
printf("%d",sum[i]); //輸出結果
}
}
//還未測試過,只是寫個思路,按這思路應該可以做倒
㈤ C語言 大整數加減法
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char a[1000],b[1000];
int c[1001];
int x,y,i,j,k;
int blen=0;
int alen=0;
char flag = '+';//用於減法標記負數
int Subtract(char *a, char *b, int len) { //為了避免代碼重復,將共同的計算抽出寫成函數
int i;
for (i=len-1; i>=0; i--) {
if (a[i] < b[i]) {
c[i] = a[i] + 10 - b[i];
b[i-1]++;
} else {
c[i] = a[i] - b[i];
}
}
return 0;
}
int Subtraction(){
for (i=0;i<100;i++)
{
scanf("%c",&b[i]);
if(b[i]=='\n')
break;
blen++;
}
printf("=");
if(alen>blen)
{
x=(alen-blen);
for(i=blen-1;i>=0;i--)
{
alen--;
b[alen]=b[i];
}
for (i=0;i<x;i++)
b[i]='0';
alen=blen+x;
blen=alen;
} else if (blen > alen) {
x=(blen-alen);
for(i=alen-1;i>=0;i--)
{
blen--;
a[blen]=a[i];
}
for (i=0;i<x;i++)
a[i]='0';
blen=alen+x;
alen=blen;
}
for (i=alen-1;i>=0;i--) {
a[i]=a[i]-'0';
b[i]=b[i]-'0';
}
if (strcmp(a, b) > 0) {
Subtract(a, b, alen);
}else {
flag = '-';
Subtract(b, a, alen);
}
return 0;
}
int Addition(){
for (i=0;i<100;i++)
{ scanf("%c",&b[i]);
if(b[i]=='\n')
break;
blen++;
}
printf("=");
if(alen>blen)
{
x=(alen-blen);
for(i=blen-1;i>=0;i--)
{
alen--;
b[alen]=b[i];
}
for (i=0;i<x;i++)
b[i]='0';
alen=blen+x;
} else if (blen > alen) {
x=(blen-alen);
for(i=alen-1;i>=0;i--)
{
blen--;
a[blen]=a[i];
}
for (i=0;i<x;i++)
a[i]='0';
blen=alen+x;
alen=blen;
}
for (i=alen-1;i>=0;i--) {
a[i]=a[i]-'0';
b[i]=b[i]-'0';
if(c[i+1]+a[i]+b[i]>=10)
{
c[i]=(c[i+1]+a[i]+b[i])/10;
c[i+1] = (c[i+1]+a[i]+b[i])%10;
}
else
{
c[i+1]+=(a[i]+b[i]);
}
}
return 0;
}
int main()
{
for (i=0;i<100;i++)
a[i]=0;
for (i=0;i<100;i++)
b[i]=0;
for (i=0;i<101;i++)
c[i]=0;
for (i=0;i<100;i++)
{
scanf("%c",&a[i]);
if(a[i]=='+')
{
Addition();
goto output1;
}
if(a[i]=='-')
{
Subtraction();
goto output2;
}
alen++;
}
output1:
{
for (i=0;i<=alen;i++)
printf("%d",c[i]);
return 0;
}
output2:
{
printf("%c", flag);
for (i=0;i<alen;i++)
printf("%d",c[i]);
return 0;
}
}
代碼運行結果:
123456789-12345
=+123444444
Terminated with return code 0
Press any key to continue ...
123456+111111
=0234567
Terminated with return code 0
Press any key to continue ...
1000000-1
=+0999999
Terminated with return code 0
Press any key to continue ...
1-1000000
=-0999999
Terminated with return code 0
Press any key to continue ...
//對你的代碼作了! 希望有助於你的學習。
㈥ c語言實現簡單的加減乘除
1、打開C-Free5.0新建一個空白頁面,然後將C語言的基礎格式寫完,注意格式縮進。如下圖所示。