新型計算系統編譯
1. python製作一個小學生加法准確率計算系統。
打開idle。點擊file,然後點擊new file.這是創建一個新的文件。這一步經常用到,比較簡單。
如何使用python編程寫一個加法計算器
新建一個文件之後,我們輸入第一行代碼,使用print函數,在屏幕上列印一句話,其中字元串要使用雙引號,輸入法要使用英文輸入法,如果符號使用中文輸入法輸入,就會出現錯誤。print("我們做一個兩個整數相加的計算題!")
如何使用python編程寫一個加法計算器
同理,在屏幕上列印第二句話,與用戶交互,提醒用戶輸入第一個數。輸入代碼注意事項一定要記清楚。
如何使用python編程寫一個加法計算器
第三行調用input函數,將用戶輸入的內容賦值給a,這時候a收到的是字元串信息,所以需要下一步把字元串轉換為整型。這輸入計算機處理數據指令。
a=input()
x=int(a)
如何使用python編程寫一個加法計算器
如何使用python編程寫一個加法計算器
然後依照以上的步驟寫第二個加數,和最後輸出的和,注意最後一句列印結果時,引號內部是字元串形式,x+y是數值形式,所以需要在中間加上一個逗號。如果不加逗號就會提示錯誤信息,以上就是所有的程序編寫完成,下一步就開始保存,命名,運行。如圖所示
如何使用python編程寫一個加法計算器
如何使用python編程寫一個加法計算器
如何使用python編程寫一個加法計算器
點擊運行之後,系統按照我們的設置列印出信息,然後提示你輸入第一個數,我們直接輸入一個整數,然後回車,系統會提示輸入第二個數。接著輸入第二個數,敲回車之後直接就顯示最終的和。
如何使用python編程寫一個加法計算器
如何使用python編程寫一個加法計算器
如何使用python編程寫一個加法計算器
如何使用python編程寫一個加法計算器
7
這是一個比較簡單的交互界面,我們學會了這個方法,可以製作其他一些比較好玩有趣的東西,學會舉一反三,主要記住input函數,print函數的用法。以及代碼輸入規范。
2. 闡述21世紀計算機的發展趨勢以及將給人類帶來什麼重大影響。
21世紀是人類走向信息社會的世紀,是網路的時代,是超高速信息公路建設取得實質性進展並進入應用的年代。那麼在世紀之交的今天,信息技術的發展將會有什麼新的變化呢?
1、晶元技術
從1971年微處理器問世後,計算機經歷了4位機、8位機和16位機的時代,90年代初,出現了32位結構的微處理器計算系統,並將進入64位計算時代。自從1991年MIPS公司的64位機R4000問世之後,已陸續有DEC公司的Alpha 21064、21066、21164和21264,HP公司的PA8000IBM/Motorola/Alpha的Power PC 620,Sun的Ultra-SPARC以及Intel公司的Merced等64位機出現。
2、並行處理技術
並行處理技術括:並行結構、並行演算法、並行操作系統、並行語言及其編譯系統。另外,並行處理方式有多處理機體系結構、大規模並行處理系統、工作站群(包括工作站機群系統、網路工作站)。
目前,MP是指具有100個以下CPU的系統,MPP是指具有100個上以CPU的系統。
3、分布式客戶/伺服器模式
早期的集中式主機模式逐漸被客戶/伺服器模式所取代,如今已發展為基於Internet和Web技術的三層模式,在這種模式下,伺服器網路通信和應用平台的發展趨勢如何,也是人們關注的焦點。伺服器技術的發展趨勢是由32位機向64位機過渡。DEC已率先實現了這一過渡。預計,在1998--1999年各主要硬體廠商也將完成這一過渡,如HP、IBM、SGI等。伺服器的總體結構模式將由目前的UMA、NUMA和MPP等模式發展到利用高速交換設備把多個CPU、內存和I/O模塊聯接在一起的Crossbar Switches模式,從而將大大提高CPU、內存和I/O的通信帶寬與互聯能力以及伺服器的處理能力,其配置更注重靈活性、可伸縮性和可靠性,而成為下一代高性能伺服器。
存儲設備也將向網路化發展,通過高速光纖通道與其存儲交換設備通道聯接在一起;存儲設備將實現集中管理;存儲設備的動態分布和分配使應用軟體所需的存儲容量變得十分靈活;網路化存儲設備可實現網路連到哪裡,存儲設備也分布到哪裡。
4、64位操作系統
目前有DEC的Digital Unix 4.0、Open VMS 7.0版(1996年)和SGI公司的Cluter IRIX 6.2版。在1998~2000年還將有Windows NT(64位)5.0版,SUN的Solaris將支持Intel的Merced 64位晶元,因而64位的Solaris將成為64位Unix的主流。此外,SCO公司也宣布過支持64位OS。
2001-2005年64位計算系統將走向成熟。DEC和SGI的64位Unix系統最為完善,包括64位計算的硬體平台、操作系統、應用開發工具。DEC的64位技術處於明顯的領先地位,不僅有64位晶元、操作系統、開發工具,還有8000多種應用軟體正從32位向64位移植。DEC的Alpha Server 8400、4100和2100已有相當多的用戶。未來的5-10年中仍然是縱向技術市場集成,易於實現網路時代各檔系統無縫聯接的要求。支持Unix/Windows NT集成軟體環境,這是未來技術市場發展的大趨勢。
5、千兆位網路
千兆位乙太網很有吸引力,這主要是因為: 在不影響現有網路的情況下,可獲得更高帶寬。千兆位乙太網與乙太網及快速乙太網使用相同的變數長度幀格式。無須對網路進行其它改動便可使用千兆位乙太網。千兆位乙太網是在老的乙太網用戶中安裝的,因而總成本較低。千兆位乙太網分為交換式、路由式和共享式多種解決方案。所有的網路技術,包括IP交換技術和Layer交換技術,均與千兆位乙太網全面兼容。
6、網路計算
企業管理,特別是經歷了庫存管理、物料需求計劃(MRP)、製造資源計劃(MRP-Ⅱ)等發展階段,如今發展到了企業資源計劃(ERP)。企業在生產計劃、物資需求、成本核算、營銷管理、市場策略等方面的需求構成了企業計算。
在21世紀即將到來之際,世界各大硬體公司都提出了自己對未來的看法,諸如IBM的網路中心計算、SCO的Internet計算、Oracle的網路計算、Sybase的分布式計算、Intel的MMX計算、Microsoft的NT計算、DEC的Web計算、HP的可縮放優質伺服器、Sun公司的Java計算等。Sun早就提出了「網路就是計算機」的口號。總之,從世界IT發展趨勢看,網路計算時代已經到來。
7、企業網路技術的發展
從80年代初開始,企業區域網經歷了兩個主要發展階段,即共享主幹網(如單一區域網、橋式區域網和路由區域網等)和交換主幹網(如乙太網、快速乙太網、FDDI交換網、ATM交換網)。總的發展趨勢是從共享式主幹網向交換式主幹網方向發展。目前,企業網主要面臨著以下問題:
· 網路的規模越來越大,企業內部用戶增多,信息量增大,處理模式也趨於復雜,因而對響應時間和運算精度的需求也越來越高。網路結構、通信介質和方式越來越復雜,既有廣域通信和移動通信,也有局域通信,既有撥號低速通信介質,也有高速光纖介質。
· Internet/Intranet的應用增加了對網路帶寬的需求,特別是對多媒體通信的要求越來越迫切。
· 網上應用越來越多,這一切都對網路的帶寬、速度、可靠性和靈活性提出了越來越高的要求。虛擬網具有允許建立獨立於物理位置的邏輯網、通過軟體進行網路配置等功能,以及簡化網路管理、優化帶寬使用等一系列優點,代表了網路技術今後的發展方向。
8、應用平台的發展
21世紀信息系統的應用模式必然走開放的道路。IEEE把開放系統定義為基於開放標準的中性應用環境。Unix和Windows NT是開放的操作系統,Internet是最大的開放應用環境。Internet的發展使人們看來未來的NII(國家信息基礎設施)和NIN(國家信息網路)的一種新的應用模式,即Internet/Intranet/Extranet模式。這種模式的基本思路是:
· 整個網路使用Internet高速開放的TCP/IP協議進行通信。
· 利用防火牆或隧道技術,形成單位的Intranet,建立必要的安全保密機制。
· 利用Web作為統一的軟體開發和應用平台。
利用Web作為軟體開發和應用平台具有以下優點:
· 具有很強的系統獨立性,用戶可以使用具有HTML瀏覽器的計算機,而不管是運行Unix還是Windows NT。
· 系統管理員不需要針對具體用戶安裝軟體,系統可以整體升級。
· 系統設計人員可以假定前端的應用伺服器全部是Web伺服器。
· 具有很強的位置獨立性,不論安裝在何處或安裝在什麼計算機上。
· 對聯接的帶寬沒有特殊要求,可以很寬,且存取很快,也可以是帶寬較窄的低速通信。
· 容易檢索數據,可以使用適當的索引引擎,有效地找到Web資料。
· 具有很高的可靠性,保護所有數據和事務處理的保密性和完整性。
·Web是世界上最大的多處理機和分布式系統,它使用冗餘技術(系統機群、雙網路通道、RAID磁碟陣列),保證系統的可靠性和完整性。
總之,Web平台把開放性和通用性結合在一起,提供應用平台、運行環境和人機界面,實現軟體和信息的廣泛共享,必將引起信息產業界的一場革命。
9、基於Internet的中文信息處理技術
·中文信息處理平台。
·中文信息處理關鍵技術,包括中文需求信息的輸入、中文文本的自動生成、語義理解、快速檢索、雙向翻譯、Internet多媒體中文信息處理、基於WWW的語境類似度的研究。
·基於Internet的現代漢語語料庫的建立。
·中文界面的可視化、可聽化、可操作化技術。
·Internet URL的中文分類、對照索引和內容提要。
10、Java技術
Java晶元的開發,如晶元的設計和生產、嵌入式家用電器、基於Java技術的新型計算機系統、網路計算機系統、Web TV或Internet TV頂置盒(TSB)等。
企業綜合信息處理系統,如企業Java Computing、Java在金融業中的應用、電子貿易、電子商務等。
Java在Internet和Intranet方面的應用,如Website信息咨詢服務、WWW資源集成、電子廣告、遠程教學、遠程醫療等。
使用Java是大勢所趨。
11、多媒體技術
多媒體技術使計算機具有綜合處理聲音、文字、圖像和視頻信息的能力,其豐富的聲、文、圖信息和方便的交互性與實時性,極大地改善了人機界面,改善了計算機的使用方式,為計算機進入人類生活的各個領域打開了大門。因而,盡快發展我國多媒體技術和多媒體產業具有重大意義。
多媒體技術是我國信息化工程的介面技術,也是我國計算機產業的關鍵技術。多媒體技術是解決高清晰度電視、常規電視數字化、互動式電視、點播電視、多媒體電子郵件、遠程教學、遠程醫療、家庭辦公、家庭購物、三電一體化等問題的最佳方法。另外,也是改造傳統產業,特別是出版印刷、影視、廣告、娛樂等產業的先進技術。
多媒體軟體開發技術的主要項目有:
·多媒體資料庫開發技術;
·多媒體通信開發技術;
·多媒體著作工具開發技術;
·利用多媒體應用軟體,發展多媒體電子出版物的技術。
3. 邊緣計算是一種新型應用還是新型計算系統
近年來,隨著大數據的廣泛應用,雲計算也受到大量的關注和追捧,而悄悄的,邊緣計算開始受到關注,不少人相信邊緣計算將會取代雲計算。那麼,邊緣計算VS雲計算嗎,誰更有優勢? 邊緣計算是指近運算的概念,將運算更靠近數據源所在的本地區網(Local Network)內運算,盡可能不用將數據回傳雲端,以減少數據往返雲端的等待時間及網路帶寬成本。邊緣計算通常是在本地端和雲端兩邊交界的附近做運算處理,也就是數據進出區網附近的位置,這么做的目的,在於既可以將運算環境放在本地,同時又可以靠近雲端邊界附近,藉此跟雲銜接。畢竟並不是全部的數據都能放在本地端運算,還是會有些需要更進一步分析及判斷的數據,最後還是要傳回雲端來處理,或是做為長期存取的使用。 與雲計算相比,邊緣計算的優勢在於部署部署物聯網應用,特別是在新興物聯網應用領域,例如自駕車、無人機、增強現實(AR)/虛擬現實(VR),以及機器人等,這些嶄新應用特別強調實時的影像分析及辨識處理能力,對於網路的低延遲和高帶寬要求極高,需要在數十毫秒甚至微秒時間內就要反應,然而透過網際網路傳輸往返雲端,至少需要上百毫秒才能反應過來,所以這類型的應用,就很適合採用邊緣計算架構。 邊緣計算因為是在靠近數據源所在的區域網絡環境內運算,所以可以是在一台大型運算設備,或者是很多台中、小型運算設備或設備組成的本地端網路內運算,這些運算設備可以是個人所有的移動設備(如智能手機、穿戴式設備),也可以是終端設備(如網關、監視攝影機、銀行ATM),或是其他物聯網設備。因為運算設備和設備之間彼此靠得很近,網路傳輸更直接,如透過Wi-Fi、藍牙等,所以傳遞數據變很快。 網關(Gateway)是常見的一種邊緣計算設備,不過跟傳統只用來搜集和轉發資料的物聯網網關相比,新一代邊緣網關變得聰明,開始具有運算分析能力,能將靠近感測器和其他物聯網設備周圍搜集的數據先運算處理,讓數據變少以後再回傳雲端,即使沒有網路,邊緣網關也能透過和其他運算設備組成一個具有分布式計算架構的本地端區網,自行就可以接手運算,等待網路恢復後,才將處理後的資料傳回雲端,若是邊緣設備運算能力足夠,甚至有時可以直接在本地端處理完,不必再送回雲端接續處理。 這也直接點出了邊緣計算和集中式的傳統雲計算架構最大不同之處,因為採用分布式計算架構,可以將運算分散靠近地面數據源的近端設備處理,以分攤原本在雲計算的工作量,而不需要大老遠將資料傳回雲端才能處理,因此速度變更快,甚至沒有網路,靠近地面的運算設備也能接手自己處理,無雲也沒關系。 邊緣計算因為是設計一個本地端運算網路環境,以便於能就近處理數據,而不需要像雲端離數據源太遠,所以有人說,邊緣計算是一朵地面的雲,但是不像霧運算比較是整個特定區域的地上雲,遍布范圍較廣,邊緣計算則可以是靠近數據源產生的一個小型區域的運算叢集,可以進到霧進不去的地方。所以邊緣計算其實就是一個本地端的雲,甚至是一個在室內的雲。從前天上的那朵雲到了地面變成霧,現在還縮小進到工廠、辦公室、汽車甚至變成你家中的一朵雲。 邊緣計算的興起,其實和近幾年企業IT架構發展逐漸改采混合雲架構來部署,也有些許相似之處,因為從應用角度來看,混合雲的出現也是為了解決公有雲的網路傳輸及延遲的問題,畢竟和企業內部網路相比,終究網際網路的傳輸速度還是過慢,若企業要將關鍵應用整套搬上公有雲用時,就會被拖累,例如資料庫數據不同步等問題,以致於不少採用公有雲的企業,也同時會結合私有雲方式來部署,只不過以前這些私有雲是由許多台企業級伺服器、儲存和網路設備所布建而成,現在,可以是由許多不同大小的運算設備或設備組成。 隨著人工智慧AI的發展,許多雲計算工作,不必通過雲端,本地端就有足夠的能力來進行完成,到最後,雲計算將失去計算的功能,變為純儲存的用途
4. 怎麼用C++編譯一個簡單的計算器
我借鑒了別人的某計算器,因為你沒有說多簡易...我就找了個差不多的...
/*
程序名稱:表達式計算器
編譯環境:Microsoft Visual C++ 6.0
作者:吉林大學 計算機科學與技術學院 2006 羅泗勇
時間:200801
*/
/*
說明:
採用樹形結構處理表達式,按優先順序運算結果,一個加,減,乘,除或數值為一個節點
優先順序如下:
函數:4
括弧:3
乘除:2
加減:1
*/
#include <windows.h>
#include <iostream>
#include <fstream>
#include <string>
#include <cmath>
using namespace std;
const char NUM[]={'0','1','2','3','4','5','6','7','8','9','.'};
const char OPERATION[]={'+','-','*','/'};
const double PI=3.14159265358979;
const double EE=2.71828182818281;
class Fun //處理系統數學函數的類
{
public:
Fun(string o,int t,double l=0.0,double r=0.0):op(o),type(t),lvalue(l),rvalue(r){}
static string FUN[];
double calc();
private:
int type; //666 0 1 sin90 2 3! 3 3C2
string op; //函數類型
double lvalue; //函數左邊的值
double rvalue; //函數右邊的值
static int FunNum;
};
int Fun::FunNum=8;
string Fun::FUN[]={"!","sin","cos","tan","log","ln","C","A","^"};
/*
函數說明:
1:log是以10為底的工程對數
2:ln 是以e為底的自然對數
3:C 計算組合數 輸入規則 如計算 3取2的組合 輸入表達式 3C2
4:A 計算排列數 輸入規則 如計算 3取2的排列 輸入表達式 3A2
5:! 計算階乘
6:^ x的y次方 輸入 x^y
*/
int factorial(int n) //階乘函數
{
int i,s=1;
for(i=1;i<=n;i++)
s*=i;
return s;
}
int C(int a,int b)
{
return factorial(a)/(factorial(b)*factorial(a-b));
}
int A(int a,int b)
{
return factorial(a)/factorial(b);
}
double Fun::calc() //計算系統函數的值
{
if(type==0)
return lvalue;
else
{
if(op=="!")
return factorial(lvalue);
if(op=="sin")
return sin(rvalue/180*PI);
if(op=="cos")
return cos(rvalue/180*PI);
if(op=="tan")
return tan(rvalue/180*PI);
if(op=="log")
return log10(rvalue);
if(op=="ln")
return log10(rvalue)/log10(EE);
if(op=="C")
return C(lvalue,rvalue);
if(op=="A")
return A(lvalue,rvalue);
if(op=="^")
return pow(lvalue,rvalue);
else
{
string err="暫時沒有函數"+op;
MessageBox(NULL,err.c_str(),"錯誤",MB_OK);
return 0;
}
}
}
struct Unit //雙向鏈表保存運算單元
{
Unit(int p,char o,string c,double v,int t,Unit * pr=NULL,Unit * n=NULL)
:PRI(p),Operation(o),Code(c),value(v),Type(t),Pre(pr),Next(n){}
int PRI; //優先順序
char Operation; //操作符
string Code; //原始代碼
double value; //數據
int Type; //類型 操作符0 數據1 函數2
Unit * Pre; //構成雙向鏈表
Unit * Next;
};
class Node //表達式樹狀結構的節點
{
public:
Node(char o,int p,int e=1,double v=0,Node * ph=NULL,Node * pl=NULL,Node * pr=NULL)
:Operation(o),PRI(p),Expression(e),value(v),Head(ph),Left(pl),Right(pr){}
Node * Head; //節點的根,左樹枝,右樹枝
Node * Left;
Node * Right;
double GetValue();
char GetOperation() const {return Operation;}
int GetPri() const {return PRI;}
int IsExp() const {return Expression;}
private:
char Operation; //操作符
int PRI; //優先順序
int Expression; //記錄該節點是否是表達式0 1
double value; //該節點的值
};
double Node::GetValue() //運算該節點的值
{
if(IsExp()) //該節點的值還未算出來
{
double lvalue,rvalue;
lvalue=Left->GetValue();
rvalue=Right->GetValue();
Expression=0;
char op=GetOperation();
switch(op)
{
case '+':
return lvalue+rvalue;
case '-':
return lvalue-rvalue;
case '*':
return lvalue*rvalue;
case '/':
return lvalue/rvalue;
default:
return 0;
}
}
else
return value;
}
bool Isnum(char c)
{
for(int i=0;i<sizeof(NUM);i++)
{
if(c==NUM[i])
return true;
}
return false;
}
bool Isoperation(char c)
{
for(int i=0;i<sizeof(OPERATION);i++)
{
if(c==OPERATION[i])
return true;
}
return false;
}
Unit * Analyse(string exp) //分析表達式並生成鏈表
{
int pri=0; //當前優先順序
int stat=-1; //當前的讀入狀態 括弧 0 數據 1 運算符 2
Unit * head=NULL,* p=NULL;
int i=0,explen;
explen=exp.size();
for(i=0;i<explen;i++)
{
char c=exp.at(i);
if(c=='(')
{
pri+=3;
stat=0;
}
else if(c==')')
{
pri-=3;
stat=0;
}
else if(Isoperation(c)) //操作符不會出現在表達式開頭
{
Unit * temp=p;
int add_pri; //自身增加的優先順序
if(c=='+' || c=='-')
add_pri=1;
else
add_pri=2;
p->Next=new Unit(pri+add_pri,c," ",0,0);
p=p->Next;
p->Pre=temp;
}
else //其他的當做函數處理
{
string function="";
while(i<explen && (c=exp.at(i),! Isoperation(c)) && c!=')')
{
function+=c;
i++;
}
i--;
if(head==NULL)
{
p=new Unit(pri,' ',function,0,2);
head=p;
}
else
{
Unit * temp=p;
p->Next=new Unit(pri,' ',function,0,2);
p=p->Next;
p->Pre=temp;
}
}
}
return head;
}
Unit * Calc(Unit * head) //計算雙向鏈表基本單元的值
{
Unit * p=head;
while(p!=NULL)
{
if(p->Type!=0) //非操作符
{
string temp=p->Code;
string op;
double lvalue=0,rvalue=0;
int l_point=0,r_point=0;
int i=0,type=0;
char ch;
while(i<temp.size() && (ch=temp.at(i),Isnum(ch)))
{
if(ch=='.')
{
l_point++;
i++;
continue;
}
if(! l_point)
lvalue*=10;
lvalue+=(ch-'0')*pow(10,-l_point);
i++;
if(l_point)
l_point++;
}
while(i<temp.size() && (ch=temp.at(i),! Isnum(ch)))
{
op+=ch;
type=1;
i++;
}
while(i<temp.size() && (ch=temp.at(i),Isnum(ch)))
{
if(ch=='.')
{
r_point++;
i++;
continue;
}
if(! r_point)
rvalue*=10;
rvalue+=(ch-'0')*pow(10,-r_point);
i++;
if(r_point)
r_point++;
}
Fun * f=new Fun(op,type,lvalue,rvalue);
p->value=f->calc();
}
p=p->Next;
}
return head;
}
Node * Tree(Unit * head) //生成表達式樹
{
Node * root=NULL,* proot=NULL,* pbranch=NULL;
Unit * p=head;
int now_pri; //當前優先順序
bool hadop=false;
while(p!=NULL)
{
if(p->Type==0) //如果是一個操作符
{
hadop=true;
if(root==NULL)
{
proot=new Node(p->Operation,p->PRI,1);
root=proot;
pbranch=root;
now_pri=p->PRI;
proot->Left=new Node(' ',0,0,p->Pre->value);
proot->Right=new Node(' ',0,0,p->Next->value);
}
else
{
if(p->PRI<=now_pri) //優先順序低於當前優先順序,樹根方向 //最初寫的 if(p->PRI<now_pri),9/3/3=9,錯的
{
proot=new Node(p->Operation,p->PRI,1); //新的樹根
proot->Left=root; //根的變換
proot->Right=new Node(' ',0,0,p->Next->value);
root=proot;
pbranch=proot; //右樹枝的變換
//pbranch->Right=new Node(' ',0,0,p->Pre->value); //樹枝右邊取值
}
else
{
Node * temp;
temp=new Node(p->Operation,p->PRI,1);
pbranch->Right=temp;
temp->Head=pbranch;
pbranch=pbranch->Right;
pbranch->Left=new Node(' ',0,0,p->Pre->value);
pbranch->Right=new Node(' ',0,0,p->Next->value);
}
now_pri=p->PRI;
}
}
p=p->Next;
}
if(! hadop)
root=new Node(' ',0,0,head->value);
return root;
}
int main()
{
string exp;
//ifstream infile("test.txt",ios::in);
while(! getline(cin,exp).eof())
{
if(exp=="")
continue;
Unit * h=Analyse(exp);
h=Calc(h);
Node * root=Tree(h);
cout<<exp<<"="<<root->GetValue()<<endl;
}
return 0;
}
5. 世界上第一個操作系統是如何編寫的
人家就問第一個操作系統是怎麼做出來的,樓下一堆人都沒說到點子上。
這個問題就像是沒有生產機器,那第一台機器是怎麼生產出來的。
第一台計算機,或者稱之為打孔計算機,破譯機。它的作用就是讀0和1的不同排列組合,通過這些組合來解譯不同的意思。比如 0010代表什麼意思,1101代表什麼意思。這些是一開始就設定好了的,就像是中國古代的算盤一樣,上面的運算元代表5,下面的運算元代表1是一個道理。
好了,開始就設定好這個解碼功能後,這台破譯機就可以讀信息了,它通過什麼讀呢?那時候沒有數據,沒有數字信號,只有模擬信號,它們就讀打孔紙。就是在紙上寫,然後打出一個一個孔,像卡紙一樣。設備就讀這個孔的排列,根據不同的排列去找這個排列代表了什麼,然後給出答案。這就是最初的計算機原理,非常簡單,它就是一個密碼解釋器,或者說是簡單的編譯器。
那時候就是用來算加減法等一些計算,它就是一個大型的計算器。
後來發展的復雜一些了,也就是增加了更多的0和1的組合來豐富機器的解釋庫,來計算更復雜的公式。
這時候你要問了,這些0和1的解釋庫是存在哪裡的?這就是為什麼以前的計算機房間那麼大個。它們是通過電子管的開和關來代表了0和1,通過電路給電子管通電,比如說那張紙打的孔,有一個像探頭一樣的東西,探測到那裡有一個孔,或者沒有孔,就給出電信號來控制不同的電子管組合的通路和斷路,最後給出結果。
比如我用紙戳一個1+1=?,我就戳一個(0000 0000 0000 0001)代表1(00001 001000 ....)代表+ (0000 0000 0000 0001)代表1,然後給機器讀,機器讀出來後,就會根據電子管的通斷組合,最後將結果反饋回來。一開始是用亮了多少盞燈來表示計算結果,有了顯示器後,才把它變成了顯示畫面。
顯示畫面其實也是有一個庫的,比如0001,你就給我顯示1,00010,你就給我顯示2,它會找對應的庫,這個庫一開始就用不同的電路
搭建做好,無非就是不同的電路通斷,電壓,電流等各種奇怪的組合來完成 。它自身有一套神奇的檢測機制,這個就不說了,我也說不清楚。
那麼回到最開始的問題,世界上第一個操作系統是怎麼出現的?就是用手在紙上寫出來的。
一開始不能算是系統,比如我要算一個公式,a /b +1+a+5*b,舉個例子,這個公式我要經常用,我不可能每次都要去戳很多紙,所以我只需要先做一個模板,然後留出一個空白,需要的時候,把a和b戳出來就可以了,這樣就很方便了。
後來這些公式越來越復雜,甚至是出現了不同的計算,比如說, 如果a<100,那麼就執行xxxx,如果a>100,就執行xxxx。然後這個模板就越做越大,需要戳的紙也越來越長。
好傢伙,後來實在戳不過來了,十個手指都戳破了,甚至計算機也運行不過來了,更復雜的運算根本做不了。不行,不能這樣下去了。
後來就開始有人研究了,電子技術的發展越來越高科技,電子管也做得越來越小,最後用集成電路來控制開關,但是其實原理都是一樣的。可以運算的公式和能力也越來越強。其實還是不同的電子管組合成不同的開關,你以為這個組合就是幾個電子組的組合嗎?不,已經達到上億,上千億個電子管的組合了,這也是集成電路的優勢。
一開始是用紙來保存信息,但是前面說了,紙已經不夠用了,就開始出現了軟盤,光碟。光碟上的凹凸點,代表了0和1,其實就是存儲的介質發生了變化,後面發明了磁碟,發明了光碟,甚至是軟盤、機械硬碟,SSD等不同的儲存介質,這些其實就是保存的方式不同而已,其實它們保存的數據還是和打孔紙一樣,就是0和1的數據,只是相比紙而言,保存得更多,更方便,也更容易被機器讀取。
這時候保存的介質發生了變化 ,那麼讀取這些數據的那個探頭也發生了變化,變成了像軟盤的磁頭,光碟的激光頭等。
當這種保存的介質從紙變成了硬碟後,就會出現一個問題,一開始寫這些孔的時候,是用筆和給紙戳一個窟窿來讓機器識別,現在要怎麼把0和1這種數據寫到磁碟里呢?這里就發明了鍵盤了,最初的鍵盤當然和現在不一樣,但是原理是一樣的。還是按一個鍵,給一個電信號,磁頭收到了電信號,會判斷是0還是1,如果是0,就是反磁,如果是1就是正磁。一開始的鍵盤,就是只有幾個鍵,1鍵和0鍵。
後來有人覺得整天打0和1太麻煩了,如果我要打a這個符號,我就要按(0000000000000000),按這么多下,我的手都要變成一指禪了,於是就發明更復雜的鍵盤,比如我要打a,b,c,d,我就一開始就設定好,我打a,就直接發送一串機器碼(0000000000000000),我要打b就發送一串機器碼(0000000000000001),類似這樣的。其實也是給鍵盤做好一個約定,我一開始就把一些特定的,經常使用到的符號或其他有代表性的字母、數字,把它們對應的0和1組合的機器碼先做成一個表格,存到鍵盤的識別庫里,我按哪一個字元,你就給我發送哪一個字元對應的機器碼就可以了,這樣我就不用從早到晚按0和1這兩個鍵,按個沒完。這么一設定,我就不用記太多的機器碼組合了,一開始就把這些組合給分門別類。
這樣發展到這里,鍵盤的雛形就出來了,也為匯編的發展埋下了伏筆。匯編其實就是最接近或者它就是機器碼的一種組合語言,機器是可以直接識別出來。
前面說了,為了執行不同的公式和復雜的計算,就出現了這同的模板,只需要修改模板上的參數,就可以重復執行這些模板。
現在這些板從紙上存到了軟盤上,現在就更方便了。以前用紙的時候,用過一次,紙就沒用了,現在軟盤上的數據一直在,我只需要用磁頭把原來填的數據擦掉,重新寫個新的參數就可以了。你可以理解成當時在紙上我用鉛筆寫參數,用過一次,用橡皮擦給擦掉重復寫。但是紙是需要打孔的,打了孔,橡破擦也沒用,已經是一個孔了,你也補不上,所以那紙就廢掉了。
但是軟盤不一樣,軟盤是可以重復寫的。可以把磁消掉重新在那個位置寫一個新的參數,這樣就可以重復利用了。
後來這些模板越做越復雜,最後慢慢的發展成了一個小型的,有自己一些獨立功能的計算系統,這可以理解為,它有了系統的一些特性,但是還不算系統。
後來這些模板更強大了,有人覺得,因為需要更加強大的功能,一般的模板已經沒辦法滿足了,而且通過這種最原始的abcd來拼湊這些公式、模板,太累了。於是就有人開始寫中間解釋器。
怎麼理解呢?前面說了,一開始大家都是寫1和0組合,覺得太累了,於是把1和0的不同組合做成了一個庫,我只需要輸入1+1,abcd這種鍵盤上約定好的字母,鍵盤就發送對應的1和0組合給機器,機器就可以直接識別了。
現在需求越來越復雜,發現光打這些abcd,需要打越來越多的代碼,發現和之前打1和0一樣累了,怎麼辦呢?於是就有人打算再創一個中間庫,把這些abcd,1,2,3等組合做成一個庫,不同的組合代碼不同的意思,這就是從機器向交互語言的發展了初期了。
這個庫一開始還是用abcd等最初的那個鍵盤庫打上去的,當然做的也很累,但是只要這個庫完善好了,後面要繼續發展更高級的交互語言就簡單多了,以後所有交互語言寫出來的東西,都通過這個庫翻譯成機器語言庫,機器語言庫就可以識別了。
於是有了交互語言庫,大家就不用打太多的字元來拼湊成不同的模板了,因為交互語言庫有了不同的單片語合成更加有意義符號,人一看就懂,不需要那些零零散散的字母,沒有任何意義在裡面,還需要死記硬背。
這就有點像是古代的文言文,你一聽不知道他在說什麼,然後去查一下文言文字典,這樣你才能知道他在說什麼。
現在你可以用白話言語來交流了,這樣就更輕鬆了,你可以直接和他對話。
至於機器聽不聽的懂你說的意思,這個不要緊,有解釋庫,你把解釋庫做好了,你說的每一句話會自動翻譯成機器語言,就可以了。
隨著語言的越來越強大,現在就可以寫出更加復雜的模板了,後來顯示器的發展越來越強大,讓這些模板出現了更豐富的畫面,其實它顯示什麼東西,也還是會有一個庫的,只要約定好,我返回的這串代碼代表了什麼東西,你就顯示什麼東西就可以了。甚至後來有了圖片。
其實圖片的顯示也有自己的一個約定,就是我返回什麼代碼,你就解析成什麼顏色點,然後不同的代碼組合,就會現出一大串的顏色點組合在一起,就變成了有顏色的圖片和畫面。其實文字也是圖片的一種,就是一種圖信號。
回到模板上來,後來慢慢的,這些模板越來越強大,甚至有人開始動起心思,開始給這些模板加皮膚,加各種好看或者神奇的功能,讓它更加好用,於是最初始的系統就這么慢慢的發展起來了。
其實系統它不是突然就有的,是在整個機器的發展的過程中,慢慢的累積到一定程度後,順應發展而來的。
這些模板也是從最簡單的公式模板慢慢發展成了現在有了自己的界面,有了自己的獨立運算功能和各種娛樂功能等強大的系統。
最初的系統,也就是這些模板的誕生,其實是很辛苦的,它們需要有一定的積累,一些基礎的識別庫的完善,這些都是需要最初的那代人,一開始就約定好,然後慢慢地完善起來,然後高級的語言和系統才能通過這些庫來和機器交流。
6. 一個完整的計算機系統包括什麼
硬體系統和軟體系統
計算機系統由硬體(子)系統和軟體(子)系統組成。前者是藉助電、磁、光、機械等原理構成的各種物理部件的有機組合,是系統賴以工作的實體。後者是各種程序和文件,用於指揮全系統按指定的要求進行工作。按人的要求接收和存儲信息,自動進行數據處理和計算,並輸出結果信息的機器系統。計算機是腦力的延伸和擴充,是近代科學的重大成就之一。

(6)新型計算系統編譯擴展閱讀:
硬體系統主要由中央處理器、存儲器、輸入輸出控制系統和各種外部設備組成。中央處理器是對信息進行高速運算處理的主要部件,其處理速度可達每秒幾億次以上操作。存儲器用於存儲程序、數據和文件,常由快速的內存儲器(容量可達數百兆位元組,甚至數G位元組)和慢速海量外存儲器(容量可達數十G或數百G以上)組成。各種輸入輸出外部設備是人機間的信息轉換器,由輸入-輸出控制系統管理外部設備與主存儲器(中央處理器)之間的信息交換。
7. 分布式計算系統和分布式系統有什麼區別和聯系
分布式軟體系統(Distributed Software Systems)是支持分布式處理的軟體系統,是在由通信網路互聯的多處理機體系結構上執行任務的系統。它包括分布式操作系統、分布式程序設計語言及其編譯(解釋)系統、分布式文件系統和分布式資料庫系統等。
分布式操作系統負責管理分布式處理系統資源和控制分布式程序運行。它和集中式操作系統的區別在於資源管理、進程通信和系統結構等方面。
分布式程序設計語言用於編寫運行於分布式計算機系統上的分布式程序。一個分布式程序由若干個可以獨立執行的程序模塊組成,它們分布於一個分布式處理系統的多台計算機上被同時執行。它與集中式的程序設計語言相比有三個特點:分布性、通信性和穩健性。
分布式文件系統具有執行遠程文件存取的能力,並以透明方式對分布在網路上的文件進行管理和存取。
分布式資料庫系統由分布於多個計算機結點上的若干個資料庫系統組成,它提供有效的存取手段來操縱這些結點上的子資料庫。分布式資料庫在使用上可視為一個完整的資料庫,而實際上它是分布在地理分散的各個結點上。當然,分布在各個結點上的子資料庫在邏輯上是相關的。
---------------
分布式資料庫系統是由若干個站集合而成。這些站又稱為節點,它們在通訊網路中聯接在一起,每個節點都是一個獨立的資料庫系統,它們都擁有各自的資料庫、中央處理機、終端,以及各自的局部資料庫管理系統。因此分布式資料庫系統可以看作是一系列集中式資料庫系統的聯合。它們在邏輯上屬於同一系統,但在物理結構上是分布式的。
分布式資料庫系統已經成為信息處理學科的重要領域,正在迅速發展之中,原因基於以下幾點:
1、它可以解決組織機構分散而數據需要相互聯系的問題。比如銀行系統,總行與各分行處於不同的城市或城市中的各個地區,在業務上它們需要處理各自的數據,也需要彼此之間的交換和處理,這就需要分布式的系統。
2、如果一個組織機構需要增加新的相對自主的組織單位來擴充機構,則分布式資料庫系統可以在對當前機構影響最小的情況下進行擴充。
3、均衡負載的需要。數據的分解採用使局部應用達到最大,這使得各處理機之間的相互干擾降到最低。負載在各處理機之間分擔,可以避免臨界瓶頸。
4、當現有機構中已存在幾個資料庫系統,而且實現全局應用的必要性增加時,就可以由這些資料庫自下而上構成分布式資料庫系統。
5、相等規模的分布式資料庫系統在出現故障的幾率上不會比集中式資料庫系統低,但由於其故障的影響僅限於局部數據應用,因此就整個系統來講它的可靠性是比較高的。
特點
1、在分布式資料庫系統里不強調集中控制概念,它具有一個以全局資料庫管理員為基礎的分層控制結構,但是每個局部資料庫管理員都具有高度的自主權。
2、在分布式資料庫系統中數據獨立性概念也同樣重要,然而增加了一個新的概念,就是分布式透明性。所謂分布式透明性就是在編寫程序時好象數據沒有被分布一樣,因此把數據進行轉移不會影響程序的正確性。但程序的執行速度會有所降低。
3、集中式資料庫系統不同,數據冗餘在分布式系統中被看作是所需要的特性,其原因在於:首先,如果在需要的節點復制數據,則可以提高局部的應用性。其次,當某節點發生故障時,可以操作其它節點上的復制數據,因此這可以增加系統的有效性。當然,在分布式系統中對最佳冗餘度的評價是很復雜的。
分布式系統的類型,大致可以歸為三類:
1、分布式數據,但只有一個總? 據庫,沒有局部資料庫。
2、分層式處理,每一層都有自己的資料庫。
3、充分分散的分布式網路,沒有中央控制部分,各節點之間的聯接方式又可以有多種,如鬆散的聯接,緊密的聯接,動態的聯接,廣播通知式聯接等。
---------------------
什麼是分布式智能?
NI LabVIEW 8的分布式智能結合了相關的技術和工具,解決了分布式系統開發會碰到的一些挑戰。更重要的是,NI LabVIEW 8的分布式智能提供的解決方案不僅令這些挑戰迎刃而解,且易於實施。LabVIEW 8的分布式智能具體包括:
可對分布式系統中的所有結點編程——包括主機和終端。尤為可貴的是,您可以利用LabVIEW圖形化編程方式,對大量不同類型的對象進行編程,如桌面處理器、實時系統、FPGA、PDA、嵌入式微處理器和DSP。
導航所有系統結點的查看系統——LabVIEW Project Explorer。您可使用Project Explorer查看、編輯、運行和調試運行於任何對象上的結點。
經簡化的數據共享編程界面——共享變數。使用共享變數,您可輕松地在系統間(甚至實時系統間)傳輸數據且不影響性能。無通信循環,無RT FIFO,無需低層次TCP函數。您可以利用簡單的對話完成共享變數的配置,從而將數據在各系統間傳輸或將數據連接到不同的數據源。您還可添加記錄、警報、事件等數據服務――一切僅需簡單的對話即可完成。
實現了遠程設備及系統內部或設備及系統之間的同步操作——定時和同步始終是定義高性能測量和控制系統的關鍵問題。利用基於NI技術的系統,探索設備內部並編寫其內部運行機制,從而取得比傳統儀器或PLC方式下更為靈活的解決方案。
--------------------
在分布式計算機操作系統支持下,互連的計算機可以互相協調工作,共同完成一項任務。
也可以這么解釋:
一種計算機硬體的配置方式和相應的功能配置方式。它是一種多處理器的計算機系統,各處理器通過互連網路構成統一的系統。系統採用分布式計算結構,即把原來系統內中央處理器處理的任務分散給相應的處理器,實現不同功能的各個處理器相互協調,共享系統的外設與軟體。這樣就加快了系統的處理速度,簡化了主機的邏輯結構
8. 簡單的整系數一元多項式計算系統(絕對高分)
#include<stdio.h>
#include<stdlib.h>
typedef struct
{ float coef; //系數
int expn; //指數
}term;
typedef struct LNode
{ term data; //term多項式值
struct LNode *next;
}LNode,*LinkList;
typedef LinkList polynomail;
/*比較指數*/
int cmp(term a,term b)
{ if(a.expn>b.expn) return 1;
if(a.expn==b.expn) return 0;
if(a.expn<b.expn) return -1;
else exit(-2);
}
/*又小到大排列*/
void arrange1(polynomail pa)
{ polynomail h=pa,p,q,r;
if(pa==NULL) exit(-2);
for(p=pa;p->next!=NULL;p=p->next); r=p;
for(h=pa;h->next!=r;)//大的沉底
{ for(p=h;p->next!=r&&p!=r;p=p->next)
if(cmp(p->next->data,p->next->next->data)==1)
{ q=p->next->next;
p->next->next=q->next;
q->next=p->next;
p->next=q;
}
r=p;//r指向參與比較的最後一個,不斷向前移動
} }
/*由大到小排序*/
void arrange2(polynomail pa)
{ polynomail h=pa,p,q,r;
if(pa==NULL) exit(-2);
for(p=pa;p->next!=NULL;p=p->next); r=p;
for(h=pa;h->next!=r;)//小的沉底
{ for(p=h;p->next!=r&&p!=r;p=p->next)
if(cmp(p->next->next->data,p->next->data)==1)
{ q=p->next->next;
p->next->next=q->next;
q->next=p->next;
p->next=q;
}
r=p;//r指向參與比較的最後一個,不斷向前移動
} }
/*列印多項式,求項數*/
int printpolyn(polynomail P)
{ int i;
polynomail q;
if(P==NULL) printf("無項!\n");
else if(P->next==NULL) printf("Y=0\n");
else
{ printf("該多項式為Y=");q=P->next;i=1;
if(q->data.coef!=0&&q->data.expn!=0)
{ printf("%.2fX^%d",q->data.coef,q->data.expn); i++; }
if(q->data.expn==0&&q->data.coef!=0)
printf("%.2f",q->data.coef);//列印第一項
q=q->next;
if(q==NULL)
{printf("\n");return 1;}
while(1)//while中,列印剩下項中系數非零的項,
{ if(q->data.coef!=0&&q->data.expn!=0)
{ if(q->data.coef>0) printf("+");
printf("%.2fX^%d",q->data.coef,q->data.expn); i++;
}
if(q->data.expn==0&&q->data.coef!=0)
{ if(q->data.coef>0) printf("+");
printf("%f",q->data.coef);
}
q=q->next;
if(q==NULL)
{ printf("\n"); break; }
}
}
return 1;
}
/*1、創建並初始化多項式鏈表*/
polynomail creatpolyn(polynomail P,int m)
{ polynomail r,q,p,s,Q;
int i;
P=(LNode*)malloc(sizeof(LNode));
r=P;
for(i=0;i<m;i++)
{ s=(LNode*)malloc(sizeof(LNode));
printf("請輸入第%d項的系數和指數:",i+1);
scanf("%f%d",&s->data.coef,&s->data.expn);
r->next=s; r=s;
}
r->next=NULL;
if(P->next->next!=NULL)
{ for(q=P->next;q!=NULL/*&&q->next!=NULL*/;q=q->next)//合並同類項
for(p=q->next,r=q;p!=NULL;)
if(q->data.expn==p->data.expn)
{ q->data.coef=q->data.coef+p->data.coef;
r->next=p->next;
Q=p;p=p->next;
free(Q);
}
else
{ r=r->next;
p=p->next;
}
}
return P;
}
/*2、兩多項式相加*/
polynomail addpolyn(polynomail pa,polynomail pb)
{ polynomail s,newp,q,p,r;int j;
p=pa->next;q=pb->next;
newp=(LNode*)malloc(sizeof(LNode));
r=newp;
while(p&&q)
{ s=(LNode*)malloc(sizeof(LNode));
switch(cmp(p->data,q->data))
{case -1: s->data.coef=p->data.coef;
s->data.expn=p->data.expn;
r->next=s; r=s;
p=p->next;
break;
case 0: s->data.coef=p->data.coef+q->data.coef;
if(s->data.coef!=0.0)
{ s->data.expn=p->data.expn;
r->next=s;
r=s;
}
p=p->next;
q=q->next;
break;
case 1: s->data.coef=q->data.coef;
s->data.expn=q->data.expn;
r->next=s; r=s;
q=q->next;
break;
}//switch
}//while
while(p)
{ s=(LNode*)malloc(sizeof(LNode));
s->data.coef=p->data.coef;
s->data.expn=p->data.expn;
r->next=s; r=s;
p=p->next;
}
while(q)
{ s=(LNode*)malloc(sizeof(LNode));
s->data.coef=q->data.coef;
s->data.expn=q->data.expn;
r->next=s; r=s;
q=q->next;
}
r->next=NULL;
for(q=newp->next;q->next!=NULL;q=q->next)//合並同類項
for(p=q;p!=NULL&&p->next!=NULL;p=p->next)
if(q->data.expn==p->next->data.expn)
{ q->data.coef=q->data.coef+p->next->data.coef;
r=p->next;
p->next=p->next->next;
free(r);
}
printf("升序 1 , 降序 2\n");
printf("選擇:");
scanf("%d",&j);
if(j==1) arrange1(newp);
else arrange2(newp);
return newp;
}
/*3、兩多項式相減*/
polynomail subpolyn(polynomail pa,polynomail pb)
{ polynomail s,newp,q,p,r,Q; int j;
p=pa->next;q=pb->next;
newp=(LNode*)malloc(sizeof(LNode));
r=newp;
while(p&&q)
{ s=(LNode*)malloc(sizeof(LNode));
switch(cmp(p->data,q->data))
{case -1: s->data.coef=p->data.coef;
s->data.expn=p->data.expn;
r->next=s; r=s;
p=p->next;
break;
case 0: s->data.coef=p->data.coef-q->data.coef;
if(s->data.coef!=0.0)
{ s->data.expn=p->data.expn;
r->next=s;
r=s;
}
p=p->next;
q=q->next;
break;
case 1: s->data.coef=-q->data.coef;
s->data.expn=q->data.expn;
r->next=s; r=s;
q=q->next;
break;
}//switch
}//while
while(p)
{ s=(LNode*)malloc(sizeof(LNode));
s->data.coef=p->data.coef;
s->data.expn=p->data.expn;
r->next=s; r=s;
p=p->next;
}
while(q)
{ s=(LNode*)malloc(sizeof(LNode));
s->data.coef=-q->data.coef;
s->data.expn=q->data.expn;
r->next=s; r=s;
q=q->next;
}
r->next=NULL;
if(newp->next!=NULL&&newp->next->next!=NULL)//合並同類項
{ for(q=newp->next;q!=NULL;q=q->next)
for(p=q->next,r=q;p!=NULL;)
if(q->data.expn==p->data.expn)
{ q->data.coef=q->data.coef+p->data.coef;
r->next=p->next;
Q=p;p=p->next;
free(Q); }
else
{ r=r->next;
p=p->next; }
} printf("升序 1 , 降序 2\n");
printf("選擇:");
scanf("%d",&j);
if(j==1) arrange1(newp);
else arrange2(newp);
return newp;}
/*4兩多項式相乘*/
polynomail mulpolyn(polynomail pa,polynomail pb)
{ polynomail s,newp,q,p,r;
int i=20,j;
newp=(LNode*)malloc(sizeof(LNode));
r=newp;
for(p=pa->next;p!=NULL;p=p->next)
for(q=pb->next;q!=NULL;q=q->next)
{ s=(LNode*)malloc(sizeof(LNode));
s->data.coef=p->data.coef*q->data.coef;
s->data.expn=p->data.expn+q->data.expn;
r->next=s;
r=s;}
r->next=NULL;
printf("升序 1 , 降序 2\n");
printf("選擇:");
scanf("%d",&j);
if(j==1) arrange1(newp);
else arrange2(newp);
for(;i!=0;i--)
{for(q=newp->next;q->next!=NULL;q=q->next)//合並同類項
for(p=q;p!=NULL&&p->next!=NULL;p=p->next)
if(q->data.expn==p->next->data.expn)
{ q->data.coef=q->data.coef+p->next->data.coef;
r=p->next;
p->next=p->next->next; free(r);
}
}
return newp;
}
/*5、銷毀已建立的兩個多項式*/
void delpolyn(polynomail pa,polynomail pb)
{ polynomail p,q;
p=pa;
while(p!=NULL)
{ q=p;
p=p->next;
free(q);
}
p=pb;
while(p!=NULL)
{ q=p;
p=p->next;
free(q);
}
printf("兩個多項式已經銷毀\n");
}
void main()
{ polynomail pa=NULL,pb=NULL;
polynomail p,q;
polynomail addp=NULL,subp=NULL,mulp=NULL;
int n,m;
int sign='y';
printf("1、創建兩個一元多項式\n");
printf("2、兩多項式相加得一新多項式\n");
printf("3、兩多項式相減得一新多項式\n");
printf("4、兩多項式相乘得一新多項式\n");
printf("5、銷毀已建立的兩個多項式\n");
printf("6、退出\n");
printf("\n");
while(sign!='n')
{ printf("請選擇:");
scanf("%d",&n);
switch(n)
{case 1:
if(pa!=NULL)
{ printf("已建立兩個一元多項式,請選擇其他操作!");
break;
}
printf("請輸入第一個多項式:\n");
printf("要輸入幾項:");
scanf("%d",&m);
while(m==0)
{ printf("m不能為0,請重新輸入m:");
scanf("%d",&m);
}
pa=creatpolyn(pa,m);
printpolyn(pa);
printf("請輸入第二個多項式:\n");
printf("要輸入幾項:");
scanf("%d",&m);
pb=creatpolyn(pb,m);
printpolyn(pb);
break;
case 2:
if(pa==NULL)
{ printf("請先創建兩個一元多項式!\n");
break;
}
addp=addpolyn(pa,pb);
printpolyn(addp);
break;
case 3:
if(pa==NULL)
{ printf("請先創建兩個一元多項式!\n");
break;
}
subp=subpolyn(pa,pb);
printpolyn(subp);
break;
case 4:
if(pa==NULL)
{ printf("請先創建兩個一元多項式!\n");
break;
}
mulp=mulpolyn(pa,pb);
printpolyn(mulp);
break;
case 5:
if(pa==NULL)
{ printf("請先創建兩個一元多項式!\n");
break;
}
delpolyn(pa,pb);
pa=pb=NULL;
break;
case 6:
if(addp!=NULL)
{ p=addp;
while(p!=NULL)
{ q=p;
p=p->next;
free(q);
}
}
if(subp!=NULL)
{ p=subp;
while(p!=NULL)
{ q=p;
p=p->next;
free(q);
}
}
exit(-2);
}//switch
}//while
}
9. 我國目前新型計算機
2018年中國計算機行業十大猜想:新零售鏖戰全面升級-中商情報網
1
猜想一:技術創新帶動計算機行業迎來復甦:當前,科技行業已開始步入由物聯網、5G、人工智慧技術引領的智能時代.對於IT產業而言,...
2
猜想二:中國量子計算繼續取得重大進展:量子計算系統具有遠超經典計算機的算力,中國在量子計算領域處於世界領先地位,正在迅速接近...
3
猜想三:區塊鏈技術應用加速普及:近期,區塊鏈技術呈現出加速滲透的態勢,且有向高級應用場景擴張
10. 計算系統是什麼
計算機系統指用於資料庫管理的計算機硬軟體及網路系統。資料庫系統需要大容量的主存以存放和運行操作系統、資料庫管理系統程序、應用程序以及資料庫、目錄、系統緩沖區等,而輔存則需要大容量的直接存取設備。此外,系統應具有較強的網路功能。
