| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2242 人关注过本帖
标题:循环与选择
取消只看楼主 加入收藏
qazxsw321
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2019-10-25
结帖率:25%
收藏
已结贴  问题点数:3 回复次数:1 
循环与选择


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



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

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