鱼C论坛

 找回密码
 立即注册
查看: 2072|回复: 4

[已解决]请问大家,这里定义的i和j具体的意义是什么啊?看不太懂逻辑

[复制链接]
发表于 2020-10-22 21:45:02 | 显示全部楼层 |阅读模式
3鱼币
#include <stdio.h>
#include <string.h>

int main()
{
        char *array[5] = {"FishC", "Five", "Star", "Good", "Wow"};
        char *(*p)[5] = &array;
        int i, j;

        for (i = 0; i < 5; i++)
        {
                for (j = 0; j < 5; j++)
                {
                        if (i > strlen((*p)[j]) - 1)
                        {
                                break;
                        }
                        printf("%c ", (*p)[j][i]);
                }
                printf("\n");
        }

        return 0;
}
最佳答案
2020-10-22 21:45:03
本题的 i、j 定义的是行与列不容置疑,只是在本程序中,行变量 i 放到了列的位置,而列变量 j 放到了行的位置,这就让打印出来的数组改变了原来的位置,形成了另一番风格:

原本输出应该是这样的      顺时针旋转后是这样的      左右翻转后是这样的
       F i  s h C                              W G S F F                             F F S G W
       F i  v e                                  o  o t  i  i                               i  i  t  o o
       S t  a r                                 w  o a v s                             s v a o w
       G o o d                                    d r  e h                             h e r d
      W o w                                               C                            C

说明:
1、变量 i 与 j 不改变位置,输出的就是左边那个
2、顺时针旋转90度后,输出的就是中间那个 (这个要实现比较复杂一点)
3、旋转后再左右翻转,输出的就是右边那个 (这个的实现简单,只要 i 、j 位置互换就行)

最佳答案

查看完整内容

本题的 i、j 定义的是行与列不容置疑,只是在本程序中,行变量 i 放到了列的位置,而列变量 j 放到了行的位置,这就让打印出来的数组改变了原来的位置,形成了另一番风格: 原本输出应该是这样的 顺时针旋转后是这样的 左右翻转后是这样的 F i s h C W G S F F F F S G W F i v e o o t i i ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-22 21:45:03 | 显示全部楼层    本楼为最佳答案   
本题的 i、j 定义的是行与列不容置疑,只是在本程序中,行变量 i 放到了列的位置,而列变量 j 放到了行的位置,这就让打印出来的数组改变了原来的位置,形成了另一番风格:

原本输出应该是这样的      顺时针旋转后是这样的      左右翻转后是这样的
       F i  s h C                              W G S F F                             F F S G W
       F i  v e                                  o  o t  i  i                               i  i  t  o o
       S t  a r                                 w  o a v s                             s v a o w
       G o o d                                    d r  e h                             h e r d
      W o w                                               C                            C

说明:
1、变量 i 与 j 不改变位置,输出的就是左边那个
2、顺时针旋转90度后,输出的就是中间那个 (这个要实现比较复杂一点)
3、旋转后再左右翻转,输出的就是右边那个 (这个的实现简单,只要 i 、j 位置互换就行)

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

使用道具 举报

发表于 2020-10-22 22:43:39 | 显示全部楼层
本帖最后由 风过无痕1989 于 2020-10-23 08:48 编辑

这个程序是将数组顺时针旋转90度后再左右翻转,i、j 定义的当然是数组的行和列哪
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-10-23 10:13:34 | 显示全部楼层
风过无痕1989 发表于 2020-10-22 21:45
本题的 i、j 定义的是行与列不容置疑,只是在本程序中,行变量 i 放到了列的位置,而列变量 j 放到了行的位 ...

谢谢!i和j代表什么我搞清楚了。还有一个问题,if (i > strlen((*p)[j]) - 1)这句又是什么意思呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-23 10:28:17 | 显示全部楼层
黑眼睛 发表于 2020-10-23 10:13
谢谢!i和j代表什么我搞清楚了。还有一个问题,if (i > strlen((*p)[j]) - 1)这句又是什么意思呢?

i 是循环变量,为保证其值不大于字符串的长度,而设置的一个判断,意思是如果超过(超过了就溢出了)字符串长度减1(减 1是因为字符串的末尾有一个结束标志,而用 strlen 来计算时,没有计算到这个标志),就中断循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 19:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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