按照C语言程序结构组成数字电路进行计算的计算机
按照C语言程序结构组成数字电路进行计算的计算机是一种可以按照C语言程序结构来安排加法器,输出显示电路,输入电路,的数字计算机。它由按键,液晶显示器,中央处理器组成。按键输入的程序保存在磁带上面,中央处理器在固定数字电路的作用下按照C语言程序构建电路,程序怎么写,电路就怎么连接。例如电路循环执行输出一个数据到显示器,电路就在定时器的作用下不断向液晶显示器输出数据。
中央处理器由程序语句判断执行电路,程序语句控制电路构成。程序语句判断控制电路由端口,加法器,减法器,乘法器,除法器,n次方计算器,对数计算器,三角函数计算器构成。程序语句控制电路由if判断电路,for判断电路,switch判断电路构成。一个C语言程序是固定的,它对应的计算机电路就是固定的。当程序是if时,电路就判断输入数据是否大于条件,如果是,不断执行程序,如果不是停止执行。
键盘输入的程序按每行保存在磁带中,程序语句判断电路根据键盘输入的程序的关键字判断电路执行相应的操作,例如输入2*3,电路执行乘法操作,程序语句判断控制电路根据键盘输入的程序的关键字控制电路的工作,例如输入for,电路将上面计算电路执行多次。
它的相关资料下载网址为:
https://photo.baidu.com/photo/wap/albumShare/invite/srLNHWoTUE?from=linkShare
点击链接接口查看全部内容:https://photo.baidu.com/photo/wap/albumShare/invite/pAwKHUduWt?from=linkShare
点击链接接口查看全部内容:https://photo.baidu.com/photo/wap/albumShare/invite/zSIylwJrAX?from=linkShare
点击链接接口查看全部内容:https://photo.baidu.com/photo/wap/albumShare/invite/jOZhOuLss?from=linkShare
链接:https://pan.baidu.com/s/1kdRopHtXHdHcupykSniRPA?pwd=ph5o
提取码:ph5o
链接:https://pan.baidu.com/s/16x8d5Sz6j7p2FhR2LFwrtA?pwd=6v1p
提取码:6v1p
https://www.aliyundrive.com/s/9pYFYmBM1Ek
微云文件分享:c语言数字计算机下载地址:https://share.weiyun.com/9McVoBg0
https://115.com/s/sw6o6hs33u5?password=xf96#
c语言数字计算机
访问码:xf96
第一部分 按照C语言程序结构组成数字电路进行计算的计算机
该计算器首先通过晶振产生32768HZ的谐振方波信号,再经过分频电路将这个方波信号的频率降低为100HZ,,即周期为0.01秒,再将这个100HZ的信号接入到按键的公共端,按键共有60个,它们的一端接到一起,另外一端分别接到倍频器上。相当于这些按键并联在一起,当某个按键被按下时,100HZ的信号就会接入到倍频器上,经过倍频后,频率变为1HZ,
为什么按键上面的频率是100HZ,这是因为100HZ的频率,周期是1毫秒,通常使用者按下按键的时间在1毫秒左右,所以,只有这个频率的信号才会在按下按键时输入到后级电路中。键值计算电路由十进制转二进制电路组成,当有数字键按下时,对应的数字按键输出端输出对应的数值。数值按键的输出端接上或门,或门两两相接,最后输出一个或门,当有任何计算符号按键按下时,或门输出高电平,或门后面接上计数器,计数器记录按键按下的次数,当有按键按下时,计数器将对应的次数输入到加法器,加法器给键值乘以10,100,1000,等倍数。当连续按2次按键时,需要用乘法器给键值乘以10,连续按下3次按键时,需要用乘法器给键值乘以100,依次类推。所有数值按键的输出端连接到一起,输出到计算符号电路,进行计算。计算符号编码电路产生对应计算符号的编码,输送给计算符号按键电路。用计算符号按键输入计算符号+-×÷,cos,sin,ln,log,等,
当RS触发器的输入端R,S都是1时,触发器保持输出端没有变化。利用这个特点,当按键输入高电平1时,电路输出高电平1给存储器,当按键断开输入低电平0时,RS触发器仍然给存储器输入1,当清零键按下时,RS触发器的S端输入0,触发器给存储器输入0,存储器清零。
当有按键按下时RS触发器Q输出1, Q 输出0,按下清零键以后,RS触发器Q端输出0, Q 端输出0
按键编码器产生二进制编码,每个编码对应一个按键。
当数字键1,按下时,这个与门输出0000001给后面计算电路,所有按键存储器后面两两之间接上或门,或门后面再接上或门,最后接上计数器,当按键按下时,计数器变为1,对应的存储器输出对应键值。当按键按下第二次时,计数器输出2,输出两位数字,当按键按下第三次时,计数器输出3,输出三位数字。
经过两个异或门和一个或门以后输出高电平111111111,这使后面的与门输出按键的数值到寄存器1,
当开始输入时,按清零键,计算机按键输入为0.此时,开始输入字符,将字符输入到寄存器1,
按键输入的程序存储在磁带A上面,超强磁性磁带的基材由50%醋酸酯DAC,50%醋酸酯TAC构成,超强磁性磁带的磁性粉末粘合剂有1%氯乙烯,1%醋酸乙烯共聚体,1%苯乙烯-丁二烯共聚体,1%硝化纤维素。1%纤维素,1%丁腈橡胶,1%丙烯酸酯橡胶,1%无定形聚酯,1%氨酯橡胶,1%聚氨基甲酸乙酯树脂,环氧树脂,密胺树脂,1%醋酸乙烯,1%丙烯酸酯丁基系的软质树脂,超强磁性磁带的磁性粉末分散剂由10ml乙醇,20g尿素,10ml双氧水,10g蔗糖,20g聚乙二醇4000,油酸钾皂试剂20g,黄色色素10g,司盘80试剂10ml,氧化铝10g,氨水50g,大豆油10g,α-烯基磺酸钠5g,十二烷基苯磺酸钠5g,烯丙基磺酸钠5g,二甲苯磺酸钠5g,椰子油脂肪酸渗透二乙醇酰胺6501日化,1%卵磷脂组成,磁性粉末稳定剂有对氯乙烯系粘合剂,使用硬脂酸钡等金属无机盐。磁性粉末防带静电剂是在磁性层内渗入炭黑或石墨等固体导电粉末。超强磁性磁带的磁性粉由二氧化铬,三氧化二铁,铬化铁,氧化镍,氧化钴,氧化钇,镝,二氧化锰。把磁性粉末,粘合剂,增塑剂,稳定剂,分散剂,加入水中,使各个磁性粉末相互溶解到水里,再球磨机混合均匀,最后用刮片涂覆到基材上面。
注意:收音机磁带使用涂着四氧化三铁的硝酸纤维素条,铁芯(铁氧体/羟基铁芯),0.32-0.45mm变压器钢片,线圈(0.08mm漆包线1200-1500匝),放音头间隙0.02mm,工作间隙0.5mm,磷铜萡/黄铜箔,
磁带录音机电路如下:
按键电路如下:
计算机中央处理器CPU电路原理图
程序语句判断电路
程序关键字判断电路,程序关键字判断电路,查询到关键字,并执行该关键字所要求的功能。
程序计算符号判断电路,程序计算符号判断电路,查询到计算符号,并执行该计算符号所要求的功能。
数据判断电路,程序数据判断电路,查询到数据符号,并执行该数据符号所形成的数据。
字符判断电路,程序字符判断电路,查询到字符,并执行该字符的功能。
磁带程序判断执行电路原理图。
语句执行电路,按照语句判断的输出,执行这条语句,输出到CPU端口并执行。
关于数字电路加法器,计数器,分频器的电路可参见《中国集成电路大全》丛书,《中国集成电路大全编写委员会编,国防工业出版社1987年出版.
该计算器首先通过晶振产生32768HZ的谐振方波信号,再经过分频电路将这个方波信号的频率降低为100HZ,,即周期为0.01秒,再将这个100HZ的信号接入到按键的公共端,按键共有60个,它们的一端接到一起,另外一端分别接到倍频器上。相当于这些按键并联在一起,当某个按键被按下时,100HZ的信号就会接入到倍频器上,经过倍频后,频率变为1HZ为什么按键上面的频率是100HZ,这是因为100HZ的频率,周期是1毫秒,通常使用者按下按键的时间在1毫秒左右,所以,只有这个频率的信号才会在按下按键时输入到后级电路中。键值编码电路由二进制编码电路组成,当有按键按下时,对应的按键输出端输出对应的按键编码。每个按键的输出端接上或门,或门两两相接,最后输出一个或门,当有任何计算按键按下时,或门输出高电平,这个或门在和每个按键的输出端接上与门,这些与门在两两之间接上或门,最后一个或门接上按键寄存器。按键寄存器将输入的按键输出保存到磁带寄存器A中,计算机CPU通过算法语言关键字判断语句,计算符号判断电路,中断判断电路,定时器判断电路,数据判断电路,选择性的判断执行磁带存储器A中的按键输入程序。计算机CPU通过执行电路执行上面语句判断电路输出的内容。最后将执行结果通过IO端口输出,并用液晶显示器显示出来。
如果出现PROGRAM BEGIN说明程序开始,与门导通,如果出现空格说明前面是一个关键字,或字符或数据,与门导通。如果出现回车说明前面是一个程序段,需要执行这段程序,与门导通。
关键字比较电路,和每个关键字的代码相互比较,如果代码相同·,执行该关键字的功能。
字符比较电路,和每个字符的代码相互比较,如果代码相同·,执行该字符的功能。
数据比较电路,和每个数据的代码相互比较,如果代码相同·,产生该数据的二进制编码。
磁带程序判断执行电路原理图
磁带程序执行控制电路原理图
出现whil()时,将键盘输入的whil(){}里面的程序保存到whil寄存器里面,与门导通,程序将重复执行whil()寄存器里面的程序。
出现switch时,将键盘输入的switch(){}里面的程序保存到switch寄存器,与门导通,电路将选择执switch寄存器里面的程序。
出现if时,将键盘输入的if{}里面的程序保存到if寄存器,与门导通,电路选择执行if寄存器里面的程序。
出现for时,将键盘输入的for(){}里面的程序保存到for寄存器里面,与门导通,程序将重复执行for寄存器里面的程序。
计算机原理图如下:
第一个计算机电路
下面资料可参见《C语言程序设计》,田淑清,周海燕,赵重敏编,高等学校教材,2000年出版。
例2.2计算圆面积
左面是从键盘输入的程序的源码,下面根据上面程序做一个电路,
#include "stdio.h"
键盘输入的程序保存到磁带上面,磁带上面的程序进入选择电路。当键盘磁带输入#include "stdio.h",与门导通,进入stdio.h类型电路。当键盘输入回车键,进入另外一个关键字判断电路。
#define PI 3.14159
当键盘磁带输入#define PI 3.14159,与门导通,PI寄存器存储数据3.14159
当键盘输入回车键,进入另外一个关键字判断电路。
main()
当键盘磁带输入main(),与门导通,进入主程序判断执行电路。当键盘输入回车键,进入另外一个关键字判断电路
{
当键盘磁带输入{,与门导通,主程序判断执行电路开始。当键盘磁带输入{,与门导通,主程序判断执行电路开始。当键盘输入回车键,进入另外一个关键字判断电路。
float r,s;
当键盘磁带输入float r,s;,与门导通,r寄存器,s寄存器为双字节数据寄存器。
当键盘输入回车键,进入另外一个关键字判断电路。
r=5.0;
当键盘磁带输入r=5.0,与门导通,r寄存器,s寄存器存储数据5.0。当键盘输入回车键,进入另外一个关键字判断电路。
s=PI*r*r;
当键盘磁带输入s=PI*r*r;,与门导通,PI寄存器里面的数据乘以r寄存器的数据,再乘以r寄存器的数据,再将结果保存在s寄存器里面。当键盘输入回车键,进入另外一个关键字判断电路。
printf("s=%f\n",s);
当键盘磁带输入printf("s=%f\n",s);,与门导通,计算机液晶显示器显示s寄存器里面的数据。。
当键盘输入回车键,进入另外一个关键字判断电路,
}
当键盘磁带输入},与门导通,主程序结束,电路关闭。
程序运行结果如下:s=78.539749。
第二个计算机电路
下面资料可参见《C语言程序设计》,田淑清,周海燕,赵重敏编,高等学校教材,2000年出版。
例3.1以下程序由终端输入两个整数给变量x和y,然后输出x和y,在交换x和y中的值后,验证两个变量中的数是否正确地进行了交换。
左面是从键盘输入的程序的源码,下面根据上面程序做一个电路,
#include "stdio.h"
键盘输入的程序保存到磁带上面,磁带上面的程序进入选择电路。当键盘磁带输入#include "stdio.h",与门导通,进入stdio.h类型电路。当键盘输入回车键,进入另外一个关键字判断电路。
main()
当键盘磁带输入main(),与门导通,进入主程序判断执行电路。当键盘输入回车键,进入另外一个关键字判断电路。
{
当键盘磁带输入{,与门导通,主程序判断执行电路开始。当键盘输入回车键,进入另外一个关键字判断电路。
int x,y,t;
当键盘磁带输入int x,y,t;,与门导通,x,y,t寄存器是字符型寄存器。当键盘输入回车键,进入另外一个关键字判断电路。
printf("Enter x & y : \n");
当键盘磁带输入printf("Enter x & y : \n");,与门导通,计算机显示器显示Enter x & y当键盘输入回车键,进入另外一个关键字判断电路。
scanf("%d%d",&x,&y);
当键盘磁带输入scanf("%d%d",&x,&y);,与门导通,从键盘输入两个数据。当键盘输入回车键,进入另外一个关键字判断电路。
printf("x=%d y=%d\n",x,y);
当键盘磁带输入printf("x=%d y=%d\n",x,y);,与门导通,计算机显示器显示输入的x,y数据当键盘输入回车键,进入另外一个关键字判断电路。
t=x; x=y; y=t;
当键盘磁带输入t=x; x=y; y=t;,与门导通,将键盘输入的x寄存器里面的数据保存到t寄存器,将键盘输入的y寄存器里面的数据保存到x寄存器,将t寄存器里面的数据保存到y寄存器里面。
当键盘输入回车键,进入另外一个关键字判断电路。
printf("x=%d y=%d\n",x,y);
当键盘磁带输入printf("x=%d y=%d\n",x,y);,与门导通,计算机显示器显示输入的x,y数据
当键盘输入回车键,进入另外一个关键字判断电路。
}
当键盘磁带输入},与门导通,主程序结束,电路关闭。
以下是程序运行情况:
Enter x & y: (由第4行的printf输出)
123 456<CR> (从键盘输入两个整数,<CR>代表按Enter键)
x=123,y=456 (从第6行的printf输出)
x=456,y=123 (从第8行的printf输出)
第三个计算机电路
main()
当键盘磁带输入main(),与门导通,进入主程序判断执行电路。当键盘输入回车键,进入另外一个关键字判断电路。
{
当键盘磁带输入{,与门导通,主程序判断执行电路开始。当键盘输入回车键,进入另外一个关键字判断电路。
int g;
当键盘磁带输入int x;,与门导通,x寄存器是字符型寄存器。当键盘输入回车键,进入另外一个关键字判断电路。
printf("Enter a mark:");
当键盘磁带输入printf("Enter a mark::");,与门导通,计算机显示器显示Enter a mark:。
当键盘输入回车键,进入另外一个关键字判断电路。
scanf("%d",&g);
当键盘磁带输入scanf("%d",&g);,与门导通,从键盘输入一个数据。
当键盘输入回车键,进入另外一个关键字判断电路。
printf("g=%d:",g);
当键盘磁带输入printf("g=%d:",g);,与门导通,计算机显示器显示输入的x,y数据
当键盘输入回车键,进入另外一个关键字判断电路。
switch(g/10)
当键盘磁带输入switch(g/10),与门导通,进入case语句判断电路。
{
case 10:
当键盘磁带输入case 10:,与门导通,计数器记录第一次出现case,显示器不显示
case 9:
printf("A\n");
当键盘磁带输入case 9:,与门导通,计数器记录第二次出现case,再次进入判断电路,当g/10在10和9之间时显示A=g,否则不显示。
case 8:
printf("B\n");
当键盘磁带输入case 8:,与门导通,计数器记录第三次出现case,再次进入判断电路,当g/10在9和8之间时显示A=g,否则不显示。
case 7:
printf("C\n");
当键盘磁带输入case 7:,与门导通,计数器记录第四次出现case,再次进入判断电路,当g/10在8和7之间时显示A=g,否则不显示。
case 6:
printf("D\n");
当键盘磁带输入case 6:,与门导通,计数器记录第五次出现case,再次进入判断电路,当g/10在7和6之间时显示A=g,否则不显示。
default:
printf("E\n");
当键盘磁带输入default:,与门导通,停止判断,显示E=g
}
当键盘磁带输入},与门导通,主程序结束,电路关闭
}
第四个数字计算机电路
下面资料可参见《C语言程序设计》,田淑清,周海燕,赵重敏编,高等学校教材,2000年出版。
例4.5编写程序,根据输入的学生成绩,给出相应的等级,90分以上的等级为A,60分以下的等级为E,其余每10分为一等级。
main()
当键盘磁带输入main(),与门导通,进入主程序判断执行电路。
当键盘输入回车键,进入另外一个关键字判断电路。
{
当键盘磁带输入{,与门导通,主程序判断执行电路开始。
当键盘输入回车键,进入另外一个关键字判断电路。
int g;
当键盘磁带输入int g;,与门导通,g寄存器是字符型寄存器。
当键盘输入回车键,进入另外一个关键字判断电路。
printf("Enter g:");
当键盘磁带输入printf("Enter g");,与门导通,计算机显示器显示Enterg。
当键盘输入回车键,进入另外一个关键字判断电路。
scanf("%d",&g);
当键盘磁带输入scanf("%d",&g);,与门导通,从键盘输入一个数据。
当键盘输入回车键,进入另外一个关键字判断电路。
printf("g=%d:",g);
当键盘磁带输入printf("g=%d:",g);,与门导通,计算机显示器显示输入的x,y数据。
当键盘输入回车键,进入另外一个关键字判断电路。
if(g>=90)
printf("A\n");
当键盘磁带输入else if(g>=90),与门导通,将寄存器g里面的数据和90比较,如果大于90,将寄存器g里面的数据显示出来显示A=g,如果小于90进入下一个判断语句。
当键盘输入回车键,进入另外一个关键字判断电路。
else if(g>=80)
printf("B\n");
当键盘磁带输入else if(g>=80),与门导通,将寄存器g里面的数据和80比较,如果大于80,将寄存器g里面的数据显示出来显示B=g,如果小于80进入下一个判断语句。
else if(g>=70)
printf("C\n");
当键盘磁带输入else if(g>=70),与门导通,将寄存器g里面的数据和70比较,如果大于70,将寄存器g里面的数据显示出来显示C=g,如果小于70进入下一个判断语句。
else if(g>=60)
printf("D\n");
当键盘磁带输入else if(g>=60),与门导通,将寄存器g里面的数据和60比较,如果大于60,将寄存器g里面的数据显示出来显示D=g,如果小于60进入下一个判断语句。
else
printf("E\n");
当键盘磁带输入else,与门导通,,将寄存器g里面的数据显示出来显示E=g,
}
当键盘磁带输入},与门导通,主程序结束,电路关闭。
数值大小比较电路
两数相减,得到的数据进行平方计算,如果是负数,平方后得到正数,开方后得到正数,加上原来的负数,输出0。
两数相减,得到的数据进行平方计算,如果是正数,平方后得到正数,开方后得到正数,加上原来的正数,输出正数。
如果加法器输出0,或门输出1,与门输出1,状态寄存器A保存1,证明两数相减得到的是负数,反之,则是正数。
第五个计算机数字电路
main()
当键盘磁带输入main(),与门导通,进入主程序判断执行电路。
当键盘输入回车键,进入另外一个关键字判断电路。
{
当键盘磁带输入{,与门导通,主程序判断执行电路开始。
当键盘输入回车键,进入另外一个关键字判断电路。
int i,sum;
当键盘磁带输入int i,sum;,与门导通,i寄存器,sum寄存器是字符型寄存器。
当键盘输入回车键,进入另外一个关键字判断电路。
i=1;
当键盘磁带输入i=1;,与门导通,将数据1保存到i寄存器。
当键盘输入回车键,进入另外一个关键字判断电路。
sum=0;
当键盘磁带输入sum=0;,与门导通,将数据0保存到sum寄存器。
当键盘输入回车键,进入另外一个关键字判断电路。
while(i<=100)
当键盘磁带输入while(i<=100),与门导通,当i寄存器里面的数据小于等于100时,进行判断。当键盘输入回车键,进入另外一个关键字判断电路。
{
当键盘磁带输入{,与门导通,进入下一个判断语句。
当键盘输入回车键,进入另外一个关键字判断电路。
sum=sum+i;
当键盘磁带输入sum=sum+i;,与门导通,将寄存器sum的数据加上寄存器i的数据,再保存到寄存器sum,每进行一次加法,JK触发器反转一次,与门导通,关闭一次,。
i++;
当键盘磁带输入i++,与门导通,寄存器i里面的数据加1,再将得到的和保存到寄存器i里面,每进行一次加法JK触发器反转一次,与门导通关闭一次,
}
printf("sum=%d\n",sum);
当键盘磁带输入printf("sum=%d\n",sum);,与门导通,液晶显示器显示sum等于sum寄存器里面的数据。
}
当键盘磁带输入},与门导通,主程序结束,电路关闭。
程序运行后结果:sum=5050。
第六个数字计算机电路
main()
当键盘磁带输入main(),与门导通,进入主程序判断执行电路。
当键盘输入回车键,进入另外一个关键字判断电路。
{
当键盘磁带输入{,与门导通,主程序判断执行电路开始。
当键盘输入回车键,进入另外一个关键字判断电路。
int i,s,n;
当键盘磁带输入int i,s,n,与门导通,i寄存器,s寄存器,n寄存器接通成为字符型寄存器。
当键盘输入回车键,进入另外一个关键字判断电路。
s=1;
当键盘磁带输入s=1;,与门导通,将数据1保存到i寄存器s。
当键盘输入回车键,进入另外一个关键字判断电路。
printf("Enter n: ");
当键盘磁带输入printf("Enter n: ");,与门导通,计算机液晶显示器显示Enter n:。
当键盘输入回车键,进入另外一个关键字判断电路。
scanf("%d",&n);
当键盘磁带输入scanf("%d",&n);,与门导通,从键盘输入一个数据,计算机将该数据保存到n寄存器里面。
当键盘输入回车键,进入另外一个关键字判断电路。
for(i=1,i<=n;i++)
当键盘磁带输入for(i=1,i<=n;i++),与门导通,只有当寄存器i里面的数据小于等于寄存器n里面的数据才执行下面的过程,且从i=1开始不断重复执行该过程,每执行一次该过程i加1.直到i=n时停止。
当键盘输入回车键,进入另外一个关键字判断电路。
s=s*i;
当键盘磁带输入s=s*i,与门导通,将寄存器s的数据乘上寄存器i的数据,再保存到寄存器s,
printf("s=%d\n",s);
当键盘磁带输入printf("s=%d\n",s);,与门导通,计算机显示器显示s寄存器里面的数据。。
}
当键盘磁带输入},与门导通,主程序结束,电路关闭。
以上程序是连乘的算法的典型例题,与累加一样连乘也是程序设计中的基本算法之一。
程序中i从1变化到n,每次增1. 循环体内的表达式s=s*i用来进行连乘。在连乘算法中,存放连乘积的变量也必须赋初值,显然初值不能用0. 在本例中s的初值为1,当i=1时,进行1*1的运算,给s赋1,当i=2时,将进行1*2的运算,重新给s赋2,当i=3时,将进行2*3的运算,重新给s赋6,依次类推,当i=n时,进行s*n的运算,s中最终将存入1*2*3*...n的值。以上程序执行时,若给n输入5,变量i和s中值的变化如表5.1所示。
表5.1
i的值 1 2 3 4 5
s的值 1 2 6 24 120
第七个数字计算机
下面资料可参见《C语言程序设计》,田淑清,周海燕,赵重敏编,高等学校教材,2000年出版。
例9.5,将数组中的数按颠倒的顺序重新存放,在操作时,只能借助一个临时存储单元而不得另外开辟数组。注意:不是要求按颠倒的顺序打印数据,而是要求按逆序重新放置数组中的内容。假定a数组有8个元素,它们中的原始内容如图9.2所示。
图9.2
10 20 30 40 50 60 70 80
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7]
现要求改变成如图9.3所示的存储内容。
图9.3
80 70 60 50 40 30 20 10
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7]
程序中调用priout函数输出数组中的内容。函数invert用以对调数组中的内容。在invert函数中,变量i和j的初值分别为0和7,接着将a[0]和a[7]对调,然后变量i和j分别增1和减1,变为1和6,接着将a[1]和a[6]对调,如此操作,当i等于或大于j时,则对调完成。
程序如下:
左面是从键盘输入的程序的源码,下面根据上面程序做一个电路,
键盘输入的程序保存到磁带上面,磁带上面的程序进入选择电路。
#include "stdio.h"
当键盘磁带输入#include "stdio.h",与门导通,进入#include "stdio.h"类型电路。
当键盘输入回车键,进入另外一个关键字判断电路。
#define NUM 8
当键盘磁带输入#define NUM 8,与门导通,NUM寄存器为8个存储单元,分别存储数据1,2,3,4,5,6,7,8。
当键盘输入回车键,进入另外一个关键字判断电路。
main()
当键盘磁带输入main(),与门导通,进入主程序判断执行电路。
//用置初始值的方法给a数组放入数据//
当键盘输入回车键,进入另外一个关键字判断电路
{
当键盘磁带输入{,与门导通,主程序判断执行电路开始。
当键盘输入回车键,进入另外一个关键字判断电路。
int a[NUM]={10,20,30,40,50,60,70,80};
当键盘磁带输入int a[NUM]={10,20,30,40,50,60,70,80};,与门导通,r寄存器,a[]寄存器为8个存储单元,分别为a[1]=10,a[2]=20,a[3]=30,a[4]=40,a[5]=50,a[6]=60,a[7]=70,a[8]=80。
当键盘输入回车键,进入另外一个关键字判断电路。
priout(a,NUM);
当键盘磁带输入priout(a,NUM);,与门导通,顺序存储数组a[NUM]里面的数据。
当键盘输入回车键,进入另外一个关键字判断电路。
printf("Output primary data :"); //输出原始数据//
当键盘磁带输入printf("Output primary data :");,与门导通,计算机显示器显示Output primary data :后面为数组a[]里面的数据。
当键盘输入回车键,进入另外一个关键字判断电路。
invert(a,NUM);
当键盘磁带输入invert(a,NUM);,与门导通,将数组a[NUM]里面的数据颠倒存储。
当键盘输入回车键,进入另外一个关键字判断电路。
printf("Output the inverse data :");
当键盘磁带输入printf("Output the inverse data :");,与门导通,计算机显示器显示"Output the inverse data :后面是颠倒后的数据。
}
当键盘磁带输入},与门导通,主程序结束,电路关闭。
第八个数字计算机电路
下面资料可参见《C语言程序设计》,田淑清,周海燕,赵重敏编,高等学校教材,2000年出版。
例9.10通过键盘给2*3的二维数组输入数据,第一行赋1,2,3,第二行赋10,20,30,然后按行输出此二维数组。本例题示例了引用二位数组元素对二维数组进行输入和输出的基本方法。
左面是从键盘输入的程序的源码,下面根据上面程序做一个电路,
键盘输入的程序保存到磁带上面,磁带上面的程序进入选择电路。
main()
当键盘磁带输入main(),与门导通,进入主程序判断执行电路。
{
当键盘输入回车键,进入另外一个关键字判断电路。
当键盘磁带输入{,与门导通,主程序判断执行电路开始。
当键盘输入回车键,进入另外一个关键字判断电路。
int a[2][3],i,j;
当键盘磁带输入int a[2][3],i,j;,与门导通,定义一个二维数组a[i][j],这个二维数组有2行,每行3个数据。
当键盘输入回车键,进入另外一个关键字判断电路。
printf("Enter data by line :\n");
当键盘磁带输入printf("Enter data by line :\n");,与门导通,计算机显示器显示Enter data by line。
当键盘输入回车键,进入另外一个关键字判断电路。
scanf("%d",&a[i][j]);
当键盘磁带输入scanf("%d",&a[i][j]);,与门导通,从键盘输入2维数组的数据。
当键盘磁带输入i1j1=1,i1j2=2,i1j3=3,i2j1=10,i2j2=20,i2j3=30,,与门导通,从键盘输入2维数组的数据。
当键盘输入回车键,进入另外一个关键字判断电路
printf("Output a 2-dimension array : \n");
当键盘磁带输入printf("Output a 2-dimension array : \n");,与门导通,计算机显示Output a 2-dimension array :后面是数组的数据。
当键盘输入回车键,进入另外一个关键字判断电路。
}
当键盘磁带输入},与门导通,主程序结束,电路关闭。
当运行以上程序,从键盘输入i1j1=1,i1j2=2,i1j3=3,i2j1=10,i2j2=20,i2j3=30,回车,
此时计算机液晶显示器显示如下:
1,2,3,
10,20,30,
第九个数字计算机电路
下面的内容可参见《数据结构,C语言版》,严蔚敏,吴伟民编,清华大学出版社1997年出版。
例1.7抽象数据类型Triplet的表示和实现。
//采用动态分配的顺序存储结构。
typedef ElemType *Triplet;
//由InitTriplet分配3个元素存储空间。
//基本操作的函数原型说明
当键盘磁带输入typedef ElemType *Triplet;与门导通,接入Triplet存储空间,这个存储空间分为3个元素。
Status InitTriplet(Triplet&T,ElemType v1,ElemType v2,ElemType v3);
//操作结果,构造了三元组T,元素e1,e2,e3分别被赋以参数v1,v2,v3的值。
当键盘磁带输入Status InitTriplet(Triplet&T,ElemType v1,ElemType v2,ElemType v3);,与门导通,T存储空间分为三部分,分别为e1,e2,e3,分别将数据v1,v2,v3存储到这三个存储空间。
Status DestroyTriplet(Triplet & T);
//操作结果,三元组T被销毁
当键盘磁带输入Status DestroyTriplet(Triplet & T);,三个存储空间T中的数据清零。。
Status Get (Tripler T,int i,ElemType & e);
//初始条件,三元组T已存在,1≤i≤3。
//操作结果,用e返回T的第i元的值。
当键盘磁带输入Status Put (Triplet & T,int i,ElemType e);,将存储空间第i单元的数据保存到寄存器e里面。
Status Put (Triplet & T,int i,ElemType e);
//初始条件,三元组T已存在,1≤i≤3。
//操作结果,改变T的第i元的值为e。
当键盘磁带输入Status Get (Tripler T,int i,ElemType & e);,用寄存器组T里面第i个存储单元保存寄存器e的数据。
Status IsAscending (Triplet T);
//初始条件,三元组T已存在,1≤i≤3。
//操作结果,如果T的3个元素按升序排列,则返回1,否则返回0.
如果键盘磁带输入Status IsAscending (Triplet n T);,检查T中的三个存储数据是否按升序排列,如果是,标志寄存器A保存1,否则为0。
Status IsDescending (Triplet T);
//初始条件,三元组T已存在,1≤i≤3。
//操作结果,如果T的3个元素按降序排列,则返回1,否则返回0.
如果键盘磁带输入Status IsDescending (Triplet T);,检查T中的三个存储数据是否按降序排列,如果是,标志寄存器B保存1,否则为0。
Status Max (Triplet T,ElemType & e);
//初始条件,三元组T已存在,1≤i≤3。
操作结果,用e返回T的3个元素中的最大值。
如果键盘磁带输入Status Max (Triplet T,ElemType & e);,将3个数中的最大者存储在寄存器e中。
第十个数字计算机的电路
抽象数据类型线性表的定义如下:
ADT List{
如果键盘磁带输入ADT List{,开始线性表对应的数排数据存储单元。
InitList(&L);
操作结果,构造一个空的线性表L。
如果键盘磁带输入InitList(&L),与门导通,接入一排寄存器,这些存储器构成一个存储表的存储单元。
DestroyList(&L);
初始条件:线性表L已存在。操作结果,将L重置为空表。
如果键盘磁带输入DestroyList(&L),将一排存储单元清零。
ListEmpty(L);
初始条件,线性表已存在。
操作结果,返回L中数据元素个数。
如果键盘磁带输入ListEmpty(L),将一排存储单元中的数据的个数输出到标志寄存器,
GetElem(L,i,&e)
初始条件,线性表L已存在,1≤i≤ListLength(L)。
操作结果,用e返回L中第i个数据元素的值。
如果键盘磁带输入GetElem(L,i,&e),将L存储表中的第i个存储单元的数据存储到e寄存器里面。
}