代码
#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语言算术表达式运算等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)