修正后的代码如下:
#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;
}
这样修改后,你的代码就能够正确运行了。 isdkz 发表于 2023-6-24 12:04
你的代码有一个小错误。在你的输入语句中,你使用了 %s 来读取字符,但实际上应该使用 %c 来读取字符。所以 ...
16秒???? sfqxx 发表于 2023-6-24 12:04
16秒????
{:10_256:} 第一次见求助帖要鱼币@sfqxx @liuhongrun2022 @歌者文明清理员 @isdkz 在读入第三个参数时应该使用 `%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;
}
注意这里把多行注释合并成了单行注释,以简化排版。
求最佳答案{:10_254:}
isdkz 发表于 2023-6-24 12:04
你的代码有一个小错误。在你的输入语句中,你使用了 %s 来读取字符,但实际上应该使用 %c 来读取字符。所以 ...
改为%c后,无法输出。 sfqxx 发表于 2023-6-24 12:08
在读入第三个参数时应该使用 `%c` 而不是 `%s`,因为矩形符号只有一个字符。所以修改读入部分为:
scanf("%d%d %c%d", &m, &n, &a, &k);
这个%c前为什么要留一个空格?
改成C后,留一个空格可以运行,不留空格无法运行。 jiangganjun 发表于 2023-6-24 12:16
改为%c后,无法输出。
你是不是没有重新编译? isdkz 发表于 2023-6-24 12:22
你是不是没有重新编译?
%c前增加了一个空格。。。不增家空格无法运行。 jiangganjun 发表于 2023-6-24 12:24
%c前增加了一个空格。。。不增家空格无法运行。
好吧,看来你不是直接复制我的代码过去的,我给出的代码是有空格的 isdkz 发表于 2023-6-24 12:25
好吧,看来你不是直接复制我的代码过去的,我给出的代码是有空格的
为什么%c前要增加空格,而%d前不要增加空格呢 jiangganjun 发表于 2023-6-24 12:27
为什么%c前要增加空格,而%d前不要增加空格呢
在 scanf 函数中,"%c"与大多数其他格式符有所不同。当使用"%c"时, scanf 会读取并返回下一个字符,即使这个字符是空格或换行符。因此,如果你的输入有空格(例如,在一个数字和一个字符之间),那么 scanf 会把这个空格读入到字符变量中,而你可能期望的是读入的是后面的字符。
在 scanf 语句中增加空格,意味着 scanf 会跳过所有的空白字符(包括空格、制表符和换行符),直到读到一个非空白字符。这样可以确保字符变量读入的是你想要的字符,而不是一个空格。
相反,"%d"会自动跳过所有空白字符,直到找到第一个数字或者符号(例如负号)。因此,在"%d"前面不需要加空格。 isdkz 发表于 2023-6-24 12:05
你可能会有什么“转人工”的机制{:10_256:}
当chatgpt解决失败,就“转人工”{:10_256:} zhangjinxuan 发表于 2023-6-24 12:31
你可能会有什么“转人工”的机制
当chatgpt解决失败,就“转人工”
{:10_256:} zhangjinxuan 发表于 2023-6-24 12:31
你可能会有什么“转人工”的机制
当chatgpt解决失败,就“转人工”
{:10_256:}
页:
[1]