7.26 數組 選擇排序 putchar gets

來源:互聯網
上載者:User

標籤: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
選擇排序:
  1. void select_sort(int a[], int n)
  2. {
  3. int i, j, min, temp;
  4. for (i = 0; i < n; i++)
  5. {
  6. min = i;      //min表示的意思是最小值的下標
  7. for (j = i + 1; j < n; j++)
  8. {
  9. if (a[min] > a[j]) //每次都把最小的那個值 和 第一位的值 替換順序
  10. {
  11. min = j;
  12. }
  13. temp = a[i];
  14. a[i] = a[min];
  15. a[min] = temp;
  16. }
  17. }
  18. }

維基百科的選擇排序
  1. void selection_sort(int *a, int len)
  2. {
  3. int i, j, min, t;
  4. for (i = 0; i < len - 1; i++)
  5. {
  6. min = i;
  7. //尋找最小值
  8. for (j = i + 1; j < len; j++)
  9.     if (a[min] > a[j])
  10. min = j;
  11. //交換
  12. if (min != i)
  13. {
  14. t = a[min];
  15. a[min] = a[i];
  16. a[i] = t;
  17. }
  18. }
  19. }
}


冒泡排序:
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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.