code.club

 找回密碼
 立即註冊
搜索
查看: 7443|回復: 0
打印 上一主題 下一主題

輸入姓名和分數並列出最高和最低

[複製鏈接]
跳轉到指定樓層
樓主
發表於 2015-3-3 01:16:01 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
輸入學生的名字和分數,然後找出最高分和最低分的姓名及其分數。

教科書上的寫法:
#include <stdio.h>

int main(void){

char name[5][10],*highname,*lowname;
int rate[5],i,high,low;

printf("Enter name and points:\n");
for(i=0;i<5;i++)
scanf("%s %d",name[i],&rate[i]);

low=30000;high=0;

for(i=0;i<5;i++)
{
  if(rate[i]>high)
  {high=rate[i];
  highname=name[i];}
if(rate[i]<low)
{low=rate[i];
lowname=name[i];}
}
printf("High point is %d by %s, and low point is %d by %s.",high,highname,low,lowname);

return 0;
}

我後來自己的寫法,還可以依序排出所有的高低:
#include <stdio.h>

int main(void){

char name[6][5],test[10];
int rate[6],temp;
int i,j;

for(i=0;i<6;i++)
{
  printf("Enter name and rate:\n");
  scanf("%s %d",name[i],&rate[i]);
}

for(i=0;i<6;i++)
  for (j=i+1;j<6;j++) //用 j=i+1 才好,如果直接用 i+1 則可能會往後多出一個元素。
    if(rate[i]>rate[j]) {
      temp=rate[j];
      rate[j]=rate[i];
      rate[i]=temp;
      
     strcpy(test,name[j]);
     strcpy(name[j],name[i]);
     strcpy(name[i],test);
            
}

printf("The high rate is %d by %s, and low rate is %d by %s.\n",rate[5],name[5],rate[0],name[0]);
return 0;
}
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

小黑屋|手機版|Archiver|code.club  

GMT+8, 2024-11-24 15:56 , Processed in 0.089827 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表