當前位置:首頁 » 編程語言 » 代碼整數加法c語言
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

代碼整數加法c語言

發布時間: 2022-05-14 14:34:26

A. 大整數加法 c語言 求代碼 要求如下

#include<stdio.h>
#include<string.h>

voidreverse(char*s)/*將字元串逆置*/
{
intlength;
inti=0;
chartemp;
length=strlen(s);
while(i<length-i-1)
{
temp=s[i];
s[i]=s[length-i-1];
s[length-i-1]=temp;
i++;
}
}

voidAddBigNum(char*s1,char*s2,char*result)
{
intlen1=strlen(s1);
intlen2=strlen(s2);
intacc=0,temp,i;/*acc為進位標記*/
if(s1==NULL||s2==NULL||result==NULL)
{
return;
}
reverse(s1);
reverse(s2);
for(i=0;i<len1&&i<len2;i++)
{
temp=s1[i]-'0'+s2[i]-'0'+acc;/*計算每位的實際和*/
result[i]=temp%10+'0';/*通過求余數來確定每位的最終值*/
if(temp>=10)/*通過這個if..else..條件來判斷是否有進位,並設置進位值*/
acc=1;
else
acc=0;
}
if(i<len1)/*兩個加數位數不同*/
{
for(;i<len1;i++)
{
temp=s1[i]-'0'+acc;/*依舊要考慮進位,比如9999+1的情況*/
result[i]=temp%10+'0';
if(temp>=10)
acc=1;
else
acc=0;
}
}
if(i<len2)
{
for(;i<len2;i++)
{
temp=s2[i]-'0'+acc;
result[i]=temp%10+'0';
if(temp>=10)
acc=1;
else
acc=0;
}
}

if(acc==1)/*考慮如:123+911=1034的情況,如果不增加這個條件會得到結果為034,進位被舍棄*/

result[i++]='1';

result[i]='';
reverse(result);
}

main()
{
chars1[405];
chars2[405];
charresult[405];
intN;
scanf("%d",&N);
while(N--)
{
scanf("%s%s",s1,s2);
AddBigNum(s1,s2,result);
printf("%s ",result);
}
return0;
}

運行結果如圖:

B. 如何C語言中實現兩個任意大小的整數的相加

#include<stdio.h>
#include<string.h>
intmain()
{
chararr1[201],arr2[201];
printf("請輸入加數:");
scanf("%s",&arr1);
printf("請輸入加數:");
scanf("%s",&arr2);
intlen1=strlen(arr1);
intlen2=strlen(arr2);
inti,f=0;
inta[201]={0};intb[201]={0};intsum[202]={0};
intj=0;
for(i=len1-1;i>=0;i--)
{
a[j++]=arr1[i]-'0';
}
j=0;
for(i=len2-1;i>=0;i--)
{
b[j++]=arr2[i]-'0';
}
intmax=(len1>len2)?len1:len2;
for(i=0;i<max;i++)
{
sum[i]=a[i]+b[i];
}
for(i=0;i<max;i++)
{
if(sum[i]>=10&&i<max-1)
{
sum[i+1]++;
sum[i]-=10;
}
if(sum[i]>=10&&i==max-1)
{
f=1;
sum[i+1]++;
sum[i]-=10;
}
}
printf("計算結果為:");
if(f==1)printf("%d",f);
for(i=max-1;i>=0;i--)
{
printf("%d",sum[i]);
}
return0;
}

C. 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 ...

//對你的代碼作了! 希望有助於你的學習。

D. c語言簡單加法

正確的代碼如下:
#include<stdio.h>
void main()
{
int a,b,c;
a=6;
b=7;
c=a+b;
printf("c=%d」,c);
}

在你的代碼中最後的輸出是錯誤的,從哪裡來的d,而且你要輸出的是c吧,就算是d你也沒有定義d,C語言的代碼一定要先定義再使用,把最後輸出的d改為c就可以了,還有就是標點符號要注意,不要寫錯,一定要注意,要仔細。

資料擴展

相應的可以寫出求加減乘除的代碼如下:

#include<stdio.h>

void main()

{

int a,b;

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

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

printf("%d ",a-b);

printf("%d ",a*b);

printf("%d ",a/b);

return 0;

}

E. 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:;
}

F. C語言 整數加法

不是,加數因為小於30000,而int的范圍是-32767~32768,所以加數定義成int即可,不果最後的和要定義成long,因為相加之後可能超過了int能表示的范圍。

G. 簡單的C語言加法程序代碼都有什麼

#include <stdio.h>


void main()


{


int a,b,c;//定義三個整數


scanf("%d%d",&a,&b);//輸入兩個整數


c=a+b;//把a+b的值付給c


printf("這兩個數的和是: %d+%d=%d",a,b,c);//輸出結果


}

H. C語言利用位運算實現整數的加法運算

首先講講異或

1^0=1 1^1=0 0^1=1 0^0=0

(1+0)mod2=1 (1+1)mod2=0 (0+1)mod2=1 (0+0)mod2=0

mod是求余數的運算

於是我們可以把異或看成不帶進位的二進制加法。(我們經常稱異或是「模2和」)

sum = a ^ b; sum也就是a和b不帶進位的和。

現在考慮進位:

1+1時會產生進位剩下的都不會,正好符合按位與的性質

1^1=1 1^0=0 0^1=0 0^0=0

即a和b按位與後是1的位會進位

而每一位進位的效果就是它左邊的一位加一

所以假設進位的各位是carry,進位的效果就是sum+(carry左移一位)

既然是求和 就可以直接調用Add(sum,carry<<1)

當不出現進位的時候,遞歸就可以終止了,所以有
if (b == 0) return a;

I. C語言實現大整數加法

//把各位的數碼存入字元數組中,注意ASCAII碼的轉換
#include<stdio.h>
#include<string.h>
#include<conio.h>
intmain()
{
ints,t,i,len1,len2;
chars1[30],s2[30],n1[30],n2[30],sum[31];


//將字元串以數碼形式按倒序存儲於新字元串中,便於計算
printf("input2num(小於10^40): ");
scanf("%s%s",&s1,&s2);
len1=strlen(s1);
len2=strlen(s2);
t=0;
for(i=len1;i>=0;i--)n1[t++]=s1[i-1]-48;
t=0;
for(i=len2;i>=0;i--)n2[t++]=s2[i-1]-48;


//高位補0
if(len1>len2)
{
n1[len1]=0;
for(i=len2;i<len1;i++)n2[i]=0;
}
if(len1<len2)
{
n2[len2]=0;
for(i=len1;i<len2;i++)n1[i]=0;
}

//計算
t=0;
s=0;
for(i=0;i<(len1>len2?len1:len2);i++)
{
s=n1[i]+n2[i]+t;//s為數碼之和
sum[i]=s%10;//sum[i]為該位上的數碼
t=s/10;//t為進位
s=0;
}

//輸出
putchar(10);
if(t>0)
{
sum[i]=t;
for(s=i;s>=0;s--)printf("%c",sum[s]+48);
}
else
{
for(s=i-1;s>=0;s--)printf("%c",sum[s]+48);
}
getch();
}

J. 用C語言寫一個加法運算的代碼怎麼寫

例子如下:

知識擴展:

C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。

盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。

C語言屬於高級程序語言的一種,它的前身是「ALGOL」。其創始人是布朗·W·卡尼漢和丹尼斯·M·利奇。C語言問世時是帶有很大的局限性,因為它只能用於UNIX系統上。然而隨著科學技術的進步,計算機工業的發展,C語言逐漸脫離UNIX。1987年美國標准化協會制定了C語言的國際標准,簡稱「ANSI C」,從此以後它便成為一種廣泛使用的程序語言。