#6819: 多一個數字


alexyoung (風行雲翔)

學校 : 國立交通大學
編號 : 26395
來源 : [140.113.229.216]
最後登入時間 :
2015-01-08 00:37:19
a104. 排序 -- yoooooooo | From: [1.162.211.238] | 發表日期 : 2012-07-21 18:57

#include <stdio.h>

int main()
{
    int n,i,j,temp,flag;

    while(scanf("%d",&n)!=EOF)
    {
        int a[n];
        
        for(i=0;i<n;i++)
        scanf("%d",&a[i]);
        
        for(i=1;i<=n;i++)
        {
            flag=0;
            for(j=0;j<=n-i;j++)
            if(a[j]>a[j+1])
            {
                temp=a[j+1];
                a[j+1]=a[j];
                a[j]=temp;
                flag=1;
            }
            if(flag==0)
            break;
        }
        for(i=0;i<n;i++)
        printf("%d ",a[i]);
        printf("\n");
    }
    
    
    return 0;
}

 

您的答案為: 6939507 7684930 8936987 11614769 35005211 42999170 76065818 84353895 87755422 105575579 111537764 112805732 116087764 134514272 135497281 137806862 149798315 150122846 155324914 155789224 159259470 160051528 165344818 168002245 184803526 188213258 195740084 200747796 201305624 213975407 221558440 231602422 233665123 238962600 243268139 246247255 260152959 260401255 269441500 269455306 270744729 278722862 289700723 292218004 294702567 296864819 298625210 304089172 317097467 324763920 327254586 336465782 337739299 338888228 349517445 350322227 352118606 352406219 356426808 364228444 378409503 382697713 387346491 387451659 392035568 396473730 402724286 404158660 407487131 412776091 424238335 434248626 437116466 438792350 439493451 446340713 452867621 463480570 468703135 476667372 480298490 485560280 491705403 492067917 496987743 498777856 502278611 511702305 515530019 521595368 524688209 524872353 532670688 552473416 555996658 559412924 570073850 572660336 588219756 593209441 596516649 6...訊息太長省略。 正確答案為: 6939507 7684930 8936987 11614769 35005211 42999170 76065818 84353895 87755422 105575579 111537764 112805732 116087764 135497281 137806862 149798315 150122846 155324914 155789224 159259470 160051528 165344818 168002245 184803526 188213258 195740084 200747796 201305624 213975407 221558440 231602422 233665123 238962600 243268139 246247255 260152959 260401255 269441500 269455306 270744729 278722862 289700723 292218004 294702567 296864819 298625210 304089172 317097467 324763920 327254586 336465782 337739299 338888228 349517445 350322227 352118606 352406219 356426808 364228444 378409503 382697713 387346491 387451659 392035568 396473730 402724286 404158660 407487131 412776091 424238335 434248626 437116466 438792350 439493451 446340713 452867621 463480570 468703135 476667372 480298490 485560280 491705403 492067917 496987743 498777856 502278611 511702305 515530019 521595368 524688209 524872353 532670688 552473416 555996658 559412924 570073850 572660336 588219756 593209441 596516649 601385644 6...訊息太長省略。


為什麼我的答案多一個數字??可以請大家幫我看看哪出問題嗎??
為甚麼 
 
#6821: Re:多一個數字


passerr (20130326 0340 48)

學校 : 不指定學校
編號 : 8516
來源 : [125.224.93.117]
最後登入時間 :
2024-09-05 12:09:52
a104. 排序 -- yoooooooo | From: [125.224.249.231] | 發表日期 : 2012-07-21 23:00

#include

int main()
{
    int n,i,j,temp,flag;

    while(scanf("%d",&n)!=EOF)
    {
        int a[n];
        
        for(i=0;i
        scanf("%d",&a[i]);
        
        for(i=1;i<=n;i++)
        {
            flag=0;
            for(j=0;j<=n-i;j++)
            if(a[j]>a[j+1])
            {
                temp=a[j+1];
                a[j+1]=a[j];
                a[j]=temp;
                flag=1;
            }
            if(flag==0)
            break;
        }
        for(i=0;i
        printf("%d ",a[i]);
        printf("\n");
    }
    
    
    return 0;
}
為什麼我的答案多一個數字??可以請大家幫我看看哪出問題嗎??
為甚麼 
 
 
 
 
 
 我想,問題出在a[j+1]吧?

一開始當n=6(所以陣列最大index是5),i=1
進入第二層for,j<=n-i (j<=6-1=5)
也就是j有機會等於5

然後執行a[j+1] (a[5+1=6],a[6]<--就出問題了)
 
ZeroJudge Forum