当前位置:文档之家› 分布式作业

分布式作业

分布式作业
分布式作业

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 #include

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

//scanf("%c",&a[i]);

//int length=i;

//for(i=0;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

#include

#include

//快速排序函数

int Partition(int A[],int low,int high)

{

int temp = A[low];

while(low

{

while(low=temp) --high;

if(low

{

A[low]=A[high];

low=low+1;

}

while(low

if(low

{

A[high]=A[low];

high=high-1;

}

}

A[low] = temp;

return low;

}

void QuickSort(int A[],int low,int high)

{

if(low

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

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; }

相关主题
文本预览
相关文档 最新文档