当前位置:首页 » 编程语言 » 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团队招人!!!欢迎各位加入!!!走过路过不要错过!!!迅猛发展中!!!