xyyyo 2023-03-04 23:04 采纳率: 45.5%
浏览 22
已结题

c语言简单问题,请大家解答

img


#include <stdio.h>

int main()
{
    char a[60];
    char b[60];
    char c[60];
    char d[60];

    scanf_s("%s", a, 60);
    scanf_s("%s", b, 60);
    scanf_s("%s", c, 60);
    scanf_s("%s", d, 60);
    
    int i,j,k;
    for (i = 0; i < 60; i++)
    {
        if (a[i] == b[i])
        {
            switch (a[i] - 'A')
            {
            case 0:
                printf("MON");
                break;
            case 1:
                printf("TUE");
                break;
            case 2:
                printf("WED");
                break;
            case 3:
                printf("THU");
                break;
            case 4:
                printf("FRI");
                break;
            case 5:
                printf("SAT");
                break;
            case 6:
                printf("SUN");
                break;
                
                
            }
            
        }
        for (j = i; j <= 60; j++)
        {
            
                if (a[j] >= 'A' && a[j] <= 'N')
                {
                    int n = a[j] - 'A'+10;
                    printf("%d:", n);
                }
            
        }
    }
    for (k = 0; k < 60; k++)
    {
        if (c[k] == d[k])
        {
            printf("0%d", k);
        }
    }
        return 0;
}

我想问的是在判断前两个字符串的字符是否相等时,当判断出第一个后,显示周几,那如何判断第二个以显示是几点呢?
我的代码写的很离谱 希望大家帮我指出问题,提出建议

  • 写回答

2条回答 默认 最新

  • 「已注销」 2023-03-04 23:35
    关注

    “Devil组”引证GPT后的撰写:
    在判断前两个字符串的字符是否相等时,可以先找到第一个相同的大写字母,根据其代表的数字判断是周几,然后再找到第二个相同的大写字母,根据其代表的数字判断是几点。

    具体实现可以参考下面的代码:

    #include <stdio.h>
    
    int main()
    {
        char a[61], b[61], c[61], d[61];
        scanf("%s%s%s%s", a, b, c, d);
    
        int i;
        for (i = 0; a[i] && b[i]; i++)
        {
            if (a[i] == b[i] && a[i] >= 'A' && a[i] <= 'G')
            {
                // 找到第一个相同的大写字母,并判断是周几
                printf("%s ", (char []){"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"}[a[i] - 'A']);
    
                // 继续往后找第二个相同的大写字母
                for (i++; a[i] && b[i]; i++)
                {
                    if (a[i] == b[i])
                    {
                        if (a[i] >= '0' && a[i] <= '9')  // 如果是数字
                        {
                            printf("%02d:", a[i] - '0');  // 补齐两位
                            break;
                        }
                        else if (a[i] >= 'A' && a[i] <= 'N')  // 如果是大写字母A~N
                        {
                            printf("%02d:", a[i] - 'A' + 10);
                            break;
                        }
                    }
                }
                break;  // 找到了就跳出循环
            }
        }
    
        for (i = 0; c[i] && d[i]; i++)
        {
            if (c[i] == d[i] && ((c[i] >= 'a' && c[i] <= 'z') || (c[i] >= 'A' && c[i] <= 'Z')))
            {
                printf("%02d", i);  // 输出分钟
                break;
            }
        }
    
        return 0;
    }
    
    
    

    这里采用了两个循环来分别找到两个相同的大写字母。第一个循环找到第一个相同的大写字母后,继续往后找第二个相同的大写字母,直到找到数字或者大写字母A~N为止。第二个循环用来找到第一个相同的小写字母或者大写字母,输出分钟。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月17日
  • 创建了问题 3月4日

悬赏问题

  • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧,别用大模型回答,大模型的答案没啥用
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error