第一篇:C程序設(shè)計(jì)算法總結(jié)舉例(大全)
C程序設(shè)計(jì)算法總結(jié)舉例
1.順序結(jié)構(gòu)舉例
(該類題目,通常輸入一些數(shù)據(jù),再通過使用一個(gè)或幾個(gè)數(shù)學(xué)公式求解,通過賦值表達(dá)式得到結(jié)果,并輸出。包括求三角形面積,相關(guān)物體體積,求溫度,解二元一次方程組、一元二次方程等)
1-1.求溫度轉(zhuǎn)換 華氏-攝氏溫度轉(zhuǎn)換公式:c=5/9(f-32)#include
k = s = a;for(i = 1;i <= nyy1;j >= 0;j--){ printf(“%c”, 'A' + j);} printf(“n”);
} }
#include
} }
4.數(shù)組
包括:排序、查找、字符串長(zhǎng)度、字符串大小寫轉(zhuǎn)換、比較字符串大小、字符串連接、字符串拷貝、數(shù)列前n項(xiàng)、統(tǒng)計(jì)字符串中單詞個(gè)數(shù)、求數(shù)組元素最值、二維數(shù)組輸入、輸出、轉(zhuǎn)置、數(shù)字(字符串)逆序輸出。數(shù)組中統(tǒng)計(jì)奇數(shù)偶數(shù),二維數(shù)組對(duì)角線元素,行列元素的相關(guān)處理。
4-1排序(選擇法、冒泡法)冒泡法
(1)冒泡法排序算法
將一個(gè)數(shù)字序列存放在數(shù)組中,相鄰的兩個(gè)數(shù)進(jìn)行比較,若前一個(gè)數(shù)大則交換,...一趟下來最大數(shù)必然在最后,然后對(duì)于剩下元素反復(fù)執(zhí)行上面操作 #include
編寫自定義函數(shù),實(shí)現(xiàn)冒泡法排序
#include
{
x = a[j];
a[j] = a[j + 1];
a[j + 1] = x;} }(3)選擇排序算法
將一個(gè)數(shù)字序列存放在數(shù)組中,假設(shè)“剩下的序列中第一個(gè)元素”為最小值,將其與數(shù)組中其它元素進(jìn)行比較,找到最小值,將該最小值與“剩下的序列中第一個(gè)元素”進(jìn)行交換,最小元素放到剩下序列的第一個(gè)位置,反復(fù)做這個(gè)操作……
#include
#include
void xuanze(int a[]){ int i, j, x, m;for(i = 0;i <= 8;i++){ m = i;for(j = i + 1;j <= 9;j++)if(a[m] > a[j])m = j;x = a[m];a[m] = a[i];a[i] = x;} } 4-2查找
順序查找:數(shù)字序列放到數(shù)組中,不要求數(shù)組元素本身有序,查找x是否在數(shù)列中: ……
for(i=0;i<=9;i++)if(x==a[i])printf(“zhaodaole %d ,%d”,x,i+1);
折半查找:1.要求數(shù)列必須有序的;2.比較數(shù)列中間元素;3.縮小范圍,重復(fù)2…… 4-3數(shù)列前n項(xiàng)
若已知 f1=1,f2=2,f3=3, fn=fn-1+3fn-2+fn-3 n>=4,用數(shù)組的方法求數(shù)列前n項(xiàng)(n由鍵盤輸入)及前n項(xiàng)和。
#include
//輸出所有列下標(biāo)大于行下標(biāo)的數(shù)組元素 for(i = 0;i <= 2;i++)for(j = 0;j <= 2;j++)if(j > i){ printf(“n行標(biāo): %d,列標(biāo): %d,元素: %d”, i, j, a[i][j]);} //數(shù)組f里元素均初始化為0 for(i = 0;i <= 2;i++)f[i] = 0;//求每列元素的和,并將其放入數(shù)組f中 for(i = 0;i <= 2;i++){ for(j = 0;j <= 2;j++)f[i] = f[i] + a[j][i];printf(“列下標(biāo)為 %d的元素和為: %3d”, i, f[i]);}
//求所有能被2,3,5整除的數(shù)組元素的平方和 for(i = 0;i <= 2;i++)for(j = 0;j <= 2;j++){ if(a[i][j] %(2 *3 * 5)== 0)s1 = s1 + a[i][j] *a[i][j];} printf(“能被2,3,5整除的數(shù)組元素的平方和:%5dn”, s1);
//將二維數(shù)組賦值給一維數(shù)組,并輸出 n = 0;for(i = 0;i <= 2;i++)for(j = 0;j <= 2;j++){ b[n] = a[i][j];printf(“%5d”, b[n]);n++;} } 4-8 字符串應(yīng)用舉例
#include