標籤:style blog http color io 使用 ar for 2014
數組初始化:定義一個數組,不完全初始化,那麼未初始化的值都為0定義一個數組,不初始化,裡面全都是垃圾值
讓數組全部初始化0 可以 int a[500] = {0};
數組初始化錯誤:int a[5] ;b = {1,2,3,4,5}//這樣嚴重不可以,因為b是一個地址
int b[5]= {1 , , 2};//這樣也不可以,不能中途出現未初始化的
地址+1:int a[10];printf("%p %p %p", &a[0] , a , &a) //這三個值一樣
printf("%p %p %p", &a[0]+1, a +1, &a+1) //不一樣
a+1 代表第一個元素地址+1 相當於加了1個類型長度的位元組 --------> 所以才有了a[1]&a代表整個數組,+1 相當於加了10個類型長度的位元組
可變長數組:c89不支援可變數組,c99支援可變數組c89不支援for(int i=0;i<10;i++) c99支援這樣寫
定義數組的時候,必須要知道數組的長度 int a[] ;//嚴重錯誤
定義數組長度的時候,最好使用宏 #define N 5int a[N];
擷取數組的長度:
int a[] = {2 , 3 , 6 , 7 , 9 , 8 , 1 , 4 ,10 }; int len = sizeof(a)/sizeof(int); // 或者sizeof(a)/sizeof(a[0]);printf("%d\n",len);
數組間的賦值:int a[5] = {1,2,3,4,5};int b[5];b = a;//嚴重錯誤,這是地址間的賦值,兩個數組直接的賦值應該for,
隨機數:srand(1);//產生隨機數種子rand();//根據種子來產生隨機數 在 stdlib.h
選擇排序:
void select_sort(int a[], int n){int i, j, min, temp;for (i = 0; i < n; i++){min = i; //min表示的意思是最小值的下標for (j = i + 1; j < n; j++){if (a[min] > a[j]) //每次都把最小的那個值 和 第一位的值 替換順序{min = j;}temp = a[i];a[i] = a[min];a[min] = temp;}}}
維基百科的選擇排序
void selection_sort(int *a, int len){int i, j, min, t;for (i = 0; i < len - 1; i++){min = i;//尋找最小值 for (j = i + 1; j < len; j++) if (a[min] > a[j])min = j;//交換 if (min != i){t = a[min];a[min] = a[i];a[i] = t;}}}
}
冒泡排序:
int main(){
int a[5] = {9,8,3,5,2}; int i; printf("冒泡排序前:\n"); for (i = 0; i < 5;i++) { printf("%d ", a[i]); }
printf("\n");
int m, n,temp; for (m = 0; m < 5 - 1;m++) {
for (n = 0; n < 5 - 1 - m; n++)
{
if (a[n] > a[n + 1])
{
temp = a[n];
a[n] = a[n + 1];
a[n + 1] = temp;
}
}
}
printf("冒泡排序後:\n"); for (i = 0; i < 5; i++) { printf("%d ", a[i]); } printf("\n"); return 0;
}
putchar :putchar(‘\n‘);//這裡是單引號,如果用雙引號,錯誤 含義是一次打出一個字元printf("\n"); //這裡是雙引號,如果用單引號,錯誤
getchar://getchar 只能接收一個字元
char ch; char tmp; while (1) {
ch = getchar(); tmp = getchar(); //過濾斷行符號 if (ch >= ‘0‘ && ch <= ‘9‘) { printf("你輸入的是一個數字\n"); } else if (ch >= ‘a‘ && ch <= ‘z‘) { printf("你輸入的是一個小寫字母\n"); } else if (ch >= ‘A‘ && ch <= ‘Z‘) { printf("你輸入的是一個大寫字母\n"); } else { printf("你輸入的是其他字元\n"); }
}
gets :gets(a) //a要是個指標 空格也能接收
puts:int main(){ char ch[10]; puts("please input your name:\n"); //注意,這裡會有兩個換行,因為puts會自動在後面增加一個\n gets(ch); puts(ch);}
來自為知筆記(Wiz)
7.26 數組 選擇排序 putchar gets