28节课后题求助大神点拨
请问我这样编写把fish横向打印,哪里不对,如何修改?想用指针但还是懵懵的#include <stdio.h>
int main()
{
int i,j,k;
char str={{
"########",
"## ",
"## ",
"######",
"## ",
"## ",
"## "
},
{
"####",
" ## ",
" ## ",
" ## ",
" ## ",
" ## ",
"####"
},
{
" ###### ",
"## ##",
"## ",
" ###### ",
" ##",
"## ##",
" ###### "
},
{
"## ##",
"## ##",
"## ##",
"########",
"## ##",
"## ##",
"## ##"
}};
char *p=&str;
for (i=0;i<7;i++)
{
for (j=0;j<4;j++)
{
printf("%s",*p);
}
}
return 0;
}
您好,您的代码存在一些问题。首先,`str`应该是一个二维字符数组,而不是一个指向字符数组的指针。其次,您在使用`for`循环打印字符时,只打印了第一行的字符,没有把整个鱼的图案打印出来。
以下是修正后的代码示例:
#include <stdio.h>
int main()
{
int i, j, k;
char str = {
{
"########",
"## ",
"## ",
"######",
"## ",
"## ",
"## "
},
{
"####",
" ## ",
" ## ",
" ## ",
" ## ",
" ## ",
"####"
},
{
" ###### ",
"## ##",
"## ",
" ###### ",
" ##",
"## ##",
" ###### "
},
{
"## ##",
"## ##",
"## ##",
"########",
"## ##",
"## ##",
"## ##"
}
};
for (i = 0; i < 4; i++) {
for (j = 0; j < 7; j++) {
printf("%s\n", str);
}
printf("\n");
}
return 0;
}
这样修改后,可以将整个鱼的图案打印出来。注意,`str`数组定义为 `char str`,表示有4种不同的鱼的图案,每种图案有7行9列的字符。外层的两个循环遍历四种鱼的图案,内层的循环打印每一行的字符。
希望对您有帮助!
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。 FishC_GPT 发表于 2023-12-1 14:55
您好,您的代码存在一些问题。首先,`str`应该是一个二维字符数组,而不是一个指向字符数组的指针。其次, ...
横向打印四个字母fish,应该是这样
for (i=0;i<7;i++)
{
for (j=0;j<4;j++)
{
printf("%s",str);
}
printf("\n");
}
谢谢GPT
疯狗马德森 发表于 2023-12-01 15:01
横向打印四个字母fish,应该是这样
for (i=0;i
如果您想横向打印字母"fish",可以尝试以下代码:
++
#include <iostream>
using namespace std;
int main() {
char letters = {'f', 'i', 's', 'h'};
for (int i = 0; i < 4; i++) {
cout << letters << " ";
}
return 0;
}
以上代码定义了一个字符数组 `letters` 存储了四个字母 'f', 'i', 's', 'h'。然后使用循环遍历数组,并在每个字母后面加一个空格输出。这样就实现了将字母 "fish" 横向打印的效果。希望能帮到您!
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。 FishC_GPT 发表于 2023-12-1 14:55
您好,您的代码存在一些问题。首先,`str`应该是一个二维字符数组,而不是一个指向字符数组的指针。其次, ...
如果把字符串定义成一个二维数组char str=。。。,再定义一个指针指向这个字符串数组的话,请问这个如何定义指针? 疯狗马德森 发表于 2023-12-01 15:04
如果把字符串定义成一个二维数组char str=。。。,再 ...
如果要定义一个指向二维字符数组的指针,您可以使用以下语法:str[] = { { "########", "## ", "## ", "######", "## ", "## ", "## " }, { "####", " ## ", " ## ", " ## ", " ## ", " ## ", "####" }, { " ###### ", "## ##", "## ", " ###### ", " ##", "## ##", " ###### " }, { "## ##", "## ##", "## ##", "########", "## ##", "## ##", "## ##" }};char (*p) = str;在这个例子中,`str`是一个二维字符数组,每个字符串的长度是9个字符。`(*p)`表示一个指向长度为9的字符数组的指针。我们将 `str` 赋值给指针 `p`,这样 `p` 就指向了 `str` 数组的首地址。您可以使用指针 `p` 来访问和操作 `str` 数组中的元素。希望对您有帮助!
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。 FishC_GPT 发表于 2023-12-1 15:04
如果要定义一个指向二维字符数组的指针,您可以使用以下语法:在这个例子中,`str`是一个二维字符数组, ...
如果按照str[]和char (*p) = str这样定义的话,请问如何将FISH这四个横向打印出来呢?for语句代码如何编写 疯狗马德森 发表于 2023-12-01 15:18
如果按照str和char (*p) = str这样定义的话,请问如何 ...
要将"FISH"这四个横向打印出来,您可以使用如下的for循环代码:
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 7; j++) {
printf("%c", *(p + j));
}
printf("\n");
}
在这段代码中,外层的for循环用于遍历行,内层的for循环用于遍历列。通过指针 `p` 加上索引 `i` 和 `j` 的偏移,可以访问到 `str` 数组中相应位置的字符。使用`printf`函数打印字符时,用`%c`作为格式控制符。
这样就能够将鱼的每一行横向打印出来。希望对您有帮助!
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。 FishC_GPT 发表于 2023-12-1 15:18
要将"FISH"这四个横向打印出来,您可以使用如下的for循环代码:
这样不对。我想要输出######## ############ ##
## #### ## ## ##
## #### ## ##
###### ## ##############
## ## ## ## ##
## #### ## ## ##
## ############ ##
这样的结果 疯狗马德森 发表于 2023-12-01 15:24
这样不对。我想要输出######## ############ # ...
非常抱歉,我之前的回答有误。如果您想要将`FISH`这四个横向打印出来,您可以使用如下代码:#include <stdio.h>int main() { char str = { { "########", "## ", "## ", "######", "## ", "## ", "## " }, { "####", " ## ", " ## ", " ## ", " ## ", " ## ", "####" }, { " ###### ", "## ##", "## ", " ###### ", " ##", "## ##", " ###### " }, { "## ##", "## ##", "## ##", "########", "## ##", "## ##", "## ##" } }; for (int i = 0; i < 7; i++) { for (int j = 0; j < 4; j++) { for (int k = 0; k < 9; k++) { printf("%c", str); } printf(" "); } printf("\n"); } return 0;}在这段代码中,`str`是一个三维字符数组,其中每个维度的大小分别为 ``,表示四个鱼的图案,每个鱼有七行九列的字符。外层的两个循环用于遍历行和列,内层的循环用于遍历每个字符。通过访问 `str` 数组的不同维度,可以按照行将鱼的图案打印出来。希望对您有帮助!
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。 FishC_GPT 发表于 2023-12-1 15:24
非常抱歉,我之前的回答有误。如果您想要将`FISH`这四个横向打印出来,您可以使用如下代码:#include int ...
如果把str定义成一个二维数组,再定义一个指针数组指向这个二维数组,最终用指针数组输出打印“FISH”这四个字母,代码应该如何写呢? 疯狗马德森 发表于 2023-12-01 15:35
如果把str定义成一个二维数组,再定义一个指针数组指 ...
如果您想用指针数组来输出打印"FISH"这四个字母,可以按照以下方式编写代码:
#include <stdio.h>
int main() {
char str = {
{
"########",
"## ",
"## ",
"######",
"## ",
"## ",
"## "
},
{
"####",
" ## ",
" ## ",
" ## ",
" ## ",
" ## ",
"####"
},
{
" ###### ",
"## ##",
"## ",
" ###### ",
" ##",
"## ##",
" ###### "
},
{
"## ##",
"## ##",
"## ##",
"########",
"## ##",
"## ##",
"## ##"
}
};
char *str_ptr;
for (int i = 0; i < 4; i++) {
str_ptr = str;
}
for (int i = 0; i < 7; i++) {
for (int j = 0; j < 4; j++) {
printf("%s ", str_ptr);
str_ptr += 9;// 指针偏移9个字符的长度,指向下一行
}
printf("\n");
}
return 0;
}
在这段代码中,我们首先定义了一个二维字符数组`str`,用来存储"FISH"这四个字母的图案。然后我们定义了一个指针数组`str_ptr`,用来存储指向`str`每个字母图案的指针。通过`for`循环将每个字母图案的第一行的地址赋值给`str_ptr`中的元素。
接着,我们使用两个嵌套的`for`循环来遍历打印每行字符。外层循环控制行数,内层循环控制每个字母图案的打印。在内层循环中,我们通过`printf`函数打印每个字母图案的当前行,然后将指针偏移9个字符的长度,以便指向下一行。
这样,就可以使用指针数组按照水平方向打印"FISH"这四个字母的图案了。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
页:
[1]