| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 198 人关注过本帖
标题:循环与选择
只看楼主 加入收藏
qazxsw321
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2019-10-25
结帖率:33.33%
  已结贴   问题点数:3  回复次数:3   
循环与选择


题目描述
公元13世纪上半叶,蒙古军队一路西征杀向欧洲。在进军途中,蒙古骑兵以旗为单位沿一条道路相继开进。为了给后面的队伍指路,每当遇到一个道路分叉处时,就在路旁堆石头堆作路标,堆一堆石头表示直行,堆两堆石头表示右转,堆三堆石头表示左转。试用C语言编写一个程序,计算出通过的路口数目。假设每个相邻路口间路段的长度基本相等且开始的方向向西(以此判断第一个路口,即出发时向哪个方向走),用输出eswn四个字母或其组合来确定最终的地点相对于出发地(即第一个路口)的方位。
输入格式
只有一行(以’\n’结束),分别用1、2和3表示路口遇到的石碓的数量,最多有20个路口。
输出格式
只有一行,由一个数字和一个字母或两个字母组合分别构成路口的数目和最终地点与出发地的方位。如果需要输出两个字母,则输出字母按照字典序输出(不用考虑回到原始出发点的情况)。



输入样例
31


输出样例
2,s
#include<stdio.h>
#include<string.h>
int main()
{
    char a[20],m,n;
    char d='1';
    char b[4];
    int i,k=0;
    int x=0;
    int y=0;
   

    for(i=0;i<20;i++)   
    {   
        scanf("%c",&a[i]);   
        if(a[i]=='\n')break;   
        else k++;
    }

    for(i=0;i<k;i++)
    {
        if(d=='1')   
        {
            if(a[i]=='1')
            {
                x-=1;
                continue;   
            }
            if(a[i]=='2')
            {
                y+=1;
                d='2';
                continue;
            }
            if(a[i]=='3')
            {
                y-=1;
                d='3';
                continue;
            }   
        }
        if(d=='2')
        {
            if(a[i]=='1')
            {
                y+=1;
                continue;
            }  
            if(a[i]=='2')
            {
                x+=1;
                d='4';
                continue;
            }     
            if(a[i]=='3')
            {
                x-=1;
                d='1';
                continue;
            }
        }
        if(d=='3')
        {
            if(a[i]=='1')
            {
                y-=1;
                continue;
            }
            if(a[i]=='2')
            {
                x=x-1;
                d='1';
                continue;
            }
            if(a[i]=='3')
            {
                x+=1;
                d='4';
                continue;
            }
        }
        if(d=='4')
        {
            if(a[i]=='1')
            {
                y+=1;
                continue;
            }
            if(a[i]=='2')
            {
                y-=1;
                d='3';
                continue;
            }
            if(a[i]=='3')
            {
                y+=1;
                d='2';
                continue;
            }
        }
    }
  
    if(x==0)
    {
        if(y>0)
        printf("%d,n\n",k);
        else if(y<0)
        printf("%d,s\n",k);
    }
    if(y==0)
    {
        if(x>0)
        printf("%d,e\n",k);
        else if(x<0)
        printf("%d,w\n",k);
    }
    if(x>0)
    {
        if(y>0)
        printf("%d,en\n",k);
        else if(y<0)
        printf("%d,es\n",k);
    }
    if(x<0)
    {
        if(y>0)
        printf("%d,nw\n",k);
        else if(y<0)
        printf("%d,sw\n",k);
    }
    return 0;
}
谁来帮忙看一下哪里错了,谢谢;
搜索更多相关主题的帖子: int 字母 continue 输出 printf 
2019-11-29 00:12
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:334
帖 子:6929
专家分:40287
注 册:2011-1-18
  得分:3 
谁来帮忙看一下哪里错了
什么哪里错了?让别人瞎猜你想问什么吗?

是 编译错误,那就贴出编译器给的错误信息;
是 运行结果不符合你的预期,那就贴出你的输入信息,你期待的输出信息;
如果是 OJ,且OJ肯给出错误的测试用例,你应该将其贴出来;
如果是 OJ,只知道错误,不肯给错误的测试用例,那你也要讲出来是这种情况,别人才知道要去干什么。

另外,你的输入样例不全吧
输入样例:
31
输出样例:
2,s

输入样例:
131
输出样例:
3,sw

2019-11-29 09:00
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:334
帖 子:6929
专家分:40287
注 册:2011-1-18
  得分:0 
随手瞎写,未测试,仅供参考
程序代码:
#include <stdio.h>

int main( void )
{
    char s[21];
    scanf( "%s", s );

    unsigned count=0, direction=2;
    int xy[2] = { 0, 0 };
    for( const char* p=s; *p; ++p,++count )
    {
        direction = (direction + (*p-'0')%3 +3)%4;
        xy[direction%2] += 1-(direction+1)/2%2*2;
    }
    printf( "%u,", count );

    const char* result[3][3] = { {"sw","w","nw"},{"s","?","n"},{"es","e","en"} };
    puts( result[1+(xy[0]>0)-(xy[0]<0)][1+(xy[1]>0)-(xy[1]<0)] );   

}

2019-11-29 10:29
qazxsw321
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2019-10-25
  得分:0 
回复 2楼 rjsp
对不起,没说清楚,自己输入的时候,答案是对的,试了好几次,但是提交后显示答案错误
2019-11-29 18:43
快速回复:循环与选择
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.099318 second(s), 8 queries.
Copyright©2004-2019, BCCN.NET, All Rights Reserved