默享-唯静美 2019-07-21 15:32 采纳率: 33.3%
浏览 213
已采纳

一个C语言编程,希望大家帮我看看我的代码哪里有问题?

给出一个由O和X组成的串,长度为1~80,统计得分,每个O的得分为目前连续出现的O的个数,X的得分为0,例如OOXXO的得分为1+2+0+0+1.

我的代码如下,不知道哪里有问题

#include<stdlib.h>
#include<string.h>
char s[85];
int main()
{
    int score = 0;
    scanf_s("%s", s, 85);
    for (int i = 0;s[i];i++)
    {
        if (s[i] == 'X')score += 0;
        if (s[i] == 'O')
        {
            int temp = 1;
            if (i == 0)score += 0;
            else
            {
                while (i > 0)
                {
                    if (s[i - 1] == 'O')temp++;
                    else break;
                    i--;
                }
                score += temp;
            }
        }
    }
    printf("%d\n", score);
    system("pause");
    return 0;
}











  • 写回答

2条回答 默认 最新

  • HLihan 2019-07-21 16:32
    关注

    //有一些小问题,改了一下
    #include"stdlib.h"
    #include"string.h"
    #include"stdio.h"
    int main()
    {
    char s[85];
    int score = 0,x;
    scanf("%s",&s);
    for (int i = 0;s[i];i++)
    {

        if (s[i] == 'X')
        score += 0;
        if (s[i] == 'O')
        {
            int temp = 1;
            if (i == 0)score += 1;//这里要改为score+=1;否则当O处于第一个的时候会出统计错误问题
            else
            {
                x=i;//主要问题在于循环查找O的时候外部‘i'与内部i发生冲突
                while (x > 0)
                {
                    if (s[x - 1] == 'O')temp++;
                    else break; 
                    x--;
                }
                score += temp;
            }
        }
    }
    printf("%d\n", score);
        system("pause");
    return 0;
    

    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分