回覆列表
  • 1 # 使用者710995342817

    main() { charst[20],cs[5][20]; inti,j,p; printf("inputname:\n"); for(i=0;i<5;i++) gets(cs[i]); printf("\n"); for(i=0;i<5;i++) {p=i;strcpy(st,cs[i]); for(j=i+1;j<5;j++) if(strcmp(cs[j],st)<0){p=j;strcpy(st,cs[j]);} if(p!=i) { strcpy(st,cs[i]); strcpy(cs[i],cs[p]); strcpy(cs[p],st); } puts(cs[i]);}printf("\n"); } 本程式的第一個for語句中,用gets函式輸入五個名字串。上面說過C語言允許把一個二維陣列按多個一維陣列處理,本程式說明cs[5][20]為二維字元陣列,可分為五個一維陣列cs[0],cs[1],cs[2],cs[3],cs[4]。因此在gets函式中使用cs[i]是合法的。在第二個for語句中又嵌套了一個for語句組成雙重迴圈。這個雙重迴圈完成按字母順序排序的工作。在外層迴圈中把字元陣列cs[i]中的姓名字串複製到陣列st中,並把下標i賦予P。進入內層迴圈後,把st與cs[i]以後的各字串作比較,若有比st小者則把該字串複製到st中,並把其下標賦予p。內迴圈完成後如p不等於i說明有比cs[i]更小的字串出現,因此交換cs[i]和st的內容。至此已確定了陣列cs的第i號元素的排序值。然後輸出該字串。在外迴圈全部完成之後即完成全部排序和輸出。

  • 中秋節和大豐收的關聯?
  • 面試時候問優缺點的HR是什麼心理?想要得到什麼答案?