-
冒泡排序。
以升序排序為例冒泡排序的思想:相鄰元素兩兩比較,將較大的數字放在后面,直到將所有數字全部排序。就像小學排隊時按大小個排一樣,將一個同學拉出來和后面的比比,如果高就放后面,一直把隊伍排好。
班級成績中,老師把前十名的挑出來了,用冒泡排序把分數排了一下
運行結果為
查看全部 -
數組可以由整個數組當作函數的參數,也可以由數組中的某個元素當作函數的參數:
1、整個數組當作函數參數,即把數組名稱傳入函數中,例如:
2、數組中的元素當作函數參數,即把數組中的參數傳入函數中,例如:
數組作為函數參數時注意以下事項:
1、數組名作為函數實參傳遞時,函數定義處作為接收參數的數組類型形參既可以指定長度也可以不指定長度。
2、數組元素作為函數實參傳遞時,數組元素類型必須與形參數據類型一致。
查看全部 -
注意:只有局部自動變量和形式參數可以作為寄存器變量;一個計算機系統(tǒng)中的寄存器數目有限,不能定義任意多個寄存器變量;局部靜態(tài)變量不能定義為寄存器變量。
查看全部 -
遞歸函數必須有結束條件。
遞歸函數特點:
- 每一級函數調用時都有自己的變量,但是函數代碼并不會得到復制,如計算5的階乘時每遞推一次變量都不同;
- 每次調用都會有一次返回,如計算5的階乘時每遞推一次都返回進行下一次;
- 遞歸函數中,位于遞歸調用前的語句和各級被調用函數具有相同的執(zhí)行順序;
- 遞歸函數中,位于遞歸調用后的語句的執(zhí)行順序和各個被調用函數的順序相反;
- 遞歸函數中必須有終止語句。
一句話總結遞歸:自我調用且有完成狀態(tài)。
查看全部 -
遞歸就是一個函數在它的函數體內調用它自身。
計算n的階乘可以使用以下代碼:
查看全部 -
flag*=-1;表示每運算一次就會改變符號。
查看全部 -
函數的返回值要注意以下幾點:
1. 函數的值只能通過return語句返回主調函數。return語句的一般形式為:
????return 表達式?? 或者為:? return (表達式);
2. 函數值的類型和函數定義中函數的類型應保持一致。如果兩者不一致,則以函數返回類型為準,自動進行類型轉換。
就如小剛說選A,那么就返回一個字符型數據,用代碼表示就是:
小剛說值為100,那么就返回一個整型數據,用代碼表示就是:
3. 沒有返回值的函數,返回類型為void。如果小剛算了一會沒有返回結果的話,那么用代碼表示就是:
注意:void函數中可以有執(zhí)行代碼塊,但是不能有返回值,另void函數中如果有return語句,該語句只能起到結束函數運行的功能。其格式為:return;
查看全部 -
#include <stdio.h>
int getGirth(int a,int b,int c)
{
? ? if( (a+b)<=c || (a+c)<=b || (b+c)<=a )? ?//判斷是否為三角形
? ? {
? ? ? ? printf("不構成三角形\n");
? ? ? ? return 0;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? }
? ? else
? ? {
? ? ? int cirf = a+b+c;? ? ?//計算三角形周長
? ? ? return cirf;
? ? }
? ? ? ?
}
int main()
{
? ? /* 定義三角形三邊長 */
? ? int a, b, c;
? ? a = 3;
? ? b = 4;
? ? c = 5;
? ? printf("三角形的周長是:%d\n", getGirth(a,b,c));? //調用周長函數
? ? return 0;
}
查看全部 -
自定義函數盡量放在main函數之前,如果要放在main函數后面的話,需要在main函數之前先聲明自定義函數,聲明格式為:[數據類型說明] 函數名稱([參數]);
查看全部 -
C語言中的三目運算符:“?:”,其格式為:
?表達式1 ? 表達式2 : 表達式3;?
執(zhí)行過程是:
先判斷表達式1的值是否為真,如果是真的話執(zhí)行表達式2;如果是假的話執(zhí)行表達式3。
查看全部 -
#include <stdio.h>
int main()?
{?
? ? // 定義相乘數字i,j以及結果result
? ? int i, j, result;
? ? int k;
? ? /*
? ? ?* 使用for循環(huán)解決本題相對簡單哦~
? ? ?* 小編偷偷的將源碼放在任務“不會了怎么辦”中了哦~
? ? ?* 小編希望童鞋們獨立完成哦~
? ? ?*/
? ? ?for(k=1;k<=9;k++)
? ? ?{
? ? ? ? i=10-k;
? ? ? ? for(j=1;j<=i;j++)
? ? ? ? {
? ? ? ? ? ? result=i*j;
? ? ? ? ? ? printf("%d*%d=%d",i,j,result);
? ? ? ? }
? ? ? ? printf("/n");
? ? ?}
? ? ?
? ? return 0;
}
查看全部 -
#include <stdio.h>
int main()
{
? ? int i, j, k;
? ? for(i=1; i<5; i++)
? ? {
? ? ? ? /* 觀察每行的空格數量,補全循環(huán)條件 */
? ? ? ? for(j=0 ; j<=3-i? ;? j++? )??
? ? ? ? {
? ? ? ? ? ? printf(" ");? ? //輸出空格
? ? ? ? }
? ? ? ? /* 觀察每行*號的數量,補全循環(huán)條件 */
? ? ? ? for( k=1 ; k<=2*i-1 ;? k++? ? )?
? ? ? ? {
? ? ? ? ? ? printf("*");? ?//每行輸出的*號
? ? ? ? }
? ? ? ? printf("\n");? ? ?//每次循環(huán)換行
? ? }
? ? return 0;
}
查看全部 -
#include <stdio.h>
int main()
{
? ? //定義三位數num,個位數sd,十位數td,百位數hd
? ? int num, sd, td, hd;
? ? //循環(huán)所有三位數
? ? for(? ?num=100? ; num<1000? ? ; num++? )
? ? {
? ? ? ? //獲取三位數字num百位上的數字
? ? ? ? hd =num/100? ? ? ?;
? ? ? ? //獲取三位數字num十位上的數字
? ? ? ? td =num/10-hd*10? ? ? ? ;
? ? ? ? //獲取三位數字num個位上的數字
? ? ? ? sd =num-hd*100-td*10? ? ? ?;
? ? ? ? //水仙花數的條件是什么?
? ? ? ? if( num==hd*hd*hd+td*td*td+sd*sd*sd)?
? ? ? ? {
? ? ? ? ? ? printf("水仙花數字:%d\n", num);? ??
? ? ? ? }
? ? }
? ? return 0;? ??
}
查看全部 -
運行成功,輸入失敗
查看全部 -
強制類型轉換
強制類型轉換是通過定義類型轉換運算來實現的。其一般形式為:
?(數據類型) (表達式)?
其作用是把表達式的運算結果強制轉換成類型說明符所表示的類型,例如:
1、數據類型和表達式都必須加括號,如把(int)(x/2+y)寫成(int)x/2+y則成了把x轉換成int型之后再除2再與y相加了。
2、轉換后不會改變原數據的類型及變量值,只在本次運算中臨時性轉換。
3、強制轉換后的運算結果不遵循四舍五入原則
查看全部
舉報