當前位置:首頁 » 編程語言 » c語言寫演算法

c語言寫演算法

發布時間: 2023-07-05 10:26:03

A. c語言寫個演算法

#include <stdio.h>
#include<stdlib.h>
#include<time.h>

int InArray(int a[],int N,int data)/*判斷data是否在數組a[N]中.是則返回1,否則返回0*/
{
int i;
for(i=0;i<N;i++)
if(data==a[i])
return 1;
return 0;
}

int main(void)
{
int i,j=1,temp,a[8]={0};
srand( (unsigned)time( NULL ) ); /*保證每次生成的隨機數不相同*/

a[0]=rand()%8+1; /*數組第一項*/
for(i=1;i<8;i++)
{
temp=rand()%8+1;
if(InArray(a,8,temp))//當產生的隨機數已存在
{i--;continue;}
else
a[j++]=temp;
}

for(i=0;i<8;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}

B. 用C語言編寫一個快速排序演算法 輸入10個數

1、「快速排序法」使用的是遞歸原理,下面一個例子來說明「快速排序法」的原理。首先給出一個數組{53,12,98,63,18,72,80,46, 32,21},先找到第一個數--53,把它作為中間值,也就是說,要把53放在一個位置,使得它左邊的值比它小,右邊的值比它大。{21,12,32, 46,18,53,80,72,63,98},這樣一個數組的排序就變成了兩個小數組的排序--53左邊的數組和53右邊的數組,而這兩個數組繼續用同樣的方式繼續下去,一直到順序完全正確。一般來說,冒泡法是程序員最先接觸的排序方法,它的優點是原理簡單,編程實現容易,但它的缺點就是速度太慢。
2、快速排序代碼:

#include<stdio.h>
voidquicksort(inta[],intleft,intright)
{
inti,j,temp;
i=left;
j=right;
temp=a[left];
if(left>right)
return;
while(i!=j)
{
while(a[j]>=temp&&j>i)
j--;
if(j>i)
a[i++]=a[j];
while(a[i]<=temp&&j>i)
i++;
if(j>i)
a[j--]=a[i];

}
a[i]=temp;
quicksort(a,left,i-1);
quicksort(a,i+1,right);
}
voidmain()
{
inta[]={53,12,98,63,18,72,80,46,32,21};
inti;
quicksort(a,0,9);
/*排好序的結果*/
for(i=0;i<10;i++)
printf("%4d ",a[i]);
}

C. 用c語言寫演算法

直接手寫

size_t lenT, lenP, lenS;
char *e;
if ( !T || !P || !S ) return;
e = strstr( T, P );

if ( !e ) return;
lenT = strlen( T );
lenP = strlen( P );
lenS = strlen( S );
memmove( e+lenS, e+lenP, lenT+1-(e-T)-lenP );
memcpy( e, s, lenS );

假定三個長度 t、p、s 。
strstr: O(t*p)
strlen*3: O(t+p+s)
memmove: O(t-p)
memcpy:O(s)
最終復雜度 O(t*p+2(t+s)) -> O(n^2)。
可以看出熱點在 strstr 函數。
如果將其通過 kmp 或類似的匹配演算法優化成 O(n) 的,那麼復雜度可以直接降為 O(n) 。

D. c語言中什麼是演算法有哪些描述演算法的例子

1、有窮性(有限性)。任何一種提出的解題方法都是在有限的操作步驟內可以完成的。
如果在有限的操作步驟內完不成,得不到結果,這樣的演算法將無限的執行下去,永遠不會停止。除非手動停止。例如操作系統就不具有有窮性,它可以一直運行。
2、一個演算法應該具有以下七個重要的特徵:
1)有窮性(finiteness)
演算法的有窮性是指演算法必須能在執行有限個步驟之後終止
2)確切性(definiteness)
演算法的每一步驟必須有確切的定義;
3)輸入項(input)
一個演算法有0個或多個輸入,以刻畫運算對象的初始情況,所謂0個輸入是指演算法本身定出了初始條件;
4)輸出項(output)
一個演算法有一個或多個輸出,以反映對輸入數據加工後的結果.沒有輸出的演算法是毫無意義的;
5)可行性(effectiveness)
演算法中執行的任何計算步都是可以被分解為基本的可執行的操作步,即每個計算步都可以在有限時間內完成;
6)
高效性(high
efficiency)
執行速度快,佔用資源少;
7)
健壯性(robustness)
健壯性又稱魯棒性,是指軟體對於規范要求以外的輸入情況的處理能力。所謂健壯的系統是指對於規范要求以外的輸入能夠判斷出這個輸入不符合規范要求,並能有合理的處理方式。

E. C語言演算法是什麼,拿到一個題怎麼給他來寫演算法來實現目的

簡單來說C語言演算法就像你做一道高數數學題一樣
編程最終目標是實現,怎麼實現就是演算法。
簡單的量是常量,高點是變數,最高級就是演算法,演算法是編程的核心。
所以演算法有專門一本比c更厚的書。
拿到一個題怎麼給他來寫演算法的問題,只用平時多寫程序。如果時間不限定還好,因為編程不像理想一樣成功,總體來說必須實踐。
另外就是天賦了。
不過「興趣」是重點。但如果只是為了應付考試的話,c不會很難得的。因為中國考試多以理論為主的。

F. 用C語言編寫一個對稱加密演算法,對字元串加密

/*本問題的關鍵是如何交換ASCII的二進制位,下面提供簡短演算法,並附上VC++6.0環境下的運行結果截圖。

*/

#include<stdio.h>

charswapbit(charc){

chari,num=0,ch[8];

for(i=0;i<8;i++){

ch[i]=c&1;

c=(c>>1);

}

for(i=0;i<8;i++){

num=2*num+ch[i];

}

returnnum;

}

intmain(){

charch;

for(ch='A';ch<='Z';ch++){

printf("%c=%X:%X ",ch,ch,0XFF&swapbit(ch));

}

return0;

}

G. C語言寫一個線路加密法或叫換位加密演算法

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>

constintMAXSIZE=100;

char*encrypt(char*essay){
inti,j,n,u,v,m,len=strlen(essay);
char*result;
m=n=(int)sqrt(len);
if(m*m<len)++n;
result=(char*)malloc(m*n*sizeof(char)+1);
for(i=0;i<m;++i){
for(j=0;j<n;++j){
u=n*i+j;
v=m*j+i;
if(u<len)result[v]=essay[u];
elseresult[v]='';
}
}
result[m*n]=0;
returnresult;
}

intmain(){
chars[MAXSIZE],*u;
printf("輸入明文: ");
fgets(s,MAXSIZE,stdin);
s[strlen(s)-1]=0;//去除尾部的
u=encrypt(s);
printf("密文是: %s ",u);
free(u);
return0;
}

H. c語言演算法

離散數學離散數學作為計算機學科的基礎是競賽中涉及最多的數學分支,重中之重又在於圖論和組合數學,尤其是圖論。圖論之所以運用最多是因為它的變化最多,而且可以輕易地結合基本數據結構和許多演算法的基本思想,較多用到的知識包括連通性判斷、DFS和BFS,關節點和關鍵路徑、歐拉迴路、最小生成樹、最短路徑、二部圖匹配和網路流等等。雖然這部分的比重很大,但是往往也是競賽中的難題所在,如果有初學者對於這部分的某些具體內容暫時感到力不從心,也不必著急,可以慢慢積累。組合數學競賽中設計的組合計數問題大都需要用組合數學來解決,組合數學中的知識相比於圖論要簡單一些,很多知識對於小學上過奧校的同學來說已經十分熟悉,但是也有一些部分需要先對代數結構中的群論有初步了解才能進行學習。組合數學在競賽中很少以難題的形式出現,但是如果積累不夠,任何一道這方面的題目卻都有可能成為難題。數論以素數判斷和同餘為模型構造出來的題目往往需要較多的數論知識來解決,這部分在競賽中的比重並不大,但只要來上一道,也足以使知識不足的人冥思苦想上一陣時間。素數判斷和同餘最常見的是在以密碼學為背景的題目中出現,在運用密碼學常識確定大概的過程之後,核心演算法往往要涉及數論的內容。計算幾何計算幾何相比於其它部分來說是比較獨立的,就是說它和其它的知識點很少有過多的結合,較常用到的部分包括—線段相交的判斷、多邊形面積的計算、內點外點的判斷、凸包等等。計算幾何的題目難度不會很大,但也永遠不會成為最弱的題。線性代數對線性代數的應用都是圍繞矩陣展開的,一些表面上是模擬的題目往往可以藉助於矩陣來找到更好的演算法。 ~

熱點內容
命令行訪問ftp 發布:2025-02-09 14:10:53 瀏覽:61
加密文件模板 發布:2025-02-09 14:10:13 瀏覽:223
翁虹ftp 發布:2025-02-09 14:02:54 瀏覽:131
java加密對稱 發布:2025-02-09 13:55:49 瀏覽:412
坤詡錢包為什麼沒有安卓版 發布:2025-02-09 13:50:49 瀏覽:299
存儲過程性能優化 發布:2025-02-09 13:42:59 瀏覽:729
源碼失竊 發布:2025-02-09 13:38:34 瀏覽:527
自動瀏覽器腳本 發布:2025-02-09 13:37:00 瀏覽:141
易語言問道源碼 發布:2025-02-09 12:59:03 瀏覽:664
ip和伺服器有關嗎 發布:2025-02-09 12:51:26 瀏覽:952