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

c語言減法的方法

發布時間: 2023-08-28 20:40:12

c語言高精度計算 整數減法

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

constintMAXSIZE=200+1;

//完成以字元串形式的兩個大數相加。返回字元串形式的和。
//tatol←addnum1+addnum2
char*LargeNumberAdd(charconst*addnum1,charconst*addnum2,char*total){
inti,j,k=0,len,result,carry=0;
intlen1=strlen(addnum1);
intlen2=strlen(addnum2);
for(i=len1-1,j=len2-1;i>=0&&j>=0;--i,--j){
result=addnum1[i]-'0'+addnum2[j]-'0'+carry;
carry=result/10;
total[k++]=result%10+'0';
}
while(i>=0){
result=addnum1[i--]-'0'+carry;
carry=result/10;
total[k++]=result%10+'0';
}
while(j>=0){
result=addnum2[j--]-'0'+carry;
carry=result/10;
total[k++]=result%10+'0';
}
total[k]='';
len=strlen(total);
for(i=0;i<len/2;++i){
k=total[i];
total[i]=total[len-1-i];
total[len-1-i]=k;
}
returntotal;
}

//完成以字元串形式的兩個大數相減。返回字元串形式的差。
//difference←subnum1-subnum2
char*LargeNumberSub(char*subnum1,char*subnum2,char*difference){
inti,j,k,result,borrow=0;
intsign=0,swap=0;
char*pta,*ptb;
intlen1=strlen(subnum1);
intlen2=strlen(subnum2);
if(len1==len2){
for(i=0;i<len1;++i){
if(subnum1[i]<subnum2[i]){
swap=1;
break;
}
}
}
if(len2>len1||swap==1){
pta=(char*)malloc((len2+1)*sizeof(char));
ptb=(char*)malloc((len1+1)*sizeof(char));
strcpy(pta,subnum2);
strcpy(ptb,subnum1);
k=len1;
len1=len2;
len2=k;
sign=1;
}
else{
pta=(char*)malloc((len1+1)*sizeof(char));
ptb=(char*)malloc((len2+1)*sizeof(char));
strcpy(pta,subnum1);
strcpy(ptb,subnum2);
}
for(i=len1-1,j=len2-1,k=0;i>=0&&j>=0;--i,--j){
result=pta[i]-ptb[j]-borrow;
if(result<0){
result+=10;
borrow=1;
}
elseborrow=0;
difference[k++]=result+'0';
}
while(i>=0){
result=pta[i]-'0'-borrow;
if(result<0){
result+=10;
borrow=1;
}
elseborrow=0;
--i;
difference[k++]=result+'0';
}
if(sign)difference[k++]='-';
difference[k]='';
for(i=0;i<k/2;++i){
result=difference[i];
difference[i]=difference[k-1-i];
difference[k-1-i]=result;
}
free(pta);
free(ptb);
returndifference;
}

intmain(){
chars[MAXSIZE]="1234567";
chart[MAXSIZE]="87086543";
charresult[MAXSIZE+1];
printf("%s+%s=%s ",s,t,LargeNumberAdd(s,t,result));
printf("%s-%s=%s ",s,t,LargeNumberSub(s,t,result));
return0;
}

❷ C語言減法

#include<stdio.h>
#include<stdlib.h>
intmain()
{
inta,b,c;
puts(請輸入被減數和減數");
scanf("%d%d",&a,&b);//不能在sacnf()中寫字元串
c=a-b;
printf("商是%d ",c);
system("pause");
return0;
}

❸ 用C語言編一個減法運算

sprintf(result,"%d",c);
是把c這個整形數以字元串的形式寫到result字元串中,如果c=1000,則result的前四個字元分別是1000,即把整形變成字元串。
#include
<stdio.h>
#include
<string.h>
int
main()
{
char
result[35]={0};
int
a,b,c,clen;
int
i;
scanf("%d
%d",&a,&b);
c=a-b;
sprintf(result,"%d",c);
clen=strlen(result);
for(i=0;i<clen;i++)
{
if((clen-i)%3==0&&i!=0)
printf(",");
printf("%c",result[i]);
}
printf("\n");
return
0;
}

❹ C語言的減法

scanf("%d,%d",&number1,&number2);//這個語句使用的時候,在輸入過程也要以:參數1,參數2
的形式輸入,即不能夠少了逗號,否則會出現錯誤
printf("%d",&sub);//這句話打出來的是sub這個變數在地址空間中的地址值,不是sub這個變數,所以會出現未知的數的情況,因為系統在為該變數分配空間的時候,所選擇的地址值是不一定的
正確的語句應該是printf("%d",sub);
對於變數定義的時候,建議進行初始化,否則經常會出現未初始化而出現邏輯錯誤的情況

全是純手打的,純人腦思考,望採納

❺ c語言實現簡單的加減乘除

1、打開C-Free5.0新建一個空白頁面,然後將C語言的基礎格式寫完,注意格式縮進。如下圖所示。

❻ 初學者 c語言兩個大數的減法

不論不類的C++
要麼用C,單獨寫幾個運算函數,要麼用C++,寫一個大數的類,你找的這么一個加法程序實在難看,想修改更難。。。

❼ c語言二進制數的加減運算

1、二進制加法基本指令
(1)ADD指令
格式:ADD DST,SRC
該指令把源操作數(SRC)指向的數據與目的操作數(DST)相加後,將結果放到目的操作數(DST)中,所執行的操作:(DST)ß(SRC)+(DST)
SRC和DST不能同時為存儲器操作數和段寄存器,同時SRC和DST的數據類型要匹配,要同是位元組或字。受影響的標志位有:OF,SF,ZF,AF,PF,CF。
(2)ADC指令
格式:ADC DST,SRC
所執行的操作:(DST)ß(SRC)+(DST)+CF 了解清楚進位是怎樣加的
該指令把兩個操作數(SRC和DST)相加以後,再加上進位標志CF,將結果放到目的操作數(DST)中。受影響的標志位有:OF,SF,ZF,AF,PF,CF。ADC指令多用於多精度數據相加。
2、二進制減法基本指令
(1)SUB指令
格式:SUB DST,SRC
所執行的操作:(DST)ß (DST)-(SRC)
該指令把源操作數(SRC)指向的數據與目的操作數(DST)相減後,將結果放到目的操作數(DST)中,SRC和DST不能同時為存儲器操作數和段寄存器(,同時SRC和DST的數據類型要匹配,要同是位元組或字。受影響的標志位有:OF,SF,ZF,AF,PF,CF。
(2)SBB指令
格式:SBB DST,SRC
(DST)ß (DST)-(SRC)-CF 了解清楚進位是怎樣減的
該指令把兩個操作數(SRC和DST)相減以後,再減去CF,將結果放到目的操作數(DST)中。受影響的標志位有:OF,SF,ZF,AF,PF,CF。SBB指令多用於多精度數據相加。

❽ 用C語言實現兩個任意長度的浮點數的減法

本人參賽模板(含注釋,含高精度加法減法運算,main函數有具體示例):
#include
<iostream>
#include
<string>
using
namespace
std;
#define
HPSIZE
1024
//長度
//倒序存儲
struct
HP
{
int
len;
int
s[HPSIZE
+
1];
};
//////////////////////////////////////
//輸入,只能是正整數
//////////////////////////////////////
string
base_input(string
str)
{
char
c;
c
=
getchar();
while(c
!=
'\n')
{
str.push_back(c);
c
=
getchar();
}
return
str;
}
/////////////////////////////////////////
//將一個字元串轉換成大數存入a
//
a
目標變數
//
str
原始數據
/////////////////////////////////////////
HP
change(string
str)
{
HP
a;
int
i;
while(str[0]
==
'0'
&&
str.size()
!=
1)
str.erase(0,
1);
a.len
=
(int)str.size();
for(i
=
1;
i
<=
a.len;
++i)
a.s[i]
=
str[a.len
-
i]
-
48;
for
(i
=
a.len
+
1;
i
<=
HPSIZE;
++i)
a.s[i]
=
0;
return
a;
}
/////////////////////////////////////////
//輸出
/////////////////////////////////////////
void
HPprint(const
HP
&y)
{
int
i;
for(i
=
y.len;
i
>=
1;
i--)
printf("%d",
y.s[i]);
}
////////////////////////////////////////
//比較兩數大小
//返回
a>b
->
返回值大於0
//
a<b
->
返回值小於0
//
a=b
->
返回0
////////////////////////////////////////
int
HPcompare(const
HP
a,
const
HP
b)
{
int
len;
len
=
(a.len>b.len)
?
a.len
:
b.len;
while(len
>
0
&&
a.s[len]
==
b.s[len])
len--;
if(len==0)
return
0;
else
return
a.s[len]
-
b.s[len];
}
/////////////////////////////////////
//高精度加法c=a+b
//
a,
b
加數
//
c

/////////////////////////////////////
HP
HPplus(const
HP
a,
const
HP
b)
{
HP
c;
int
i,
len;
for(i
=
1;
i
<=
HPSIZE;
i++)
c.s[i]
=
0;
len
=
(a.len>b.len)
?
a.len
:
b.len;
for(i=1;i<=len;i++)
{
c.s[i]
+=
a.s[i]
+
b.s[i];
if(c.s[i]
>=
10)
{
c.s[i]
-=
10;
c.s[i
+
1]++;
}
}
if(c.s[len
+
1]
>
0)
len++;
c.len
=
len;
return
c;
}
////////////////////////////////////
//高精度減法c=a-b
////////////////////////////////////
HP
HPsub(const
HP
a,
const
HP
b)
{
HP
c;
int
i,
len;
for(i
=
1;
i
<=
HPSIZE;
i++)
c.s[i]
=
0;
len
=
(a.len>b.len)
?
a.len
:
b.len;
for(i
=
1;
i
<=
len;
i++)
{
c.s[i]
+=
a.s[i]
-
b.s[i];
if(c.s[i]
<
0)
//借位
{
c.s[i]
+=
10;
c.s[i+1]--;
//高位存於數組的後部
}
}
while(len
>
1
&&
c.s[len]
==
0)
len--;
c.len
=
len;
return
c;
}
int
main(void)
{
string
str_a,
str_b;
HP
a,
b;
str_a
=
"1000000";
//初始要運算的數字
str_b
=
"1000000";
a
=
change(str_a);
//將一個字元串轉換成大數存入a
b
=
change(str_b);
HPprint(HPsub(a,
b));
//進行減法運算
return
0;
}
如果對您有幫助,請記得採納為滿意答案,謝謝!祝您生活愉快!
Vae團隊招人!!!歡迎各位加入!!!走過路過不要錯過!!!迅猛發展中!!!