公交换号

来源:互联网 发布:舆情监测软件下载 编辑:程序博客网 时间:2024/04/29 19:17

 本市8字头公交车路号本月将完成更换,所有8字头线路路号全部空出,为下一步规范9字头公交线路路号做出准备。 以下为公交车换号对应关系:

801  601
802  99
808  608
810  609
814  614
823  623
826  626
836  617
846  619
849  620
852  621

Input

 多组测试数据,以EOF结束。每一组测试数据,输入一个整数n(n<100),接下来有n个公交车号。

Output

 对于每一组测试数据。输出换号后的公交车号,两个车号之间以恰好一个空格隔开。

Sample Input

5 110 498 826 731 331

Sample Output

110 498 626 731 331

解题思路:

        注意最后一个数据的输出后没有空格,本题还是非常简单的,但是一开始老是处理不好最后一个数据,PE了好几次。



代码如下:AC代码

#include<stdio.h>int main(){    int i,n,num,sum;    while(scanf("%d",&n)!=EOF)    {        sum=0;        for(i=0;i<n;i++)        {            scanf("%d",&num);            switch(num)            {                case 801:{printf("601");sum++;break;}                case 802:{printf("99");sum++;break;}                case 808:{printf("608");sum++;break;}                case 810:{printf("609");sum++;break;}                case 814:{printf("614");sum++;break;}                case 823:{printf("623");sum++;break;}                case 826:{printf("626");sum++;break;}                case 836:{printf("617");sum++;break;}                case 846:{printf("619");sum++;break;}                case 849:{printf("620");sum++;break;}                case 852:{printf("621");sum++;break;}                default :{printf("%d",num);sum++;}            }            if(sum==n)                printf("\n");            else                printf(" ");        }    }    return 0;}


代码如下:AC代码

#include<stdio.h>int main(){    int i,j,n,num,sum=0,low,high,mid;    int a[11]={801,802,808,810,814,823,826,836,846,849,852};    int b[11]={601,99,608,609,614,623,626,617,619,620,621};    while(scanf("%d",&n)!=EOF)    {        for(j=0,sum=0;j<n;j++)        {            scanf("%d",&num);            if(num<801||num>852)            {                if(sum==n-1)                {                    printf("%d\n",num);                }                else                {                    printf("%d ",num);                    sum++;                }            }            else            {                low=0;high=10;                mid=(low+high)/2;                while(low<=high)                {                    if(a[mid]>num)                    {                        high=mid-1;                        mid=(low+high)/2;                    }                    else if(a[mid]<num)                    {                        low=mid+1;                        mid=(low+high)/2;                    }                    else                    {                        if(sum==n-1)                        {                            printf("%d\n",b[mid]);                        }                        else                        {                            printf("%d ",b[mid]);                            sum++;                        }                        break;                    }                }                if(low>high)                {                    if(sum==n-1)                    {                        printf("%d\n",num);                    }                    else                    {                        printf("%d ",num);                        sum++;                    }                }            }        }    }    return 0;}


0 0
原创粉丝点击