導航:首頁 > 源碼編譯 > 線性升溫c源碼

線性升溫c源碼

發布時間:2022-06-13 23:13:21

① 線性方程組求解——C語言程序設計代碼,高手們,拜託啦!急急急啊!!!

這是矩陣運算的兩個文件,調用相應的函數即可:

// Matrix.h: interface for matrix calculation functions.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_MATRIXCALCULATE_H__CCBC1D7D_4466_4E8B_87DD_0A98B462C18D__INCLUDED_)
#define AFX_MATRIXCALCULATE_H__CCBC1D7D_4466_4E8B_87DD_0A98B462C18D__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

////求矩陣matrix的行列式值,n為維數
float CalculateLiner(float *matrix,int n);

////求矩陣matrix的第i行,j列的代數餘子式,n為維數
float CalculateCofacter(float *matrix,int i,int j,int n);

////matrixAT=(matrixA)T,m,n為matrixA的行、列數
void CalculateAT(float *matrixA,float *matrixAT,int m,int n);

////matrixAB=matrixA*matrixB,i,j為matrixA的行、列數,j,k為為matrixB的行、列數
void CalculateAB(float *matrixA,float *matrixB,float *matrixAB,int i,int j,int k);

////matrixATA=(matrixA)T*matrixA,m,n分別為matrixA的行、列數
void CalculateATA(float *matrixA,float *matrixATA,int m,int n);

////matrixA_為matrixA的逆,m為matrixA的行、列數
void CalculateA_(float *matrixA,float *matrixA_,int m);

///*矩陣求逆子程序(Good)*/
int Invers_matrix(float *m1,int n);

////求正定矩陣a的逆矩,n為階數
int MatrixInversion(float *a, int n);
void MatInversion(float *a,int n);

////解矩陣方程matrixA*matrixX=matrixL,m,n分別為matrixA矩陣的行,列數
void EquationResolution(float *matrixA,float *matrixL,float *matrixX,int m,int n);

#endif // !defined(AFX_MATRIXCALCULATE_H__CCBC1D7D_4466_4E8B_87DD_0A98B462C18D__INCLUDED_)

// Matrix.cpp: implementation of the matrix calculation functions.
//
//////////////////////////////////////////////////////////////////////
#include "StdAfx.h"
#include "Matrix.h"
#include "math.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

////求矩陣matrix的行列式值,n為維數
float CalculateLiner(float *matrix,int n)
{
float liner=0;
int i=0,j=0,k=0;
int p=0,q=0;

if(n==1)
return matrix[0];
else
{
float *tr=(float *)calloc((n-1)*(n-1),sizeof(float));
for(k=0;k<n;k++)
{
p=0;
for(i=0;i<n;i++)
{
if(i!=0)
{
q=0;
for(j=0;j<n;j++)
{
if(j!=k)
{
tr[p*(n-1)+q]=matrix[i*n+j];
q++;
}
}
p++;
}
}
liner+=matrix[k]*pow(-1,k)*CalculateLiner(tr,n-1);
}
free(tr);
return liner;
}
}

////求矩陣matrix的第i行,j列的代數餘子式,n為維數
float CalculateCofacter(float *matrix,int i,int j,int n)
{
int x=0,y=0;
int p=0,q=0;

if(n==1)
return matrix[0];
else
{
float *tr=(float *)calloc((n-1)*(n-1),sizeof(float));
p=0;
for(x=0;x<n;x++)
{
if(x!=i)
{
q=0;
for(y=0;y<n;y++)
{
if(y!=j)
{
tr[p*(n-1)+q]=matrix[x*n+y];
q++;
}
}
p++;
}
}
float cc=pow(-1,i+j)*CalculateLiner(tr,n-1);
free(tr);
return cc;
}

}

////matrixAT=(matrixA)T,m,n為matrixA的行、列數
void CalculateAT(float *matrixA,float *matrixAT,int m,int n)
{
for (int i=0;i<m;i++)
{
for (int j=0;j<n;j++)
{
matrixAT[j*m+i]=matrixA[i*n+j];
}
}
}

////matrixAB=matrixA*matrixB,i,j為matrixA的行、列數,j,k為為matrixB的行、列數
void CalculateAB(float *matrixA,float *matrixB,float *matrixAB,int i,int j,int k)
{
for (int m=0;m<i;m++)
{
for (int n=0;n<k;n++)
{
matrixAB[m*k+n]=0;
for (int s=0;s<j;s++)
{
matrixAB[m*k+n]+=matrixA[m*j+s]*matrixB[s*k+n];
}
}
}
}

////matrixATA=(matrixA)T*matrixA,m,n為分別為matrixA的行、列數
void CalculateATA(float *matrixA,float *matrixATA,int m,int n)
{
float *at=(float *)calloc((m)*(n),sizeof(float));
CalculateAT(matrixA,at,m,n);
CalculateAB(at,matrixA,matrixATA,n,m,n);
free(at);
}

////matrixA_為matrixA的逆,m為matrixA的行、列數
void CalculateA_(float *matrixA,float *matrixA_,int m)
{
float liner=CalculateLiner(matrixA,m);

for(int i=0;i<m;i++)
{
for(int j=0;j<m;j++)
matrixA_[j*m+i]=CalculateCofacter(matrixA,i,j,m)/liner;
}
}
////////////////////////////////////////////////////////////////////
////求正定矩陣a的逆矩,n為階數
int MatrixInversion(float *a, int n)
{
int i, j, k, m;
float w, g, *b;

b = new float [n];

for(k = 0; k <= n - 1; k++)
{
w = a[0];

w=a[0]+1.0e-15;
/*
if(fabs(w)+1.0 == 1.0)
{
delete b;
printf("fail\n");
return(-2);
}
*/
m = n - k - 1;

for(i = 1; i <= n - 1; i++)
{
g = a[i * n];
b[i] = g / w;

if(i <= m)
b[i] = -b[i];

for(j = 1; j <= i; j++)
a[(i - 1) * n + j - 1] = a[i * n + j] + g * b[j];
}
a[n * n - 1] = 1.0 / w;

for(i = 1; i <= n - 1; i++)
a[(n - 1) * n + i - 1] = b[i];
}

for(i = 0; i <= n - 2; i++)
for(j = i + 1; j <= n - 1; j++)
a[i * n + j] = a[j * n + i];
delete b;
return(2);
}

////求正定矩陣a的逆矩,n為階數
void MatInversion(float *a,int n)
{
int i,j,k;
for(k=0;k<n;k++)
{
for(i=0;i<n;i++)
{
if(i!=k) *(a+i*n+k) = -*(a+i*n+k)/(*(a+k*n+k));
}
*(a+k*n+k)=1/(*(a+k*n+k));
for(i=0;i<n;i++)
{
if(i!=k)
{
for(j=0;j<n;j++)
{
if(j!=k) *(a+i*n+j) += *(a+k*n+j)* *(a+i*n+k);
}
}
}
for(j=0;j<n;j++)
{
if(j!=k) *(a+k*n+j)*=*(a+k*n+k);
}
}
}

/*矩陣求逆子程序(Good)*/
int Invers_matrix(float *m1,int n)
{
int *is,*js;
int i,j,k,l,u,v;
float temp,max_v;
is=(int *)malloc(n*sizeof(int));
js=(int *)malloc(n*sizeof(int));
if(is==NULL||js==NULL)
{
printf("out of memory!\n");
return(0);
}
for(k=0;k<n;k++)
{
max_v=0.0;
for(i=k;i<n;i++)
{
for(j=k;j<n;j++)
{
temp=fabs(m1[i*n+j]);
if(temp>max_v)
{
max_v=temp; is[k]=i; js[k]=j;
}
}
}
if(max_v==0.0)
{
free(is); free(js);
printf("invers is not availble!\n");
return(0);
}
if(is[k]!=k)
{
for(j=0;j<n;j++)
{
u=k*n+j; v=is[k]*n+j;
temp=m1[u]; m1[u]=m1[v]; m1[v]=temp;
}
}
if(js[k]!=k)
for(i=0;i<n;i++)
{
u=i*n+k; v=i*n+js[k];
temp=m1[u]; m1[u]=m1[v]; m1[v]=temp;
}
l=k*n+k;
m1[l]=1.0/m1[l];
for(j=0;j<n;j++)
{
if(j!=k)
{
u=k*n+j;
m1[u]*=m1[l];
}
}
for(i=0;i<n;i++)
{
if(i!=k)
{
for(j=0;j<n;j++)
{
if(j!=k)
{
u=i*n+j;
m1[u]-=m1[i*n+k]*m1[k*n+j];
}
}
}
}
for(i=0;i<n;i++)
{
if(i!=k)
{
u=i*n+k;
m1[u]*=-m1[l];
}
}
}
for(k=n-1;k>=0;k--)
{
if(js[k]!=k)
for(j=0;j<n;j++)
{
u=k*n+j; v=js[k]*n+j;
temp=m1[u]; m1[u]=m1[v]; m1[v]=temp;
}
if(is[k]!=k)
for(i=0;i<n;i++)
{
u=i*n+k; v=i*n+is[k];
temp=m1[u]; m1[u]=m1[v]; m1[v]=temp;
}
}
free(is); free(js);
return(1);
}

void EquationResolution(float *matrixA,float *matrixL,float *matrixX,int m,int n)
{
if (m<n) return;
float *at=(float *)malloc((m)*(n)*sizeof(float));
float *ata=(float *)malloc((n)*(n)*sizeof(float));
float *atl=(float *)malloc((n)*sizeof(float));

CalculateATA(matrixA,ata,m,n);
MatrixInversion(ata,n);
CalculateAT(matrixA,at,m,n);
CalculateAB(at,matrixL,atl,n,m,1);
CalculateAB(ata,atl,matrixX,n,n,1);

free(at);
free(ata);
free(atl);
}

② 線性表的C語言實現,要完整代碼,不要偽碼!謝謝!

怎麼一點懸賞都沒有,誰高興啊

③ 在氣相色譜中,什麼叫程序升溫在GC中為什麼要採用程序升溫

程序升溫是指色譜柱的溫度按設置的程序連續地隨時間線性或非線性逐漸升高,以使低沸點組分和高沸點組分在色譜柱中都有適宜的保留、色譜峰分布均勻且峰形對稱。各組分的保留值可用色譜峰最高處的相應溫度即保留溫度表示。要採用程序升溫是因為程序升溫具有改進分離、使峰變窄、檢測限下降及節約省時間等優點。

另外加上可選作固定相的物質很多,因此氣相色譜法是一個分析速度快和分離效率高的分離分析方法。近年來採用高靈敏選擇性檢測器,使得它又具有分析靈敏度高、應用范圍廣等優點。

具體分類:

氣相色譜可分為氣固色譜和氣液色譜。

氣固色譜指流動相是氣體,固定相是固體物質的色譜分離方法。例如活性炭、硅膠等作固定相。

氣液色譜指流動相是氣體,固定相是液體的色譜分離方法。例如在惰性材料硅藻土塗上一層角鯊烷,可以分離、測定純乙烯中的微量甲烷、乙炔、丙烯、丙烷等雜質。

④ 求個c語言實現的線性回歸代碼

我寫過一個GVBasic的,其實很簡單,比如一個數組x[NUM],一個數組y[NUM],求一些中間值比如 x[i]*y[i]的求和,x[i]*x[i]的求和,y[i]*y[i]的求和,照公式看吧,就得到回歸系數和偏差了。

⑤ 什麼是程序升溫

7、升溫降溫法 人為升高微機運行環境的溫度,可以檢驗微機各部件(尤其是CPU)的耐高溫情況,因而及早發現事故隱患。 人為降低微機運行環境的溫度,如果微機的故障出現率大為減少,說明故障出在高溫或不能耐高溫的部件中,此舉可以幫助縮小故障診斷范圍。 事實上,升溫降溫法是採用的是故障促發原理,以製造故障出現的條件來促使故障頻繁出現以觀察和判斷故障所在的位置。 8、程序測試法 隨著各種集成電路的廣泛應用,焊接工藝越來越復雜,同時,隨機硬體技術資料較缺乏,僅靠硬體維修手段往往很難找出故障所在。而通過隨機診斷程序、專用維修診斷卡及根據各種技術參數(如介面地址),自編專用診斷程序來輔助硬體維修則可達到事半功倍之效。程序測試法的原理就是用軟體發送數據、命令,通過讀線路狀態及某個晶元(如寄存器)狀態來識別故障部位。此法往往用於檢查各種介面電路故障及具有地址參數的各種電路。但此法應用的前提是CPU及匯流排基本運行正常,能夠運行有關診斷軟體,能夠運行安裝於I/O匯流排插槽上的診斷卡等。編寫的診斷程序要嚴格、全面、有針對性,能夠讓某些關鍵部位出現有規律的信號,能夠對偶發故障進行反復測試及能顯示記錄出錯情況。軟體診斷法要求具備熟練編程技巧、熟悉各種診斷程序與診斷工具(如debug、DM等)、掌握各種地址參數(如各種I/O地址)以及電路組成原理等,尤其掌握各種介面單元正常狀態的各種診斷參考值是有效運用軟體診斷法的前提基礎。 死機現象的故障一般檢查處理方法 在微機故障現象中,死機是一種較常見的故障現象,同時也是難於找到原因的故障現象之一。由於在「死機」狀態下無法用軟體或工具對系統進行診斷,因而增加了故障排除的難度。 死機現象一般表現為:系統不能啟動、顯示黑屏、顯示「凝固」、鍵盤不能輸入、軟體運行非正常中斷等。 死機可以由軟體和硬體兩方面的原因引起,本文主要分析由硬體引起的死機故障以及檢查處理方法。 掌握下面的方法,可以加快對死機故障原因的確認,收到事半功倍的效果。 ⒈排除系統「假」死機現象 ①首先排除因電源問題帶來的「假」死機現象。應檢查微機電源是否插好,電源插座是否接觸良好,主機、顯示器以及列印機、掃描儀、外置式MODEM、音箱等要外接電源的設備電源插頭是否可靠地插入了電源插座,上述各部件的電源開關是否都置於了開(ON)的位置。 ②檢查微機各部件間數據、控制連線是否連接正確和可靠,插頭間是否有松動現象。尤其是主機與顯示器的數據線連接不良常常造成「黑屏」的假死機現象。 ⒉排除病毒和殺毒因素引起的死機現象 用無毒干凈的系統盤引導系統,然後運行KV300、KILL、AV95、SCAN等防病毒軟體的最新版本對硬碟進行檢查,確保微機安全,排除因病毒引起的死機現象。 另外,如果在殺毒後引起了死機現象,這多半是因為病毒破壞了系統文件、應用程序及關鍵的數據文件;或是殺毒軟體在消除病毒的同時對正常的文件進行了誤操作,破壞了正常文件的結構。碰到這類問題,只能將被損壞(即運行時引起死機)的系統或軟體進行重裝。 3.不同時候死機的處理方法 如果是在系統啟動期間發生的死機,請轉到第6步;如果是在系統啟動後,軟體運行期間發生的死機,請轉到第5步;如果是「黑屏」類的死機請轉到第11步;其它死機請繼續下一步。 ⒋越來越頻繁的死機現象的故障判斷 如果死機現象是從無到有,並且越來越頻繁,一般有以下兩個原因: ①使用維護不當,請參見第7步; ②微機部件品質不良或性能不穩定,請參見第10步。 5.排除軟體安裝、配置問題引起的死機現象 ①如果是在軟體安裝過程中死機,則可能是系統某些配置與安裝的軟體沖突。這些配置包括系統BIOS設置、CONFIG.SYS和AUTOEXEC.BAT的設置、WINDOWS.INI、SYSTEM.INI的設置以及一些硬體驅動程序和內存駐留程序。 可以試著修改上述設置項。對BIOS可以取其默認設置,如「LOAD SETUP DEFAULT」和「LOAD BIOS DEFAULT」;對CONFIG.SYS和AUTOEXEC.BAT則可以在啟動時按F5跳過系統配置文件或按F8逐步選擇執行以及逐項修改CONFIG.SYS和AUTOEXEC.BAT中的配置尤其是EMM386中關於EMS、XMS的配置情況來判斷與安裝程序什麼地方發生了沖突;一些硬體驅動程序和內存駐留程序則可以通過不裝載它們的方法來避免沖突。 ②如果是在軟體安裝後發生了死機,則是安裝好的程序與系統發生沖突。一般的做法是恢復系統在安裝前的各項配置,然後分析安裝程序新裝入部分使用的資源和可能發生的沖突,逐步排除故障原因;刪除新安裝程序也是解決沖突的方法之一。 ③如果是因為病毒或殺毒引起的軟體運行死機,請參見第2步。 ⒍系統啟動過程中的死機現象 系統啟動過程中的死機現象又有兩種情況: ①致命性死機,即系統自檢過程未完成就死機,一般系統不給出提示 ②非致命性死機,在自檢過程中或自檢完成後死機,但系統給出聲音、文字等提示信息 。 對於第一種情況,可以根據開機自檢時致命性錯誤列表的情況,再結合其它方法對故障原因做進一步的分析,如:硬體安裝情況(請參見第8步),系統配置(請參見第9步),硬體設備品質(請參見第10步)以及顯示器黑屏(請參見第11步)等。 對於第二種情況,可以根據開機自檢時非致命性錯誤代碼表,開機自檢時非致命性錯誤代碼表]和開機自檢時鳴笛音響對應的錯誤代碼表;開機自檢時鳴笛音響對應的錯誤代碼表,中所列的情況對可能出現故障的部件做重點檢查,但也不能忽略相關部件的檢查,因為相當多的故障並不是由提示信息指出的部件直接引起,而常常由相關部件故障引發。一些關鍵系統部件(如:CPU、內存條、CACHE、電源、系統後備電池、主板、匯流排等)的故障也常常以各種相關或不相關部件故障的形式表現出來,因此這些部件的檢查也應在考慮范圍之內。 ⒎排除因使用、維護不當引起的死機現象 微機在使用一段時間後會因為使用、維護不當而引起死機,尤其是長時間不使用微機後常會出現此類故障。引起的原因有以下幾種: ①積塵導致系統死機 灰塵是微機的大敵。過多的灰塵附著在CPU、晶元、風扇的表面會導致這些元件散熱不良;電路印刷板上的灰塵在潮濕的環境中常常導致短路。上述兩種情況均會導致死機。 可以用毛刷將灰塵掃去,或用棉簽沾無水酒精清洗積塵元件。注意不要將毛刷和棉簽的毛、棉留在電路板和元件上而成為新的死機故障源。 ②部件受潮 長時間不使用微機,會導致部分元件受潮而使用不正常。可用電吹風的低熱擋均勻對受潮元件「烘乾」。注意不可對元件一部分加熱太久或溫度太高,避免烤壞元件。 ③板卡、晶元引腳氧化導致接觸不良 將板卡、晶元拔出,用橡皮擦輕輕擦拭引腳表面去除氧化物,重新插入插座。 ④板卡、外設介面松動導致死機 仔細檢查各I/O插槽插接是否正確,各外設介面接觸是否良好,線纜連接是否正常。 ⑤意外損壞 如:雷擊電流通過未經保護的電源及MODEM電話線進入主機,損壞電源、主機板、MODEM及各種內外設備。 意外損壞是否發生、其對微機產生了什麼破壞性的後果,都只能用交換法、拔插法測試主機各部件的好壞來判斷。 8.排除因系統配置不當引起的死機現象 系統配置與微機硬體設備和系統BIOS、主板上跳線開關設置密切相關,常見的死機故障原因有: ①CPU主頻設置不當 這一類的故障主要有CPU主頻跳線開關設置錯誤、Remark CPU引起的BIOS設置與實際情況不符、超頻使用CPU,CPU性能不良引起的死機 ②內存條參數設置不當 這一類的故障主要有內存條設置錯誤和Remark 內存條引起的BIOS設置與實際情況不符 ③CACHE參數設置不當 這一類的故障主要有CACHE設置錯誤、Remark CACHE引起的BIOS設置與實際情況不符 ④CMOS參數被破壞 由於頻繁修改CMOS參數,或病毒對CMOS參數的破壞,常常導致CMOS參數混亂而很難恢復。可以採用對CMOS放電的方法並採用系統BIOS默認設置值重新設定CMOS參數。CMOS的放電方法可參照主板說明書進行。重設CMOS參數後,還必須對硬碟殺毒。 ⒐排除因硬體安裝不當引起的死機現象 硬體外設安裝過程中的疏忽常常導致莫名其妙的死機,而且這一現象往往在微機使用一段時間後才逐步顯露出來,因而具有一定的迷惑性。 ①部件安裝不到位、插接松動、連線不正確引起的死機 顯示卡與I/O插槽接觸不良常常引起顯示方面的死機故障,如「黑屏」;內存條、CACHE與插槽插接松動則常常引起程序運行中死機,甚至系統不能啟動;其它板卡與插槽(插座)的接觸問題也常常引起各種死機現象。 要排除這些故障,只需將相應板卡、晶元用手摁緊,或從插槽(插座)上拔下從新安裝。如果有空閑插槽 (插座),也可將該部件換一個插槽(插座)安裝以解決接觸問題。 線纜連接不正確有時也會引發死機故障。 ②安裝不當導致部件變形、損壞引起的死機 口徑不正確、長度不恰當的螺釘常常導致部件安裝孔損壞、螺釘接觸到部件內部電路引起短路導致死機;不規格的主板、零部件或不規范的安裝步驟常常引起機箱、主板、板卡外形上的變異因而擠壓該部件內部元件導致局部短路、內部元件損壞導致莫名其妙的死機。 如果只是微機部件外觀變形,可以通過正確的安裝方法和更換符合規格的零部件來解決;如果已經導致內部元件損壞,則只能更換新的零部件了。 10.排除因硬體品質不良引起的死機現象 一般說來,微機產品都是國際大廠商按照國際標准流水線生產出來的,部件不良率是很低的。但是計算機產品高利潤的誘惑使許多非法廠商對微機標准零部件改頭換面、進行改頻、重新標記(Remark)、以次充好甚至將廢品、次品當作正品出售,導致這些「超水平」發揮的產品性能不穩定,環境略有不適或使用時間稍長就會頻繁發生故障,尤其是CPU、內存條、CACHE、主板等核心部件及其相關產品的品質不良,是導致無原因死機的主要故障源。 檢查時應著重檢查以下部件: ①CPU CPU是被假冒得最多也是極容易導致死機的部件。被Remark的CPU在低溫、短時間使用時一切正常,但只要在連續高溫的環境中長時間使用其死機弊端就很容易暴露。使用Windows、3DS等對CPU特性要求較高的軟體比DOS等簡單軟體更能發現CPU的問題。 參照說明書將CPU主頻跳低1到2個檔次使用,如:將166降為150、133或120使用。如果死機現象大幅度減少或消失,就可以判斷是CPU有問題。也可以用交換法,更換同型號的正常CPU如果不再死機一般可以斷定是CPU的問題。 有些用戶喜歡把CPU超頻使用以獲得高速的性能,這也是常導致計算機死機的原因。將CPU跳回原頻率就能解決死機問題。 ②內存條 內存條常常被做的手腳有:速度標記被更改,如:70ns被Remark為60ns;非奇偶校驗冒充奇偶校驗內存;非EDO內存冒充EDO內存;劣質內存條冒充好內存條。 在BIOS中將內存條讀寫時間適當增加(如:從60ns升為70ns),如果死機消失可以斷定是內存條速度問題。 如果是內存本身的質量問題,只有通過更換新的內存條才能解決。 ③CACHE CACHE也存在以次充好問題。另外,CACHE本身的損壞也導致嚴重的死機。系統BIOS設置中的關閉外部CACHE選項,如果死機消失,則必是CACHE問題。④CMOS晶元損壞 CMOS晶元一般不容易損壞,但一旦有物理損壞則必然引起死機,其中以黑屏不能啟動為主。由於CMOS晶元目前都已集成到超大規模集成電路的晶元組中,所以,更換CMOS晶元往往要連主板一起更換。 ⑤主板 一般主板的故障常常是最先考慮然而卻是要到最後才能確定的。除了印刷板上的飛線、斷線和主板上元件被燒焦、主板受擠壓變形、主板與機箱短路等明顯的現象外,主板本身的故障只有在確認了主板上所有零部件正常(將你的板卡、CPU、內存條等配件拿到好的主板上使用正常,而別人使用正常的板卡、器件插到你的主板上就不能正常運行)時才能判斷是否是主板故障。 如果更換了好的同型號主板死機依然存在,則可能是該主板與某個零部件不兼容。要麼更換兼容的其它型號的主板,要麼只能用拔插法依次測試各板卡、晶元,找出不兼容的零部件更換之。電源、風扇、機箱等 劣質電源、電源線纜故障、電源插接松動、電源電壓不穩都是引起不明原因死機的罪魁禍首。CPU風扇、電源風扇轉動不正常、風扇功率不足則會引起CPU和機箱內「產熱大戶」元件散熱不良因而引起死機。11.系統黑屏故障的排除 系統死機故障的很大一部分現象表現為黑屏(即顯示器屏幕上無任何顯示),這類故障與顯示器、顯示卡關系很密切,同時系統主板、CPU、CACHE、內存條、電源等部件的故障也能導致黑屏。 系統黑屏的死機故障的一般檢查方法如下: ①排除「假」黑屏 檢查顯示器電源插頭是否插好,電源開關是否已打開,顯示器與主機上顯示卡的數據連線是否連接好、連接插頭是否松動,看是否是因為這些因素引起的黑屏。 另外,應該動一下滑鼠或按一下鍵盤看屏幕是否恢復正常。因為黑屏也可能是因為設置了節能模式(可在BIOS設置中查看和修改)而出現的假死機。 ②在黑屏的同時系統其它部分是否工作正常,如:啟動時軟/硬碟驅動器自檢是否通過,鍵盤按鍵是否有反應等。可以通過交換法用一台好的顯示器接在主機上測試,如果只是顯示器黑屏而其它部分正常,則只是顯示器出了問題,這仍是一種假死機現象。③黑屏發生在系統開機自檢期間,請參見第6步 ④黑屏發生在顯示驅動程序安裝或顯示模式設置期間,顯然是選擇了顯示系統不能支持的模式,應選擇一種較基本的顯示方式。如:Windows下設置顯示模式後黑屏或花屏,則應在DOS下運行Windows目錄下的SETUP.EXE程序選擇標准VGA顯示方式。 ⑤檢查顯示卡與主板I/O插槽接觸是否正常、可靠,必要時可以換一個I/O槽插入顯示卡試試。 ⑥換一塊已確認性能良好的同型號顯示卡插入主機重新啟動,若黑屏死機現象消除則是顯示卡的問題。 ⑦換一塊已確認性能良好的其它型號顯示卡插入主機重新啟動,若黑屏死機現象消除則是顯示卡與主板不兼容,可以考慮更換顯示卡或主板。 ⑧檢查是否錯誤設置了系統的核心部件,如CPU的頻率、內存條的讀寫時間、CACHE的刷新方式、主板的匯流排速率等,這些都可能導致黑屏的死機現象。 ⑨檢查主機內部各部件連線是否正確,有一些特殊的連線錯誤會導致黑屏死機。 ⑩請參見本文的其它步驟所列的死機故障診斷步驟,這些故障導致的死機常常也伴隨著黑屏。 12、排除死機故障的常用方法 在具體故障檢查中常常用以下方法查找死機故障的原因: (清潔法 ·撥插法 ·交換法 ·振動敲擊法 ·升溫降溫法 ·比較法) 微機不能啟動有幾種情況:一種是由於主機加了系統級保護口令;一種是在開機自檢時死機;一種是硬碟不能啟動,通過軟碟機、光碟機或網路伺服器仍能啟動;另一種則是系統有效驅動器均不能啟動;還有一種是能部分啟動但不能啟動完全。下面針對這幾種情況分別闡述它們的處理方法。 1、系統級開機口令保護 由於忘記了口令而無法通過系統級口令保護導致微機不能啟動的故障,CMOS口令遺忘的處理方法]中的相關敘述。 2、開機自檢時死機 3、硬碟不能啟動,通過軟碟機、光碟機或網路伺服器仍能啟動 這種情況一般是硬碟啟動信息不完整或遭到了破壞,可以利用工具軟體進行恢復。如果以前製作有系統急救盤,可以利用軟盤啟動,然後用急救盤恢復硬碟系統信息;如果沒有系統急救盤,可以按照系統CMOS信息、硬碟分區表、C盤引導扇區、DOS系統文件、系統配置文件的順序對硬碟進行恢復。 ①判斷系統是否能識別硬碟 ②若系統BIOS能識別硬碟,則判斷主引導記錄、系統分區表和邏輯C盤信息是否正確。 以A驅啟動為例,若從A驅啟動後DOS不能識別C盤,表明硬碟的主引導記錄、分區信息已遭破壞,應使用FDISK重寫主引導扇區並重新建立分區信息,然後用FORMAT C:命令對C盤進行高級格式化。 ③若從A驅啟動後DOS能識別和進入C盤但不能從C盤啟動,表明分區表和邏輯C盤信息正確,此時應判斷C盤分區是否被激活。可運行FDISK查看並將C盤設為活動分區, ④若分區表信息正確且C盤已是活動分區但仍不能從C盤啟動,表明C盤DOS引導記錄已遭到破壞,應重建C盤引導系統。可從A驅啟動,並執行SYS C:命令將DOS系統傳到C盤上。 ⑤經上述步驟,C盤應能啟動成功。若還不能,則應檢查病毒。 ⑥在重裝DOS引導系統的過程中如發現不能寫入分區表信息或引導區記錄,應檢查BIOS設置中是否打開了病毒防護功能而阻止了程序向主引導分區的寫操作。 ⑦如果系統BIOS不能識別硬碟,或在排除了軟體和病毒原因後仍不能啟動,則應打開機箱檢查軟/硬碟驅動器的電源、數據電纜是否正常,連接是否可靠,驅動器安裝是否正確,驅動器本身質量是否有問題。涉及硬體的檢查建議向專家請教。4、系統有效驅動器均不能啟動 ①檢查系統BIOS設置中是否正確設置了軟/硬碟驅動器的各項參數,參數設置不正常會導致微機不能正確識別各個驅動器,則系統啟動也無從說起。 ②若系統能正確識別各個驅動器,除硬碟外的驅動器都能啟動系統,則可參照本文第3節的方法對硬碟進行處理。 ③若仍不能從A驅或CDROM上啟動,應該檢查A驅或CDROM的安裝、連線是否正常。 ④若A驅或CDROM安裝正常仍不能啟動,應該檢查啟動軟盤或啟動光碟是否安裝了完整的DOS引導系統,該步驟只能在其它確認正常的計算機上進行檢查。完整的DOS系統應該包括BOOT區程序、IO.SYS、MSDOS.SYS、COMMAND.COM,並且BOOT區程序必須占據引導盤的引導扇區位置,其餘三個文件在數據區的最前位置並要連續存放。有些版本的DOS系統中用IBMBIO.COM 代替IO.SYS,用IBMDOS.COM代替MSDOS.SYS,但其存放要求是一致的。 ⑤若系統引導盤也無問題,則應檢查軟碟機磁頭或CDROM 的光頭是否太臟,可用清洗劑或無水酒精進行清洗。 ⑥仍不能引導的,可能是驅動器本身有故障,建議向專家請教。5、能部分啟動但不能啟動完全 ①啟動過程中在出現「Starting MS-DOS」時按F5鍵能啟動成功而不按F5鍵啟動失敗,則問題出在CONFIG.SYS和AUTOEXEC.BAT的配置上。可在啟動過程中在出現「Starting MS-DOS」時按F8鍵然後一句一句地執行CONFIG.SYS和AUTOEXEC.BAT中的語句找出死機的位置把該句刪除或進行修改。 ②啟動過程中在出現「Starting MS-DOS」時按F5鍵啟動失敗或者根本不出現「Starting MS-DOS」,這主要是DOS引導系統遭到破壞或沒有安裝完全。較簡單的方法是重新安裝DOS系統,如:用正常的驅動器和引導盤啟動,然後用SYS x:將系統傳入x驅動器,這里的x是要重新安裝DOS系統的驅動器盤符。③在重裝DOS引導系統的過程中如發現不能寫入分區表信息或引導區記錄,應檢查BIOS設置中是否打開了病毒防護功能而阻止了程序向主引導分區的寫操作。 ④如果屢次重裝DOS系統仍啟動失敗,有可能是碟片上存儲引導系統的部分有物理介質損壞,建議向專家請教。

www.pcyoy.com

⑥ 求線性表的C語言程序

第一個文件commom.h
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0

第二個文件seqlist.h
#define ElemType int
#define MAXSIZE 100 /*此處的宏定義常量表示線性表可能達到的最大長度*/
typedef struct
{
ElemType elem[MAXSIZE]; /*線性表佔用的數組空間*/
int last; /*記錄線性表中最後一個元素在數組elem[ ]中的位置(下標值),空表置為-1*/
}SeqList;

第三個文件locate.cpp
#include "common.h"
#include "seqlist.h"

int Locate(SeqList L, ElemType e)
{
int i=0; /*i為掃描計數器,初值為0,即從第一個元素開始比較*/
while ((i<=L.last)&&(L.elem[i]!=e)) /*順序掃描表,直到找到值為key的元素, 或掃描到表尾而沒找到*/
i++;
if (i<=L.last)
return(i+1); /*若找到值為e的元素,則返回其序號*/
else
return(-1); /*若沒找到,則返回空序號*/
}

void main()
{
SeqList l;
int p,q,r;
int i;
printf("請輸入線性表的長度:");
scanf("%d",&r);
l.last = r-1;
printf("請輸入線性表的各元素值:\n");
for(i=0; i<=l.last; i++)
{
scanf("%d",&l.elem[i]);
}
printf("請輸入要查找的元素值:\n");
scanf("%d",&q);
p=Locate(l,q);
if(p == -1)
printf("在此線性表中沒有該元素!\n");
else
printf("該元素在線性表中的位置為:%d\n",p);
}

第四個文件InsList.cpp
#include "common.h"
#include "seqlist.h"

/*在順序表L中第i個數據元素之前插入一個元素e。 插入前表長n=L->last+1,
i的合法取值范圍是 1≤i≤L->last+2 */
int InsList(SeqList *L,int i,ElemType e)
{
int k;
if((i<1) || (i>L->last+2)) /*首先判斷插入位置是否合法*/
{
printf("插入位置i值不合法");
return(ERROR);
}
if(L->last>= MAXSIZE-1)
{
printf("表已滿無法插入");
return(ERROR);
}
for(k=L->last;k>=i-1;k--) /*為插入元素而移動位置*/
L->elem[k+1]=L->elem[k];
L->elem[i-1]=e; /*在C語言數組中,第i個元素的下標為i-1*/
L->last++;
return(OK);
}

void main()
{
SeqList *l;
int p,q,r;
int i;
l=(SeqList*)malloc(sizeof(SeqList));
printf("請輸入線性表的長度:");
scanf("%d",&r);
l->last = r-1;
printf("請輸入線性表的各元素值:\n");
for(i=0; i<=l->last; i++)
{
scanf("%d",&l->elem[i]);
}
printf("請輸入要插入的位置:\n");
scanf("%d",&p);
printf("請輸入要插入的元素值:\n");
scanf("%d",&q);
InsList(l,p,q);
for(i=0; i<=l->last; i++)
{
printf("%d ",l->elem[i]);
}
}

第五個文件DelList.cpp
#include "common.h"
#include "seqlist.h"

int DelList(SeqList *L,int i,ElemType *e)
/*在順序表L中刪除第i個數據元素,並用指針參數e返回其值。i的合法取值為1≤i≤L.last+1 */
{
int k;
if((i<1)||(i>L->last+1))
{
printf("刪除位置不合法!");
return(ERROR);
}
*e = L->elem[i-1]; /* 將刪除的元素存放到e所指向的變數中*/
for(k=i; i<=L->last; k++)
L->elem[k-1] = L->elem[k]; /*將後面的元素依次前移*/
L->last--;
return(OK);
}

void main()
{
SeqList *l;
int p,r;
int *q;
int i;
l = (SeqList*)malloc(sizeof(SeqList));
q = (int*)malloc(sizeof(int));
printf("請輸入線性表的長度:");
scanf("%d",&r);
l->last = r-1;
printf("請輸入線性表的各元素值:\n");
for(i=0; i<=l->last; i++)
{
scanf("%d",&l->elem[i]);
}
printf("請輸入要刪除的元素位置:\n");
scanf("%d",&p);
DelList(l,p,q);
printf("刪除的元素值為:%d\n",*q);
}

第六個文件merge.cpp
#include "common.h"
#include "seqlist.h"

void merge(SeqList *LA, SeqList *LB, SeqList *LC)
{
int i,j,k;
i=0;j=0;k=0;
while(i<=LA->last&&j<=LB->last)
if(LA->elem[i]<=LB->elem[j])
{
LC->elem[k]= LA->elem[i];
i++;
k++;
}
else
{
LC->elem[k]=LB->elem[j];
j++;
k++;
}
while(i<=LA->last) /*當表LA有剩餘元素時,則將表LA餘下的元素賦給表LC*/
{
LC->elem[k]= LA->elem[i];
i++;
k++;
}
while(j<=LB->last) /*當表LB有剩餘元素時,則將表LB餘下的元素賦給表LC*/
{
LC->elem[k]= LB->elem[j];
j++;
k++;
}
LC->last=LA->last+LB->last+1;
}

void main()
{
SeqList *la,*lb,*lc;
int r;
int i;
la=(SeqList*)malloc(sizeof(SeqList));
printf("請輸入線性表A的長度:");
scanf("%d",&r);
la->last = r-1;
printf("請輸入線性表A的各元素值:\n");
for(i=0; i<=la->last; i++)
{
scanf("%d",&la->elem[i]);
}
lb=(SeqList*)malloc(sizeof(SeqList));
printf("請輸入線性表B的長度:");
scanf("%d",&r);
lb->last = r-1;
printf("請輸入線性表B的各元素值:\n");
for(i=0; i<=lb->last; i++)
{
scanf("%d",&lb->elem[i]);
}

lc=(SeqList*)malloc(sizeof(SeqList));

merge(la,lb,lc);
printf("合並後線性表C中的元素為:\n");
for(i=0; i<=lc->last; i++)
{
printf("%d ",lc->elem[i]);
}
}

包含了線性表插入,查找,刪除,合並運算。

⑦ C語言數據結構線性表源代碼問題

#include <stdio.h>#include <stdlib.h>#include <time.h>#define MAXSIZE 100#define TRUE 1#define ERROR 0typedef int ElemType;typedef struct list { ElemType *elme; int length;}Sqlist;int initlist(Sqlist *L) { L->elme = (ElemType *)malloc(MAXSIZE * sizeof ElemType); if(L->elme == NULL) return ERROR; L->length = 0; return TRUE;}int insertlist(Sqlist *L,int pos,ElemType e) { int i; if(L->length == 0) { // 第一元素無條件插入 L->elme[0] = e; L->length = 1; return TRUE; } if(L->length >= MAXSIZE) { printf("表滿。length = %d。\n",L->length); return ERROR; } if(pos < 1 || pos > L->length) { printf("插入位置不合理。\n"); printf("表長:%d,位置:%d\n",L->length,pos); printf("元素%d未能插入。\n",e); return ERROR; } for(i = L->length; i > pos - 1; --i) L->elme[i] = L->elme[i - 1]; L->elme[pos - 1] = e; ++L->length; return TRUE;}int deletelist(Sqlist *L,int pos) { int i; if(pos < 1 || pos > L->length) { printf("刪除位置不合理。\n"); printf("表長:%d,位置:%d\n",L->length,pos); printf("第%d個元素未能刪除。\n",pos); return ERROR; } for(i = pos - 1; i < L->length - 1; ++i) L->elme[i] = L->elme[i + 1]; --L->length; return TRUE;}void displaylist(Sqlist *L) { int i; for(i = 0;i < L->length; i++) printf("%d ",L->elme[i]); printf("\n");}int main(void){ Sqlist *L = (Sqlist *)malloc(sizeof(Sqlist)); int i,n,pos,res; initlist(L); printf("Enter n:"); scanf("%d",&n); srand((unsigned)time(NULL)); for(i = 0; i < n; ++i) { res = insertlist(L,i,rand() % 100); if(res == ERROR) --i; } displaylist(L); printf("Enter pos:"); scanf("%d",&pos); deletelist(L,pos); displaylist(L); return 0;}

⑧ C語言 線性表代碼的問題:

SqList.c:19: warning: incompatible implicit declaration of built-in function \u2018malloc\u2019:

你使用了malloc庫函數,但可能沒有添加對聲明這個函數的頭文件的引用(malloc.h)
另外,如果是多文件工程,檢查其他文件中是否缺少頭文件引用,或者是否有類型名混淆等問題。

⑨ 求一元線性回歸分析的c語言代碼

//利用最小二乘法進行線形擬合
#include"stdio.h"
#include"math.h"
#define max_size 100
void main()
{
float data[max_size][2];
//用data數組來存放x,y的值.
float x_sum=0,y_sum=0;
float x_avg,y_avg;
float x,y;
float Lxy=0,Lxx=0,Lyy=0;
float r;
float a,b;
int i;
int count=0;
next:
printf("輸入至少2組x,y的值,輸入格式為 x,y");
printf("輸入 -999,-999 表示輸入結束!\n");
while(1)
{
scanf("%f,%f",&x,&y);
//實數最好不直接用"=="或"!="比較大小。
if(fabs(x+999)==0&&fabs(y+999)==0) break;
data[count][0]=x;
data[count][1]=y;
count++;
}
for(i=0;i<count;i++)
{
x_sum=data[i][0]+x_sum;
y_sum=data[i][1]+y_sum;
}
x_avg=x_sum/count;
y_avg=y_sum/count;
for(i=0;i<count;i++)
{
Lxy=(data[i][0]-x_avg)*(data[i][1]-y_avg)+Lxy;
Lxx=(data[i][0]-x_avg)*(data[i][0]-x_avg)+Lxx;
Lyy=(data[i][1]-y_avg)*(data[i][1]-y_avg)+Lyy;
}
//r用於計算相關系數,相關系數越接近1,表示相關性越好.
r=Lxy/sqrt(Lxx*Lyy);
if(r>0.5)
{
printf("數據的線形關系較好。\n");
a=Lxy/Lxx;
b=y_avg-a*x_avg;
}
else
{
printf("數據的線形關系不好!請重新輸入數據!\n");
goto next;
}
printf("線形擬合的結果為:\n");
if(fabs(b)==0)
printf("y=%3.1fx\n",a);
else if(b>0)
printf("y=%3.1fx+%3.2f\n",a,b);
else if(b<0)
printf("y=%3.1fx%3.2f\n",a,b);
printf("相關系數為:%3.1f\n",r);

}

閱讀全文

與線性升溫c源碼相關的資料

熱點內容
編程序的樂趣是什麼 瀏覽:294
阿里用的什麼資料庫伺服器 瀏覽:337
玩劍網用哪個攻略app 瀏覽:76
javamysql資料庫操作 瀏覽:225
眉山參加少兒編程培訓 瀏覽:986
androidaes加密java 瀏覽:816
蜜字的app叫什麼 瀏覽:544
程序員配樂 瀏覽:453
做一個解壓屋 瀏覽:619
品牌衣服用什麼app 瀏覽:151
python3鏈接資料庫 瀏覽:55
教課書英語是什麼app 瀏覽:884
環液式壓縮機 瀏覽:479
android控制項事件 瀏覽:968
雲伺服器的鏡像選擇什麼 瀏覽:755
python如何設置cplex 瀏覽:10
linux的mv命令詳解 瀏覽:359
怎麼把安裝好的python放在桌面上 瀏覽:121
mysql退出當前命令 瀏覽:743
現在還有什麼手機好用的app 瀏覽:328