1.冒泡排序
int arr[5]= {11,45,2,66,34};
參加數據個數 比較次數
5 4 ------arr[4]
第一次比較
arr[0] arr[1]----->arr[1]
arr[1] arr[2]----->arr[2]
arr[2] arr[3]----->arr[3]
arr[3] arr[4]----->arr[4]
第二次比較
4 3-------arr[3]
arr[0] arr[1]----->arr[1]
arr[1] arr[2]----->arr[2]
arr[2] arr[3]----->arr[3]
第三次比較
3 2------arr[2]
arr[0] arr[1]----->arr[1]
arr[1] arr[2]----->arr[2]
第四次比較
2 1------arr[1]
arr[0] arr[1]----->arr[1]
例如:
#include<stdio.h>
int main()
{
int arr[5]= {11,45,2,66,34};
int i = 0;
int j = 0;
printf("排序前:\n");
for(i=0; i<5; i++)
printf("%4d",arr[i]);
printf("\n");
for(i=0; i<4; i++)//控制比較的輪數
{
for(j=0; j<4-i; j++)//控制藏與比較的元素個數
{
if(arr[j]>arr[j+1])
{
//數據交換
int temp =arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
//輸出
printf("排序后:\n");
for(i=0; i<5; i++)
printf("%4d",arr[i]);
printf("\n");
return 0;
}
//獲取0~100之間的隨機數
//srand(time(0));
sranf(time(NULL))//此語句不能放在循環中,否則產生的隨機數相同
int num =rand()%100
3.字符串
(1)字符串常量
字符串是有雙引號闊起來的字符序列集合
"a" "hhh" "097fslkj" "3$@fs"
字符串的結束標志:\0
(2)C中沒有字符所對應的數據類型,通常使用數組字符保存
字符串:
char arr[32] = {"hello,uuhhio"};
char arr[32] = "fdsjhkgadsaghgkjhdj"
char af[32]={'a','a','r','d'};
char bf[32]='"dfsf"
注意:字符數組保存字符和保存字符串的區別:
字符串有'\0'
(3)字符串的輸入和輸出
scanf()/printf--------->占位符:%s
//scanf()不能接收字符串的中的空格
//但是能接收單個字符中的空格
//getchar();吸收多余的回車符。
(4)gets()/buts
gets():從鍵盤輸入
可以接收空格;
此函數有bug,不建議使用,
puts():輸出字符串
自動換行,無需換行符,
(5)fgets()/fputs()
fgets(arr,32,stdin):獲得收據
arr:數組名,即一個地址
sizeof(arr):讀取數據的大小,也可以直接用數字代替
stdin:標準輸入
fputs():輸出數據
arr:要輸出的字符串
stdout:標準輸出
注:此處無bug,可以放心食用!!!!
(6)指針和字符串
(7)字符串相關函數
頭文件:#include<string.h>
strlen():計算字符串長度
\0不計入字符串長度
注意區分和seziof的區別
strcpy():字符串拷白
strcpy(buf,arr)將arr的內容拷白到buf中
strcmp():字符串的比較(hao7.c)
int ret = strcmp(arr,buf):
若ret=0;則兩字符串相等
若ret>0;則arr大于buf
若ret<0; 則arr小于buf
strcat():字符串的拼接
strcat(arr,buf);
將buf的內容拼接到arr中,一定要保證
arr的空間大!!!否則會出現數組越界問題