c - 在 C 中处理字符串时出现问题(打印它们)

标签 c string

这是我要问的第一个问题。

所以这只是一个编码问题,其中给出了 (n,m),你必须 打印之字形图案。

该程序相当简单,但不知怎的,我在理解字符串和字符数组时遇到了问题。我无法理解发生了什么以及为什么程序打印超出 m 的值

例如。

Input: 9 9
Output:

#########
........#
#########
#........
#########
........#
#########
#........
#########
<小时/>
//(☞゚ヮ゚)☞NOTSOAWESOME 
#include<stdio.h>
#include<string.h>
int main()
{
   int n,m,i;
   scanf("%d %d",&n,&m);
   char snake[m],right[m],left[m];
   for(i=0;i<m;i++)
   {
       snake[i]='#';
       right[i]='.';
       left[i]='.';
   }
   left[0]='#';
   right[m-1]='#';
   for(i=0;i<n;i++)
   {
       if(i%2==0)printf("%s\n",snake);
       else if((i-1)%4==0)printf("%s\n",right);
       else if((i-3)%4==0)printf("%s\n",left);
   }
}
<小时/>
My output for the above Input is,
#########@
........#g�@�
#########@
#........�Q�
#########@
........#g�@�
#########@
#........�Q�
#########@

最佳答案

I avoid it because that would be nested loops and a bit messy.

我同意它需要一个内部循环,但它确实节省了空间,这对于这个特定问题可能并不重要,但在其他情况下可能很重要。

下面尝试了一种经过部分测试的解决方案,以避免额外的存储。

#include <stdio.h>

enum LINE_STATE {
    LEFT = 0,
    RIGHT,
    SNAKE,
    MAX_STATE,
};

int main()
{
    int n, m, i, j;
    enum LINE_STATE s = SNAKE, prev = RIGHT;

    scanf("%d %d",&n,&m);

    for (i = 1; i <= n; i++) {
           printf("%c", (s == SNAKE || s == LEFT) ? '#' : '.');
           for (j = 1; j < m - 1; j++)
                printf("%c", s == SNAKE ? '#' : '.');
           printf("%c\n", (s == SNAKE || s == RIGHT) ? '#' : '.');
           if (i % 2) {
               s = (prev + 1) % 2; // next line is even-numbered, alternate between LEFT and RIGHT
           } else {
               prev = s;
               s = SNAKE;  // next line is an odd-numbered, only SNAKE
           }
     }
}

关于c - 在 C 中处理字符串时出现问题(打印它们),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57021454/

相关文章:

c - 使用 scanf 函数执行 C 程序时控制台窗口为空

c - 为什么此c编程给出需要的结果?

c - 动态查找结构的大小

javascript - 单击时切换拉斐尔对象的颜色

java - 有人可以解释在 String 类中被覆盖的 toString 方法的源代码吗?

python - 如何让pypdf逐行读取页面内容?

从 C 中现有的一维数组创建二维数组?

c - 如何使用 C 从 Windows 中的文件句柄获取文件名?

javascript - React 读取 json 并将字段转换为字符串

java - 如何使 "%n"等于 "\n"