#27290: 自己有發現某些測資有問題 但仍然不知如何修改(NA:80%)


matt16899@gmail.com (張育安)

學校 : 不指定學校
編號 : 149196
來源 : [140.113.89.176]
最後登入時間 :
2024-04-07 21:41:12
b964. 1. 成績指標 -- 2016年3月apcs | From: [140.113.91.67] | 發表日期 : 2021-09-22 18:05

#include <stdio.h>

 

void sort(int n,int array[])

{

    int i,j,temp;

 

    for(i=n-2;i>=0;i--){

        for(j=0;j<=i;j++){

            if(array[j]>array[j+1]){

                temp=array[j];

                array[j]=array[j+1];

                array[j+1]=temp;

            }

        }

    }

}

 

int main()

{

    int n,i,array[21];

    while(scanf("%d",&n)!=EOF){

        for(i=0;i<n;i++)

        scanf("%d",&array[i]);

 

        sort(n,array);

 

        for(i=0;i<n;i++)

            printf("%d ",array[i]);

        printf("\n");

 

        //check1

        if(array[0]>=60)

            printf("best case\n");

        else{

            i=0;

            while(array[i]<60 && array[i+1]<60){

                if(i!=n-1) i++;

            }

            printf("%d\n",array[i]);

        }

 

 

        //check2

        if(array[n-1]<60)

            printf("worst case\n");

        else{

            i=n-1;

            while(array[i]>=60&& array[i-1]>=60){

                    i--;

            }

            printf("%d\n",array[i]);

        }

        scanf("%d",&n);

    }

 

 

}

 

 
#27292: Re:自己有發現某些測資有問題 但仍然不知如何修改(NA:80%)


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.9.74.255]
最後登入時間 :
2024-10-14 22:20:08
b964. 1. 成績指標 -- 2016年3月apcs | From: [27.52.228.184] | 發表日期 : 2021-09-22 18:47

#include

 

void sort(int n,int array[])

{

    int i,j,temp;

 

    for(i=n-2;i>=0;i--){

        for(j=0;j<=i;j++){

            if(array[j]>array[j+1]){

                temp=array[j];

                array[j]=array[j+1];

                array[j+1]=temp;

            }

        }

    }

}

 

int main()

{

    int n,i,array[21];

    while(scanf("%d",&n)!=EOF){

        for(i=0;i<n;i++)

        scanf("%d",&array[i]);

 

        sort(n,array);

 

        for(i=0;i<n;i++)

            printf("%d ",array[i]);

        printf("\n");

 

        //check1

        if(array[0]>=60)

            printf("best case\n");

        else{

            i=0;

            while(array[i]

                if(i!=n-1) i++;

            }

            printf("%d\n",array[i]);

        }

 

 

        //check2

        if(array[n-1]<60)

            printf("worst case\n");

        else{

            i=n-1;

            while(array[i]>=60&& array[i-1]>=60){

                    i--;

            }

            printf("%d\n",array[i]);

        }

        scanf("%d",&n);

    }

 

 

}

 

你有沒有發現範例輸入 #2你的程式會無限迴圈?

 
#27293: Re:自己有發現某些測資有問題 但仍然不知如何修改(NA:80%)


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.9.74.255]
最後登入時間 :
2024-10-14 22:20:08
b964. 1. 成績指標 -- 2016年3月apcs | From: [27.52.228.184] | 發表日期 : 2021-09-22 19:00


            while(array[i]<60 && array[i+1]<60){

                if(i!=n-1) i++;


 


這裡如果n=1會有問題,下面的

while(array[i]>=60&& array[i-1]>=60){

也是一樣。

你可以用一個for迴圈,從最低開始檢查,直到第一個及格成績後往回一個就是最高不及格成績

 
ZeroJudge Forum