c语言 程序模拟简单运算器的工作,输入一个算式(没有空格),遇等号‘=’输入结束,输出结果。

c语言 程序模拟简单运算器的工作,输入一个算式(没有空格),遇等号‘=’输入结束,输出结果。,第1张

#include <stdioh>

int main(void)

{

char operator;

int operand1, operand2, res;

int repeat, ri;

scanf("%d", &repeat);

for(ri = 1; ri <= repeat; ri++){

scanf("%d", &operand1);

operator = getchar();

/填空从此开始/

res=operand1;

while(operator!='=')

{scanf("%d",&operand2);

switch(operator)

{

case'+':res+=operand2;break;

case'-':res-=operand2;break;

case'':res=operand2;break;

case'/':res/=operand2;break;

}

operator = getchar();}

//到此结束

printf("%d\n", res);

}

}

运算器是计算机中执行各种算术和逻辑运算 *** 作的部件,又称算术逻辑单元。它的基本 *** 作包括加、减、乘、除四则运算,与、或、非、异或等逻辑 *** 作,以及移位、比较和传送等 *** 作。在计算过程中,运算器不断从存储器中获取数据,经计算后将结果再返回存储器。其工作是在控制器下完成的。

控制器是计算机的指挥中心,指挥计算机的各个部件按照指令的功能要求协调工作,它是计算机的神经中枢。控制器可以从内存中读取指令和执行命令,即按程序计数器指出的命令地址从内存中取出该指令进行译码,然后根据该指令向有关部件发出控制命令,执行该命令。

运算器和控制器共同组成了计算机主机的核心部件--中央处理器,即CPU。简单的说,两者之间的区别是:运算器是获取数据从而进行计算的,而控制器是进行指挥的。

方法一:

#include <stdioh>

#include<stringh>

#include<mathh>

#include<stdlibh>

struct complex multiply(struct complex x, struct complex y);

struct complex{

int real;

int imag;

};

int main()

{

struct complex a,b,s;

scanf("%d%d%d%d",&areal,&aimag,&breal,&bimag);

s=multiply(a,b);

printf("(%d+%di)(%d+%di)=%d+%di\n",areal,aimag,breal,bimag,sreal,simag);

return 0;

}

struct complex multiply(struct complex x, struct complex y)

{

struct complex m;

mreal=xrealyreal-ximagyimag;

mimag=ximagyreal+xrealyimag;

return m;

}

方法二:

#include<stdioh>

int main()

{

int a,b,c,d,e,f;

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

e = a c - b d;

f = a d + b c;

printf("(%d+%di)(%d+%di)=%d+%di\n",a,b,c,d,e,f);

}

现代计算机 硬件系统 (包括我们生活中最常见的PC个人计算机),包含 五大类 ,也叫 五大部件 ,分别是 运算器 、 控制器 、 存储器 、 输入设备 、 输出设备 。

  一、运算器

运算器,一般最少包括 3个寄存器 和 1个算术逻辑单元 ,现代计算机内部往往设有 通用寄存器组 。

寄存器,一种有限存储容量的高速存储部件,可用来暂存 指令 、 数据 和 位址 。寄存器有很多种类,一般涉及到四则运算的有3类, ACC(Accumulator) 为 累加器 , MQ(Multiplier-Quotient Register) 为 乘商寄存器 , X 为 *** 作数寄存器 ,3类寄存器在完成不同运算时,所存放的 *** 作数类别也各不相同。

关于 乘积高位 和 乘积低位 的概念,以十进制为例,百位就是十位的高位,十位是百位的低位。两个16位数相乘,结果可能会有32位,那左半部分的16位就是乘积高位,存储到ACC中,右半部分的16位就是乘积低位,存储到MQ中。

算术逻辑单元(ALU,Arithmetic and Logic Unit) ,是 算术运算 和 逻辑运算 的部件。算术运算包括 加、减、乘 的整数运算,逻辑运算是 与、或、非和异或 等逻辑 *** 作,还有 移位 、比较和传送等 *** 作。

移位运算 ,将一个字符向左或向右移动位,或是浮动特定位,包含带符号延伸和无符号延伸,在程序中应用很广泛。

二、控制器

在了解控制器之前,首先需要理解,什么是 指令 。对计算机来说,计算机本身能且只能执行 “指令” ,也就是说,我们外在所见到计算机各种智能化的表现,本质上是计算机执行各种指令的结果。

指令,由 *** 作码 和 地址码 组成。 *** 作码表示计算机要执行的某种 *** 作的性质,简单来说就是计算机需要干什么,由 *** 作码决定;地址码是 *** 作码执行时的 *** 作对象的地址, *** 作对象是指被 *** 作的数据,也叫 *** 作数 。

控制器 ,是计算机的指挥中心,负责决定执行程序的顺序,给出执行指令时机器各部件所需要的 *** 作控制命令。

控制器由 程序计数器(PC,Program Counter) 、 指令寄存器(IR,Instruction Register) 、 指令译码器(ID,Instruction Decoder) 、 时序产生器(Timing Generator) 、 *** 作控制器(Control Unit) 组成。

指令寄存器IR ,是用来存放当前正在执行的的一条指令,存放的内容来自于 数据寄存器(DR,Data Register) 。当一条指令需要被执行时,先要把它从内存取到数据寄存器,然后再送到指令寄存器IR中。

指令译码器ID ,在计算机执行一条指定的指令时,必须首先分析这条指令的 *** 作码是什么,以决定 *** 作的性质和方法,然后控制计算机的其他各部件协同完成指令表达的功能,这中间的分析工作就是指令译码器ID完成的。

程序计数器PC ,用来存放下一条要执行指令的地址,它与存储器(内存)之间有一条直接通路。执行指令时,首先需要根据程序计数器PC中存放的指令地址,将指令由内存取到指令寄存器IR,完成 “取指令” 的 *** 作。程序计数器PC本身具有自动加1的功能,可以自动给出下一条指令的地址,如此循环,执行每一条指令。

时序产生器 ,类似于“时间作息表”,给计算机各部分提供工作所需的时间标志,一般是利用定时脉冲的顺序和不同的脉冲间隔来实现。

*** 作控制器 ,根据指令所需完成的 *** 作和信号,发出各种微 *** 作命令序列,用以控制所有被控对象,完成指令的执行。

整个控制器的运行逻辑是先按照程序计数器所指出的指令地址,从内存中取出一条指令到指令寄存器IR,然后又指令译码器ID对指令进行分析,之后 *** 作控制器根据指令的功能向有关部件发出控制命令,执行控制指令的 *** 作。完成 *** 作之后,程序计数器加1,再重复执行上述 *** 作。

运算器和控制器,共同组成计算机最核心的部件— CPU ,即 中央处理器(Control Processing Unit) 。

我们平时进行数学运算都是用计算器完成的,那么如何用C语言编写一个计算器呢?下面我给大家分享一下。

工具/材料

Dev C++

01

首先我们需要在Dev C++软件中创建一个C语言项目,项目类型选择控制台程序,如下图所示

02

接下来我们在项目下面新建C语言文件,如下图所示

03

然后我们在C文件中写入计算器逻辑代码,主要是让用户输入计算方式,然后程序自动计算,如下图所示

04

接下来我们点击运行菜单,选择下拉菜单中的运行选项,如下图所示

05

最后在d出的界面中我们输入要计算的公式,程序就会自动计算,如下图所示

以上就是关于c语言 程序模拟简单运算器的工作,输入一个算式(没有空格),遇等号‘=’输入结束,输出结果。全部的内容,包括:c语言 程序模拟简单运算器的工作,输入一个算式(没有空格),遇等号‘=’输入结束,输出结果。、计算机里面控制器和运算器的区别是什么、C语言 要求编写一个简单计算器的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: https://outofmemory.cn/zz/9464876.html

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

发表评论

登录后才能评论

评论列表(0条)

保存