分布式作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1,计算、计算模型与计算机的概念
计算:信息的描述和变换的过程。
计算模型:是刻划计算这一概念的形式系统,是指能够对所处理对象的信息进行接收、表示、变换和输出的数学机器。
典型代表如图灵机。
计算机:实现计算模型的一种物理装置。
2,何为形式系统?试举一例。
形式系统:用形式化方法对事物及其关系和变化规律进行描述的知识体系。
例:自然数及其运算规则的形成。
3,什么是逻辑变量?什么是逻辑函数?
逻辑:就是因果关系的规律性。
一般人们称决定事物的因素(原因)为逻辑变量,而称被决定事物的结果为由逻辑变量表示的逻辑函数。
4,现代电子数字计算机最小的数据单位是什么?比特
5,现代电子数字计算机最基本的运算有哪些?与或非
6,试给出1位全加法器的逻辑表达式。
一位全加器(FA)的逻辑表达式为:
S=A⊕B⊕Cin ; Co=ACin+BCin+AB
其中A,B为要相加的数,Cin为进位输入;S为和,Co是进位输出;
7,试给出2-4译码器的逻辑表达式
由真值表可写出各输出端逻辑表达式:
Y0=E一+X1+X2 Y1=E一+X1+X2一 Y2=E一+X1一+X2 Y3=E一+X1一+X2一8,试给出4-2编码器的逻辑表达式
Y 0=I
I—
1
I
2
I
3
+ I
I
1
I
2
I—
3
;Y
1
=I
I
1
I—
2
I
3
+ I
I
1
I
2
I—
3
;
9,现代电子数字计算机的基本原理是什么?
存储程序和程序控制。
10,现代电子数字计算机体系结构是什么?它的发明人是谁?
计算机包括运算器、存储器、控制器、输入和输出设备五大基本部分。
冯.诺依曼(Von Neumann):美藉匈牙利科学家,早期研究数理逻辑,1944年夏天,参加ENIAC的设计,1945年3月,提出第一台存储程序式通用电子计算机──EDVAC 的设计方案,1952年制造成功。
11,现代电子数字计算机是怎样自动运行的?
程序计数器
12,现代电子数字计算机中,怎样表示它能完成的基本功能?
指令系统
13,求模运算中的模是什么意思?它和补码有何关系?
模:一个计量系统的计数范围,、一个负整数(或原码)与其补数(或补
码)相加,和为模。
14,怎样得到二进制负数的补码?为什么?
符号位为1,其余位均为该数绝对值得原码按位取反,然后整体加1.
15,自动寻址功能是计算机能自动运行的关键,试述图灵机的自动寻址功能
一条两端可无限延长的带子,一个读写头,一个控制器,带子由可擦写的小格组成,读写头可左右移动并读写,可写字符集{0,1,b},控制器有有穷个状态,一个开始状态,一个结束状态,控制器的命令为:(状态,符号)(写符号,移动,新状态)
图灵机从开始状态工作直到结束状态停止,带上的内容就是计算结果。
16,通用图灵机对发明现代电子数字计算机的重要意义。
通用图灵机的重要意义:1把程序也作为数据;2存储程序和程序控制。
(1)图灵机存储空间无限,计算机存储空间有限。
(2)、图灵机指令系统不定,计算机指令系统确定。
(3)、图灵机仅是理论模型,计算机是其物理实现。
所以,从理论上讲,图灵机的能力比计算机的能力强。
通用图灵机证明了通用计算理论,肯定了计算机实现的可能性,同时给出了计算机应有的主要架构;通用图灵机引入程序的概念,将程序也作为数据,基本原理是存储程序和程序控制,为计算机的发展奠定了基础。
17,计算机模拟了人类的哪些智能?
对记忆功能的仿真——数据和程序的存贮。
对自动处理功能的仿真——程序的自动执行。
18,人工智能的极限是什么?
形式化局部处理。
计算机的基本智能:严格形式化的数据存储和程序的自动执行。
人类对于信息的存贮与处理是全息式的:
⒈存贮与处理全方位的信息;⒉存贮与处理是同时进行的。
19,给出x+1图灵机的形式描述,画出其有限状态自动机和流程图,并分析它们间的关系:用C语言编写一模拟通用图灵机的程序,用x+1图灵机进行验证。
“x+1”图灵机:输入x,输出x+1,功能固定的一个程序。
图灵机状态集合 {start,add,carry,noncarry,overflow,return,halt};字母表{0,1,*};初始状态s为start;停机状态集合 {halt}。
“x+1”图灵机转换规则集合
#include<stdio.h> #include<string.h>
void print(int len,char a[100]); char a[100]; char currstate[10]="start"; char newstate[10]="s"; int main(void)
{
int i,length;
printf("计算“x+1”的图灵机工作过程\n");
//printf("请输入二进制的位数:");
//scanf("%d",&length);
printf("请输入二进制数x:");gets(a);
///for(i=0;i<length;i++)
//scanf("%c",&a[i]);
//int length=i;
//for(i=0;i<length;i++)
// printf("%c",a[i]);
length=strlen(a);
i=length-1;
a[length]='\0';
//printf("%d",length);
while((strcmp(newstate,"h alt"))!=0)
{
if(!strcmp(currstate,"start") ){
strcpy(newstate,"add");
print(length,a);
strcpy(currstate,newstate
i--;
}
if(!strcmp(currstate,"add ")){
if(a[i]=='0'){
a[i]='1';
strcpy(newstate,"noncarry");
print(length,a);
strcpy(currstate,newstate);
i--;
//print(length,a);
}
else if(a[i]=='1'){
a[i]='0';
strcpy(newstate,"carry");
print(length,a);
strcpy(currstate,newstate);
i--;
//print(length,a);
}
else
{a[i]='*';
strcpy(newstate,"halt");
print(length,a);
strcpy(currstate,newstate);
i--;
//print(length,a);
// break;
}
}
if(!strcmp(currstate,"carry")){
if(a[i]=='0'){
a[i]='1'; strcpy(newstate,"noncarry");
print(length,a); strcpy(currstate,newstate);
i--;
//print(length,a);
// break;
}
else if(a[i]=='1'){
a[i]='0';
strcpy(newstate,"carry");
print(length,a); strcpy(currstate,newstate);
i--;
//print();
//break;
}
else
{a[i]='1';
strcpy(newstate,"overflow");
print(length,a); strcpy(currstate,newstate);
i--;
// print(length,a);
// break;
}
}
if(!strcmp(currstate,"noncarry") ){
if(a[i]=='0'){
a[i]='0';
strcpy(newstate,"noncarry");
print(length,a);
strcpy(currstate,newstate);
i--;
// print(length,a);
// break;
}
else if(a[i]=='1'){
a[i]='1';
strcpy(newstate,"noncarry");
print(length,a);
strcpy(currstate,newstate);
i--;
//print(length,a);
// break;
}
else
{
a[i]='*';
strcpy(newstate,"return");
print(length,a);
strcpy(currstate,newstate);
i--;
// print(length,a);
// break;
}
}
if(!strcmp(currstate,"ove rflow")){
if((a[i]=='0')||(a[i]=='1')){
a[i]='*';
strcpy(newstate,"return");
print(length,a);
strcpy(currstate,newstate);
i--;
//
print(length,a);
// break;
}
}
if(!strcmp(currstate,"return" )){
if(a[i]=='0'){
a[i]='0';
strcpy(newstate,"return");
print(length,a);
strcpy(currstate,newstate);
i--
}
else if(a[i]=='1'){
a[i]='1';
strcpy(newstate,"return");
print(length,a);
strcpy(currstate,newstate);
i--;
}
else
{a[i]='*';
strcpy(newstate,"halt");
print(length,a);
//strcpy(currstate,newstate);
// print(length,a);
//break;
}
}
}
return 0;
}
void print(int len,char a[100])
{
int length=len;
int j;
printf("%10s",currstate);
putchar('\t');
putchar('\t');
for(j=0;j<=length-1;j++)
{
printf("%c",a[j]);
putchar('\t');}
printf("%10s",newstate);
putchar('\n');
}
20,编写一程序,根据考研信息把你们班的同学分成5类:根据你的考研信息把你放入其中分好的类中。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
//快速排序函数
int Partition(int A[],int low,int high)
{
int temp = A[low];
while(low<high)
{
while(low<high&&A[high]>=temp) --high;
if(low<high)
{
A[low]=A[high];
low=low+1;
}
while(low<high&&A[low]<temp) ++low;
if(low<high)
{
A[high]=A[low];
high=high-1;
}
}
A[low] = temp;
return low;
}
void QuickSort(int A[],int low,int high)
{
if(low<high){
int pos =
Partition(A,low,high);
QuickSort(A,low,pos-1);
QuickSort(A,pos+1,high);
}
}
int main()
{
int A[100],i;
int n;
int
A1[30],A2[30],A3[30],A4[30],A5[3 0];
printf(“请依次输入每个同学的考研成绩”);
scanf(“%d”,&n);
for(i=0;i<n;i++){
scanf(“%d”,&A[i]);
}
for(i=0;i<100;i++)
A[i] = rand();
printf("排序前的成绩为:\n");
for(i=0;i<100;i++)
printf("%-8d",A[i]);
printf("\n");
printf("排序后的成绩为:\n");
QuickSort(A,0,99);//快速排序
for(i=0;i<100;i++)
printf("%-8d",A[i]);
printf("\n");
int j = 0;
i = 0;
while(i>=265&&i<280)
{
A1[j++] = A[i++];
}
j=0;
while(i>=280&&i<300)
{
A2[j++] = A[i++];
}
j = 0;
while(i>=300&&i<310)
{
A3[j++] = A[i++];
}
j = 0;
while(i>=310&&i<320)
{A4[j++] = A[i++];
}
j = 0;
while(i>320)
{
A5[j++] = A[i++];
}
printf("A1类为:\n");
for(i=0;i<20;i++)
printf("%-8d",A1[i]); printf("A2类为:\n");
for(i=0;i<20;i++)
printf("%-8d",A2[i]); printf("A3类为:\n");
for(i=0;i<20;i++)
printf("%-8d",A3[i]); printf("A4类为:\n");
for(i=0;i<20;i++)
printf("%-8d",A4[i]);
printf("A5类为:\n");
for(i=0;i<20;i++)
printf("%-8d",A5[i]);
//将r放入各类别数组中
if(r>=265&&r<280)
{
A1[20] = r;
printf("放入后的A1类为:\n");
for(i=0;i<21;i++)
printf("%-8d",A1[i]);
}
else if(r>=280&&r<300)
{A2[20] = r;
printf("放入后的A2类为:\n");
for(i=0;i<21;i++)
printf("%-8d",A2[i]);
}
else if(r>=300&&r<310)
{
A3[20] = r;
printf("放入后的A3类
为:\n");
for(i=0;i<21;i++)
printf("%-8d",A3[i]);
}
else if(r>=310&&r<320)
{
A4[20] = r;
printf("放入后的A4类为:\n");
for(i=0;i<21;i++)
printf("%-8d",A4[i]);
}
else
{
A5[20] = r;
printf("放入后的A5类为:\n");
for(i=0;i<21;i++)
printf("%-8d",A5[i]);
}
printf("\n");
return 0; }。