输入两个整数,进行加减乘除四则运算的c语言程序怎么写啊,拜托了~

输入两个整数,进行加减乘除四则运算的c语言程序怎么写啊,拜托了~,第1张

代码

#include<stdioh>

int main()

{

int a,b;

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

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

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

printf("%d\t",a b);

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

return 0;

}

运行截图分析

C语言中的加减乘除和数学中的加减乘除一样,不同在于符号的表示问题,乘号需要用“”表示。除号需要用“/”表示。新手学习C语言,很容易把除号和取余好混淆,强调一下,取余号是“%”,百分号就是取余的意思。因此在输入两个整数以后,按照数学方法就可以直接输出结果,整数的输入用scanf()函数。

#include <stdioh>

main (void)

{

int a,b,c;

char op;

scanf ("%d%c%d",&a,&op,&b);//最好空格去掉,这样就可以直接写成a+b或者a-b。如果有空格的话要记得空格也要打a + b。要不会出现错误 ,而且输入的时候需要用地址符&····

if(op=='+')

{c=a+b;}

if(op=='-')

{c=a-b;}

printf("%d%c%d=%d\n",a,op,b,c);//楼主这句应该放在数据处理完后。。要不你输出的a,op,b都是在没处理过的数,也就是原来的值,而且最好是把,去掉,这样更美观 ,而且printf后面不需要&。。。切记。而且没必要那样输出。请楼主看我的printf```

}

还不清楚 来hi我

赋值的顺序是从右向左,因为最右边的肯定是一个常量。

x=f=n/=(c=50);

相当于

c=50;//此时用的是ASCII对应的整数值计算

n/=50,n=n/50=2

f=2,f=f2=20

x=20

所以最后 的结果,很明显啦·2 20000000

初等,4个: ( ) [ ] -> 指向结构体成员 结构体成员

单目,9个: ! ~ ++ -- -负号 (类型) 强制类型转换 指针 &取地址 sizeof长度

算术,5个: / % + -减

位移,2个: << >>

关系,6个: < <= > >= == 等于 ! = 不等于

位逻,3个: & 按位与 ^ 按位异或 | 按位或

逻辑,2个: && 逻辑与 || 逻辑或

条件,1个,三目: :

赋值,1个: =

逗号,1个: ,

算术运算:对两个值(常量变量都OK)进行算数运算(+。-。。/。%),返回运算的结果

逻辑运算:对两个值(常量变量都OK)——!只对一个值——进行逻辑运算,返回运算的结果

组合\

结果\

运算符&&||!

00000

10011

01011

11110

#include<iostream>

#include<cmath>

#include<string>

using

namespace

std;

const

double

pi

=

314159265;

const

double

e

=

2718281828459;

const

int

SIZE

=

1000;

typedef

struct

node//为了处理符号而建立的链表(如:

1+(-2))

{

char

data;

node

next;

}node;

typedef

struct

stack_num//存储

的栈

{

double

top;

double

base;

}stack_num;

typedef

struct

stack_char//存储

运算符号

的栈

{

char

top;

char

base;

}stack_char;

stack_num

S_num;//定义

stack_char

S_char;//定义

char

fu[18]

=

{'\n',

')',

'+',

'-',

'',

'/',

'%',

'^',

'Q',

'L',

'C',

'S',

'T',

'c',

's',

't',

'('};

int

compare[1000];//表现出各运算符号的优先级

double

shu[1000];//存储

"数"

的数组

double

dai_result;//运算的结果,是为了处理

M

运算(简介函数里有M的定义)

int

biao

=

0;//和dia_result

一样,为了处理

M

运算

char

line[SIZE];//输入的所要计算的表达式

void

init()//初始化

{

compare[fu[0]]

=

-2;//用数字的大小表现出符号的优先级

compare[fu[1]]

=

-1;

compare[fu[2]]

=

2;

compare[fu[3]]

=

2;

compare[fu[4]]

=

4;

compare[fu[5]]

=

4;

compare[fu[6]]

=

4;

compare[fu[7]]

=

5;

for(int

i

=

8;

i

<=

15;

i++)

compare[fu[i]]

=

6;

compare[fu[16]]

=

7;

S_numbase

=

(double)malloc(sizeof(double)SIZE);//为栈开辟空间

S_charbase

=

(char)malloc(sizeof(char)SIZE);//同上

S_numtop

=

S_numbase;

S_chartop

=

S_charbase;

}

void

push_num(double

n)//数字进栈

{

++S_numtop

=

n;

}

void

push_char(char

c)//运算符号进栈

{

++S_chartop

=

c;

}

double

pop_num()//数字出栈

{

double

m

=

S_numtop;

S_numtop--;

return

m;

}

char

pop_char()//运算符号出栈

{

char

cc

=

S_chartop;

S_chartop--;

return

cc;

}

char

get_top_char()//得到运算符号的栈中最顶端的运算符号

{

return

S_chartop;

}

double

operate(double

y,

char

c,

double

x)//

对两个数计算

(

含是双目运算符

:

,

/

等等

)

{

double

r;

if(c

==

'-')

r

=

x

-

y;

else

if(c

==

'+')

r

=

x

+

y;

else

if(c

==

'/'

&&

y

!=

0)

r

=

x

/

y;

else

if(c

==

'')

r

=

x

y;

else

if(c

==

'^')

{

r

=

1;

for(int

i

=

1;

i

<=

y;

i++)

r

=

x;

}

else

if(c

==

'%')

{

int

r0

=

(int)x

%

(int)y;

r

=

double(r0);

}

return

r;

}

double

operate_one(double

one,

char

cc)//

对一个数运算

(

含单目运算符

:

log(L),

sin(S)

等等

)

{

double

r;

if(cc

==

'Q')

r

=

sqrt(one);

else

if(cc

==

'C')

r

=

cos(one);

else

if(cc

==

'S')

r

=

sin(one);

else

if(cc

==

'T')

r

=

tan(one);

else

if(cc

==

'c')

i++;

}

i++;

}

if(ge

>=

3)

return

0;

else

return

1;

}

void

output(double

result)//

打出结果

{

printf("

所得结果是

:

");

cout<<result<<endl;

}

void

check()//

检查表达式是否合法

{

void

introduce();

char

cc;//

决定计算器按哪种功能进行计算

double

result;//

结果

void

input();//

定义

if(

check_kuohao()

&&

check_char()

)//

看是否合法

,

合法则计算

{

result

=

compute();

output(result);

cout<<"

输入一个字符

'M'

'D'

'F',

决定是否继续

:

"<<endl;

while(cin>>cc)

{

if(cc

==

'M')

{

system("cls");

introduce();

printf("

您上次所得结果为

:

");

cout<<result<<endl;

cout<<"

在上次计算结果的基础上

,

请继续输入想计算的表达式

"<<endl;

dai_result

=

result;

biao

=

1;

input();//

输入表达式

break;

}

else

if(cc

==

'D')

{

system("cls");

introduce();

cout<<"

计算器已清零

,

请输入您所要计算的表达式

"<<endl;

input();//

输入表达式

break;

}

else

if(cc

==

'F')

{

system("cls");

cout<<"

计算器关闭

,

谢谢使用

!"<<endl;

break;

}

else

{

cout<<"

所输入字符无效

,

请输入一个字符

'M'

'D'

'F'!"<<endl;

continue;

}

}

}

else//

不合法,分两种不合法

{

if(check_kuohao()

==

0

&&

check_char()

==

1)

{

cout<<"

您所输入的表达式括号不匹配

,

请重新输入

:"<<endl;

input();//

输入表达式

}

else

{

cout<<"

您所输入的表达式不合法

,

请重新输入

:"<<endl;

input();//

输入表达式

}

}

}

void

tackle_fuhao()//

处理负号

{

node

root,

head,

p,

q,

p1;

root

=

head

=

new

node;

head->next

=

NULL;

int

i;

for(i

=

0;

line[i]

!=

'\0';

i++)//

建立链表

{

p

=

new

node;

p->data

=

line[i];

p->next

=

head->next;

head->next

=

p;

head

=

p;

}

//

delete

p;

q

=

(node)malloc(sizeof(node));

head

=

root;

if(root->next->data

==

'+'

||

root->next->data

==

'-')//

处理第一个字符

{

p

=

new

node;

p->data

=

'0';

p->next

=

head->next;

head->next

=

p;

}

if(root->next

!=

NULL)

{

for(q

=

root->next;

q;

q

=

q->next)

{

if(q->data

==

'('

&&

(q->next->data

==

'-'

||

q->next->data

==

'+'))

{

p

=

new

node;

p->data

=

'0';

p->next

=

q->next;

q->next

=

p;

}

}

}

//

delete

q;

p1

=

new

node;

int

qi

=

-1;

for(p1

=

root->next;

p1;

p1

=

p1->next)

{

line[++qi]

=

p1->data;

}

line[++qi]

=

'\0';

}

void

input()//

输入

{

cin>>line;

if(biao

==

0)

tackle_fuhao();//

处理负号

check();//

检查表达式是否合法

}

void

introduce()//

对计算器的符号功能的简要介绍

{

cout<<"

计算器简要介绍

"<<endl;

cout<<"C(cos)

S(sin)

T(tan)

a(arccos)

c(arcsin)

"<<endl;

cout<<"7

8

9

/

on

t(arctan)

"<<endl;

cout<<"4

5

6

%

L(log)"<<endl;

cout<<"1

2

3

-

M(M+)

Q(sqrt)

"<<endl;

cout<<"0

+

^(

乘方

)

F(off)

Enter(=)

"<<endl;

cout<<"

对于对数输入

L2_5

表示以

2

为底

5

的对数

"<<endl;

cout<<"M(

在前面结果的基础上继续计算,

如:

上次结果为

10

现输入

+1052)"<<endl;

cout<<"D(

清零并继续输入

)"<<endl;

cout<<"F(

计算机关闭

)"<<endl;

cout<<"

输入

P

就代表输入圆周率

,

输入

E

代表输入自然对数

"<<endl<<endl;

}

void

print()

{

system("color

2");

cout<<"

欢迎使用本计算器

"<<endl;

cout<<"

输入一个字符串

on,

计算器开始启动

"<<endl;

}

void

if_start()//

是否启动计算器

{

string

start;

print();

while(cin>>start)

{

if(start

!=

"on")

{

cout<<"

您所输入的字符无效

,

请按照介绍的继续输入

:"<<endl;

continue;

}

else

break;

}

if(start

==

"on")

{

system("color

5");//

颜色的处理

system("cls");//

刷屏

}

introduce();//

对计算器的简要介绍

cout<<"

现在

,

请输入您所要计算的表达式

"<<endl;

input();//

输入所要计算的表达式

}

int

main()

{

if_start();//

调用是否启动计算器函数

return

0;

}

r

=

acos(one);

else

if(cc

==

's')

r

=

asin(one);

else

if(cc

==

't')

r

=

atan(one);

++运算高于,运算又从右到左,所以b=++a++a;是先自加后乘,2个自加就是5,相乘就是25;

对于b=a++++a;首先++a返回4,a++先返回(a的原值)4,相乘16;后a的值加1变5

以上就是关于输入两个整数,进行加减乘除四则运算的c语言程序怎么写啊,拜托了~全部的内容,包括:输入两个整数,进行加减乘除四则运算的c语言程序怎么写啊,拜托了~、C语言编写加减计算程序、C语言算术表达式运算等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10215434.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存