鱼C论坛

 找回密码
 立即注册
查看: 1076|回复: 16

[已解决]画矩形 题目OJ判错,DEV c++通过

[复制链接]
发表于 2023-6-24 12:03:59 | 显示全部楼层 |阅读模式
购买主题 本主题需向作者支付 10 鱼币 才能浏览
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-24 12:04:15 | 显示全部楼层
你的代码有一个小错误。在你的输入语句中,你使用了 %s 来读取字符,但实际上应该使用 %c 来读取字符。所以你需要将代码中的 %s 改为 %c 。

修正后的代码如下:
#include <cstdio>using namespace std;int main(){    int m, n, k;    char a;    scanf("%d%d %c%d", &m, &n, &a, &k);    for (int j = 1; j <= m; j++) //控制行数    {        for (int i = 1; i <= n; i++) //控制列数        {            switch (k) //1是实心,0是空心            {                case 1:                    printf("%c", a); //实心                    break;                case 0: //空心                    if ((i >= 2) && (i <= n - 1) && (j >= 2) && (j <= m - 1)) // 在非行、列的首位输出空字符                        printf("%c", ' ');                    else                        printf("%c", a);            }        }        printf("\n");    }    return 0;}
这样修改后,你的代码就能够正确运行了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-24 12:04:47 | 显示全部楼层
isdkz 发表于 2023-6-24 12:04
你的代码有一个小错误。在你的输入语句中,你使用了 %s 来读取字符,但实际上应该使用 %c 来读取字符。所以 ...

16秒????
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-24 12:05:04 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-24 12:05:21 | 显示全部楼层
第一次见求助帖要鱼币@sfqxx @liuhongrun2022 @歌者文明清理员 @isdkz

点评

把悬赏搞成付费主题了  发表于 2023-6-24 13:12
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-24 12:08:35 | 显示全部楼层
在读入第三个参数时应该使用 `%c` 而不是 `%s`,因为矩形符号只有一个字符。所以修改读入部分为:

scanf("%d%d %c%d", &m, &n, &a, &k);

另外在代码中统一缩进的方式也需要统一一下,可以按照较为常用的方式,即每个缩进为4个空格。

调整了以后的完整代码为:

#include <cstdio>
using namespace std;

int main() {
    int m, n, k;
    char a;
    scanf("%d%d %c%d", &m, &n, &a, &k);
    for (int j = 1; j <= m; j++) {
        for (int i = 1; i <= n; i++) {
            switch (k) {
                case 1: printf("%c", a); break;
                case 0:
                    if (i >= 2 && i <= n - 1 && j >= 2 && j <= m - 1) {
                        printf("%c", ' ');
                    } else {
                        printf("%c", a);
                    }
            }
        }
        printf("\n");
    }
    return 0;
}

注意这里把多行注释合并成了单行注释,以简化排版。
求最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-24 12:16:47 | 显示全部楼层
isdkz 发表于 2023-6-24 12:04
你的代码有一个小错误。在你的输入语句中,你使用了 %s 来读取字符,但实际上应该使用 %c 来读取字符。所以 ...


改为%c后,无法输出。
微信截图_20230624121602.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-24 12:21:03 | 显示全部楼层
sfqxx 发表于 2023-6-24 12:08
在读入第三个参数时应该使用 `%c` 而不是 `%s`,因为矩形符号只有一个字符。所以修改读入部分为:

scanf("%d%d %c%d", &m, &n, &a, &k);
这个%c前为什么要留一个空格?
改成C后,留一个空格可以运行,不留空格无法运行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-24 12:22:33 | 显示全部楼层
jiangganjun 发表于 2023-6-24 12:16
改为%c后,无法输出。

你是不是没有重新编译?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-24 12:24:30 | 显示全部楼层
isdkz 发表于 2023-6-24 12:22
你是不是没有重新编译?

%c前增加了一个空格。。。不增家空格无法运行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-24 12:25:49 | 显示全部楼层
jiangganjun 发表于 2023-6-24 12:24
%c前增加了一个空格。。。不增家空格无法运行。

好吧,看来你不是直接复制我的代码过去的,我给出的代码是有空格的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-24 12:27:24 | 显示全部楼层
isdkz 发表于 2023-6-24 12:25
好吧,看来你不是直接复制我的代码过去的,我给出的代码是有空格的

为什么%c前要增加空格,而%d前不要增加空格呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-24 12:31:05 | 显示全部楼层    本楼为最佳答案   
jiangganjun 发表于 2023-6-24 12:27
为什么%c前要增加空格,而%d前不要增加空格呢

在 scanf 函数中,"%c"与大多数其他格式符有所不同。当使用"%c"时, scanf 会读取并返回下一个字符,即使这个字符是空格或换行符。因此,如果你的输入有空格(例如,在一个数字和一个字符之间),那么 scanf 会把这个空格读入到字符变量中,而你可能期望的是读入的是后面的字符。

在 scanf 语句中增加空格,意味着 scanf 会跳过所有的空白字符(包括空格、制表符和换行符),直到读到一个非空白字符。这样可以确保字符变量读入的是你想要的字符,而不是一个空格。

相反,"%d"会自动跳过所有空白字符,直到找到第一个数字或者符号(例如负号)。因此,在"%d"前面不需要加空格。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-24 12:31:45 | 显示全部楼层


你可能会有什么“转人工”的机制

当chatgpt解决失败,就“转人工”
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-24 12:44:33 | 显示全部楼层
zhangjinxuan 发表于 2023-6-24 12:31
你可能会有什么“转人工”的机制

当chatgpt解决失败,就“转人工”

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-24 14:48:59 | 显示全部楼层
zhangjinxuan 发表于 2023-6-24 12:31
你可能会有什么“转人工”的机制

当chatgpt解决失败,就“转人工”

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-7 13:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表