模擬--罰站--平均數

1011: 最終得分

        現在的大學生程序設計競賽的評分標準只有一個——是否正確。爲了吸引更多的學生參賽,組委會決定修改評分標準,從6個方面進行評分:正確,強壯,全面,清晰,編程風格和可維護。針對這6個得分,去掉一個最高分,去掉一個最低分,再取平均分作爲最終得分。有多組測試數據,每組測試數據由一行組成,用空格隔開6個整數(0<=grade<=10),表示6項得分。最後一行是6個0,表示結束,每組測試數據輸出一行,輸出最終得分(沒有多餘0或小數)。代碼:
#include<stdio.h>
int a[6];
  main()
{
    int b,s,i,j,m,k;
    float n;
    while(1)
    {
 
 
    for(b=0; b<=5; b++)
    {
        scanf("%d",&a[b]);
    }
 
if(a[1]!=0||a[2]!=0||a[3]!=0||a[4]!=0||a[5]!=0||a[0]!=0)
{
 
 
        for(i=0; i<5; i++)
        {
            for(j=i+1; j<=5; j++)
            {
                if(a[i]<a[j])
                {
                    s=a[i];
                    a[i]=a[j];
                    a[j]=s;
 
                }
            }
 
 
        }
        k=0;
        for(m=1; m<=4; m++)
        {
            k+=a[m];
        }n=k/4.0;
        printf("%g\n",n);
       }
else
    break;
       }}
 
 解題思路:排序,去掉最大值,最小值,求平均;
重點:1,如果要求是不需要多餘0;不規定保留多少位小數,則定義float。然後%g輸出
2,若是多組數據輸入,可以用while(1){}結構;對數據有判斷在裏面定義;

罰站!
上體育課了,同學們參差不齊的站好了,體育老師一看傻眼了,學生這麼多,卻沒有按高矮順序站好,於是,老師決定了一個懲罰措施,在一共N個學生的隊列中,從第一個學生開始按順序選擇K個同學中身高最高的同學罰站(例如,第一次選擇從第1個到第K個同學中的最高個罰站,第二次選擇從第2個到第K+1個同學中的最高個罰站,……依次類推)。這位體育老師想請你編寫一個程序,求出每次懲罰的學生的身高。
輸入均爲整數。
第一行N,K。學生人數N∈[1,100000],K∈[1,100];
第二行是N個整數,代表N個同學各自的身高。
共一行,回車結尾。按要求輸出懲罰同學的身高。
#include<stdio.h>
int f[100000];
 main()
{int a,b,c,s,i,t,j,max;
    {
scanf("%d%d",&a,&b);
for(c=0;c<=a-1;c++)
{
 scanf("%d",&f[c]);
}
t=a-b;
max=0;
for(i=0;i<=t-1;i++)
{max=f[i];
    for(j=i+1;j<=i+b-1;j++)
    {
        if(max<f[j])
        {
            max=f[j];
        }
    }
    printf("%d ",max);
}
 
for(j=t;j<=i+b-1;j++)
    {if(max<f[j])
    {
        max=f[j];
    }
 
    }printf("%d\n",max);}}
解題思路:最主要就是利用兩個for循環;求最大值
重點:習慣去用這種方式來求最大值;
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章