首页技术c语言加法程序怎么写 c语言加减乘除运算代码

c语言加法程序怎么写 c语言加减乘除运算代码

编程之家2026-07-03741次浏览

各位老铁们,大家好,今天由我来为大家分享c语言加法程序怎么写,以及c语言加减乘除运算代码的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

c语言加法程序怎么写 c语言加减乘除运算代码

c语言编程 高精度加减法

本来以为很简单,结果写着写着发现也不简单,用了2个小时。

#include<stdio.h>

#include<conio.h>

#include<string.h>

#include"stdlib.h"

void main()

c语言加法程序怎么写 c语言加减乘除运算代码

{

int n=0,i=0,j=0,k=0,b=0;

char a[3][500]={0};

int n1=0,n2=0;

char s[500]={0};

int n3=0;

c语言加法程序怎么写 c语言加减乘除运算代码

int c=0,c1=0;

int temp=0;

char op;

char str[1001]={0};

char*result;

scanf("%d",&n);

result=(char*)malloc(501*n);//根据输入的n申请内存空间

*result='\0';

/*每次循环都要初始化*/

for(;i<n;i++)

{

//gets(str);

for(j=0;j<500;j++)

{

a[0][j]='\0';a[1][j]='\0';a[2][j]='\0';

s[j]='\0';

str[j]='\0';

str[1000-j]='\0';

}

c=0;c1=0;

k=0;

n1=0;n2=0;n3=0;

/*分离输入的字符串*/

scanf("%s",&str);

for( j=0;str[j];j++)

{

if( str[j]!='+'&& str[j]!='-')

a[k][j-n1]=str[j];

else

{

op=str[j];

k=1;

n1=strlen(a[0])+1;

}

}//for j

n1-=2;

n2=strlen(a[1])-1;

n3=n1>n2?n1:n2;

/*计算加法*/

if(op=='+')

{

for(;n1>=0&&n2>=0;n1--,n2--,n3--)

{

temp=a[0][n1]+a[1][n2]-96;

temp+=c;

if(temp>=10)

{

s[n3]=temp%10+48;

c=1;

}

else

{

s[n3]=temp+48;

c=0;

}

}//for

while(n1>=0)

{

temp=a[0][n1]-48;

temp+=c;

if(temp==10)

{

s[n3]=48;

c=1;

}

else

{

s[n3]=temp+48;

c=0;

}

n1--;

n3--;

}//while n1

while(n2>=0)

{

temp=a[1][n2]-48;

temp+=c;

if(temp==10)

{

s[n3]=48;

c=1;

}

else

{

s[n3]=temp+48;

c=0;

}

n2--;

n3--;

}//while n2

if(c)

strcat(result,"1");

strcat(result,s);

strcat(result,"\n");

}//if op

/*计算减法*/

else

{/*保证减数大于被减数

*如果被减数大于减数,则交换2数,并设置变量

*/

if(strcmp(a[0],a[1])<0)

{

//a[2]=a[0];a[0]=a[1];a[1]=a[2];

for(b=0;b<3;b++)

{

j=(b+2)%3;

for(k=0;k<=n2;k++)

a[j][k]=a[b][k];

}

n2=n1;n1=n3;

c1=1;//正为0,负为1

}

/*计算减法*/

for(;n2>=0;n1--,n2--,n3--)

{

temp=a[0][n1]-a[1][n2];

temp-=c;

if(temp>=0)

{

s[n3]=temp+48;

c=0;

}

else

{

s[n3]=temp+58;

c=1;

}

}//for

while(n1>=0)

{

temp=a[0][n1]-48;

temp-=c;

if(temp>=0)

{

s[n3]=temp+48;

c=0;

}

else

{

s[n3]=temp+58;

c=1;

}

n1--;

n3--;

}

if(c1)

strcat(result,"-");

/*消除减法结果高位的0*/

j=0;

while(s[j]==48)

j++;

strcat(result,s+j);

strcat(result,"\n");

}//else op

}//for i

printf("%s",result);

getch();

}

c语言问题 ++的问题

我分析的结果是

这个++--如果有多条语句的话是先算前面2个的

这个不是你说的那样自右像左

是从左像右边;;;那个++才是自右像做,,,不过运算的时候是+-这个是自左像右

k=(++i)+(++i)+(++i);这个等价于k=[(++i)+(++i)]+(++i)先算前面2个=4+4+5

k=(--i)+(--i)+(--i);这个等价于k=[(--i)+(--i)]+(--i)先算前面2个=0+0-1

k=(++i)+(--i)+(++i);这个和上面同理 2+2+3=7

还有就是更多语句也同理。。我也举例几个

k=(++i)+(++i)+(++i)+(++i)+(++i);结果=4+4+5+6+7=26

k=(--i)+(--i)+(--i)+(--i)+(--i);结果= 0+0-1-2-3-6

k=(++i)+(--i)+(++i)+(++i)+(++i);结果=2+2+3+4+5=16

每个我都编译过 vc++下面

用c语言编写24点代码分析

#include<stdio.h>

double fun(double a1,double a2,int b)//用于尝试着计算的函数,b为运算控制

{

switch(b)

{

case 0:return(a1+a2);

case 1:return(a1-a2);

case 2:return(a1*a2);

case 3:return(a1/a2);

}

}

void main()

{

int i,j,k,l,n,m,r,save[4];

double num[4]={1,1,1,1},tem1,tem2,tem3,abc=1111;

char sign[5]="+-*/";//打印时候用的符号,需要和fun函数里的顺序保持一致

printf("input 4 numbers:");

for(i=0;i<4;i++)

{

scanf("%lf",num+i);//输入数据

save[i]=num[i];//保存原始数据

}

//下面程序的思想,就是利用穷举(其实就是使用的排列组合方法)来计算可能的组合。

//先把输入的4个数进行排列(前4个for语句就这个用途)

//再依次插入三个运算符(后3个for语句就这个用途)

//事实上,从这里看,这个程序是不怎样的。七层循环嵌套,这是编程的大忌。一般循环嵌套最好不要超过两层。

for(i=0;i<4;i++)

for(j=0;j<4;j++)

if(j!=i)

{

for(k=0;k<4;k++)

if(k!=i&&k!=j)

{

for(l=0;l<4;l++)

if(l!=i&&l!=j&&l!=k)

{

for(n=0;n<4;n++)

for(m=0;m<4;m++)

for(r=0;r<4;r++)

{

tem1=fun(num[i],num[j],n);

tem2=fun(tem1,num[k],m);

tem3=fun(tem2,num[l],r);

//以下五种处理方法,涵盖了有可能的全部运算顺序

//这也是本程序最精妙的地方。

if(tem3==24.0)//如果直接算得了24,说明次序不变,直接输出就是

printf("{(%d%c%d)%c%d}%c%d=24\n",save[i],sign[n],save[j],sign[m],save[k],sign[r],save[l]);

else if(tem3==-24.0)//如果算得的是负的,说明需要颠倒第二次运算(第三次运算不可能是加减)

printf("{%d%c(%d%c%d)}%c%d=24\n",save[k],sign[m],save[i],sign[n],save[j],sign[r],save[l]);

else if(tem3==1.0/24.0)//如果是倒数,说明需要颠倒最后一次运算(第三次运算同样不可能是加减)

printf("%d%c{(%d%c%d)%c%d}=24\n",save[l],sign[r],save[i],sign[n],save[j],sign[m],save[k]);

else if(tem3==-1.0/24.0)//如果是负倒数,则说明第二次和第三次运算都要颠倒(第三次运算同样不可能是加或减)

printf("%d%c{%d%c(%d%c%d)}=24\n",save[l],sign[r],save[k],sign[n],save[i],sign[m],save[j]);

else

{//处理()*/+/-()的情况

tem1=fun(num[i],num[j],n);

tem2=fun(num[k],num[l],r);

tem3=fun(tem1,tem2,m);

if(tem3==24.0)

printf("(%d%c%d)%c(%d%c%d)=24\n",save[i],sign[n],save[j],sign[m],save[k],sign[r],save[l]);

}

}

}

}

}

}

//后面我再研究了下,发现"第三次不可能是加减法"这种思想是错误的,而程序作者在设计的时候,确实是这么认为的,所以,这个程序是有问题的.

//但程序里的主体思想没有问题,如果需要修改这个错误,程序需要在运算顺序判断上下功夫.结果只能取==24的情况.

关于c语言加法程序怎么写到此分享完毕,希望能帮助到您。

typescript接口,Type-C接口css3d css2和css3的区别