Arrays 使用while循环和数组时需要基本解释
//Arrays 使用while循环和数组时需要基本解释,arrays,string,while-loop,puts,Arrays,String,While Loop,Puts,// #包括“stdafx.h” #包括“stdio.h” #包括 void main() { 查尔夫妇[5][50]={“约翰·诺拉”、“保罗·凯西”、“汤姆·克莱尔”、“马丁·玛丽”、“托尼·特雷莎”}; char-male[5][51]; 女性[5][51]; int i; int j=0; printf(“男性:”); 对于(i=0;i
#包括“stdafx.h”
#包括“stdio.h”
#包括
void main()
{
查尔夫妇[5][50]={“约翰·诺拉”、“保罗·凯西”、“汤姆·克莱尔”、“马丁·玛丽”、“托尼·特雷莎”};
char-male[5][51];
女性[5][51];
int i;
int j=0;
printf(“男性:”);
对于(i=0;i<5;i++)
{
while(夫妻[i][j]!='')
{
男性[i][j]=夫妇[i][j];
j++;
}
男性[i][j]='\0';
puts(男性[i]);
j=0;
}
printf(“\n”);
}
您好,我基本上是试图打印所有男性的名字,然后打印女性的名字(我还没有做这部分)。下面的代码确实有效,但是我发现很难理解它是如何工作的。比如,我不理解while(夫妻[I][j]!='')的意思。如果我试图用空格分隔字符串,为什么它不等于空格。我将感谢任何类型的帮助和解释的人可能有!谢谢 每一行“夫妇”可以被视为一个字符串(即字符数组),由两个名字组成,一个男性,一个女性,用一个空格字符分隔。“while”循环将配对的男性名称复制到单独的数组“male”中,一次一个字符。“while”循环的预期操作是继续复制字符,直到遇到分隔空格,然后放入“\0”以标记复制的男性名称字符串的结尾。但是“while”的意思是“只要某个条件为真,就这样做”,因此您希望为真的条件是空格不是当前正在查看的角色。在头一行“夫妇”中执行代码,如下所示:
#include "stdafx.h"
#include "stdio.h"
#include <string.h>
void main()
{
char couples[5][50] = { "John Nora", "Paul Kathy", "Tom Claire", "Martin Mary", "Tony Teresa" };
char male[5][51];
char female[5][51];
int i;
int j = 0;
printf("Males: ");
for (i = 0; i < 5; i++)
{
while (couples[i][j] != ' ')
{
male[i][j] = couples[i][j];
j++;
}
male[i][j] = '\0';
puts(male[i]);
j = 0;
}
printf("\n");
}
每一行“夫妇”可以被视为一个字符串(即字符数组),由两个名字组成——一个男性,一个女性——由一个空格字符分隔。“while”循环将配对的男性名称复制到单独的数组“male”中,一次一个字符。“while”循环的预期操作是继续复制字符,直到遇到分隔空格,然后放入“\0”以标记复制的男性名称字符串的结尾。但是“while”的意思是“只要某个条件为真,就这样做”,因此您希望为真的条件是空格不是当前正在查看的角色。在头一行“夫妇”中执行代码,如下所示:
#include "stdafx.h"
#include "stdio.h"
#include <string.h>
void main()
{
char couples[5][50] = { "John Nora", "Paul Kathy", "Tom Claire", "Martin Mary", "Tony Teresa" };
char male[5][51];
char female[5][51];
int i;
int j = 0;
printf("Males: ");
for (i = 0; i < 5; i++)
{
while (couples[i][j] != ' ')
{
male[i][j] = couples[i][j];
j++;
}
male[i][j] = '\0';
puts(male[i]);
j = 0;
}
printf("\n");
}
while
遇到空格时停止(因为'!='
为false),但复制它前面的所有内容(因为空格以外的任何字符!='
为true)。另外,main()
应该返回int
,而不是void
void main()
是一个扩展,不是每个编译器都支持。谢谢,你知道我为什么把j增加1吗?那是因为I
是每个C字符串的索引,j
是字符串中每个字符的索引。例如,夫妇[0]
是“约翰·诺拉”
,夫妇[0][0]
是'J'
,夫妇[0][1]
是'o'
,夫妇[0][2]
是'h'
,等等。谢谢,我真的很感激!while
遇到空格时停止(因为'!='
为false),但复制它前面的所有内容(因为空格以外的任何字符!='
为true)。另外,main()
应该返回int
,而不是void
void main()
是一个扩展,不是每个编译器都支持。谢谢,你知道我为什么把j增加1吗?那是因为I
是每个C字符串的索引,j
是字符串中每个字符的索引。例如,夫妇[0]
是“约翰·诺拉”
,夫妇[0][0]
是'J'
,夫妇[0][1]
是'o'
,夫妇[0][2]
是'h'
,等等。谢谢,我真的很感激!
a) i=0 and j=0 and enter the 'while' loop:
b) couples[i][j] = 'J'. Is 'J' != ' ' ? --> YES, copy 'J' to males[0][0], increment j
c) couples[i][j] = 'o'. Is 'o' != ' ' ? --> YES, copy 'o' to males[0][1], increment j
d) couples[i][j] = 'h'. Is 'h' != ' ' ? --> YES, copy 'h' to males[0][2], increment j
e) couples[i][j] = 'n'. Is 'n' != ' ' ? --> YES, copy 'n' to males[0][3], increment j
f) couples[i][j] = ' '. Is ' ' != ' ' ? --> NO, copy '\0' to males[0][4], reset j to 0