请问大家,这里定义的i和j具体的意义是什么啊?看不太懂逻辑
#include <stdio.h>#include <string.h>
int main()
{
char *array = {"FishC", "Five", "Star", "Good", "Wow"};
char *(*p) = &array;
int i, j;
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5; j++)
{
if (i > strlen((*p)) - 1)
{
break;
}
printf("%c ", (*p));
}
printf("\n");
}
return 0;
} 本题的 i、j 定义的是行与列不容置疑,只是在本程序中,行变量 i 放到了列的位置,而列变量 j 放到了行的位置,这就让打印出来的数组改变了原来的位置,形成了另一番风格:
原本输出应该是这样的 顺时针旋转后是这样的 左右翻转后是这样的
F is h C W G S F F F F S G W
F iv e oo tii iito o
S ta r wo a v s s v a o w
G o o d d re h h e r d
W o w C C
说明:
1、变量 i 与 j 不改变位置,输出的就是左边那个
2、顺时针旋转90度后,输出的就是中间那个 (这个要实现比较复杂一点)
3、旋转后再左右翻转,输出的就是右边那个 (这个的实现简单,只要 i 、j 位置互换就行)
本帖最后由 风过无痕1989 于 2020-10-23 08:48 编辑
这个程序是将数组顺时针旋转90度后再左右翻转,i、j 定义的当然是数组的行和列哪 风过无痕1989 发表于 2020-10-22 21:45
本题的 i、j 定义的是行与列不容置疑,只是在本程序中,行变量 i 放到了列的位置,而列变量 j 放到了行的位 ...
谢谢!i和j代表什么我搞清楚了。还有一个问题,if (i > strlen((*p)) - 1)这句又是什么意思呢? 黑眼睛 发表于 2020-10-23 10:13
谢谢!i和j代表什么我搞清楚了。还有一个问题,if (i > strlen((*p)) - 1)这句又是什么意思呢?
i 是循环变量,为保证其值不大于字符串的长度,而设置的一个判断,意思是如果超过(超过了就溢出了)字符串长度减1(减 1是因为字符串的末尾有一个结束标志,而用 strlen 来计算时,没有计算到这个标志),就中断循环
页:
[1]