C程序有道题解析看不懂
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/06 05:45:22
C程序有道题解析看不懂
编写一个程序求出两个字符串:
s[]=”Thisis C programming text”
t[]=”Thisis a text for C programming”
包含最长的相同单词(同一字母的大小写视为不同的字符).
程序:
#include
#include
void maxword(char *s,char *t)
{
char*res,*temp,chs,cht;
inti,j,found,maxlen=0;
while(*s!='\0')
{
while(*s==' ') s++;
for(i=0;s[i]!=' ' && s[i]!='\0';i++);
if(i>maxlen)
{
chs=s[i];
s[i]='\0';
temp=t;
found=0;
while (*temp!='\0' && found)
{
while (*temp==' ') temp++;
for (j=0;temp[j]!=' ' && temp[j]!='\0';j++);
if (j==i)
{
cht=temp[j];
temp[j]='\0';
if (strcmp(s,temp)==0)
{
maxlen=i;
res=s;
found=1;
}
temp[j]=cht;
}
temp=&temp[j];
}
s[i]=chs;
}
s=&s[i];
}
if(maxlen==0)
printf("没有相同的单词.\n");
else
{
chs=res[maxlen];
res[maxlen]='\0';
printf("%s\n",res);
res[maxlen]=chs;
}
}
main()
{
staticchar s[]="This is C programming text";
staticchar t[]="This is a text for C programming";
maxword(s,t);
}
看不懂,关键步骤的每一步是干什么用的,设置的每个变量分别起什么作用.
编写一个程序求出两个字符串:
s[]=”Thisis C programming text”
t[]=”Thisis a text for C programming”
包含最长的相同单词(同一字母的大小写视为不同的字符).
程序:
#include
#include
void maxword(char *s,char *t)
{
char*res,*temp,chs,cht;
inti,j,found,maxlen=0;
while(*s!='\0')
{
while(*s==' ') s++;
for(i=0;s[i]!=' ' && s[i]!='\0';i++);
if(i>maxlen)
{
chs=s[i];
s[i]='\0';
temp=t;
found=0;
while (*temp!='\0' && found)
{
while (*temp==' ') temp++;
for (j=0;temp[j]!=' ' && temp[j]!='\0';j++);
if (j==i)
{
cht=temp[j];
temp[j]='\0';
if (strcmp(s,temp)==0)
{
maxlen=i;
res=s;
found=1;
}
temp[j]=cht;
}
temp=&temp[j];
}
s[i]=chs;
}
s=&s[i];
}
if(maxlen==0)
printf("没有相同的单词.\n");
else
{
chs=res[maxlen];
res[maxlen]='\0';
printf("%s\n",res);
res[maxlen]=chs;
}
}
main()
{
staticchar s[]="This is C programming text";
staticchar t[]="This is a text for C programming";
maxword(s,t);
}
看不懂,关键步骤的每一步是干什么用的,设置的每个变量分别起什么作用.
/*将字符串s中的第一个单词,与字符串t中的所有单词比较,看单词是否相等.然后s中的第二个单词比较,这样依次循环*/
#include
#include
void maxword(char *s,char *t)
{
char *res,*temp,chs,cht;
int i,j,found,maxlen=0;
while(*s!='\0')
{
while(*s==' ') s++; /*找出s字符串第一个不为空的字符位置*/
for(i=0;s[i]!=' ' && s[i]!='\0';i++);/*计算出单词长度*/
if(i>maxlen)
{
chs=s[i]; /*将s[[i]的值放入chs*/
s[i]='\0';
temp=t;
found=0;
while (*temp!='\0' && !found)
{
while (*temp==' ') temp++;/*找出temp(也就是t)字符串第一个不为空的字符位置*/
for (j=0;temp[j]!=' ' && temp[j]!='\0';j++);/*计算出单词长度*/
if (j==i)
{
cht=temp[j];
temp[j]='\0';
if (strcmp(s,temp)==0) /*比较两个字符串是否一样,是的话执行下面语句*/
{
maxlen=i;
res=s; /*将第一个单词放入res*/
found=1;
}
temp[j]=cht; /*两个字符串不一样则将temp[j]原值放回*/
}
temp=&temp[j]; /*两个单词不一样长时将temp[j]的地址赋予temp[*/
}
s[i]=chs;
}
s=&s[i];
}
if(maxlen==0)
printf("没有相同的单词.\n");
else
{
chs=res[maxlen];
res[maxlen]='\0';
printf("%s\n",res);
res[maxlen]=chs;
}
}
main()
{
static char s[]="This is C programming text";
static char t[]="This is a text for C programming";
maxword(s,t);
}
再问: *res,*temp,chs,cht; ���ĸ������ֱ��Ǹ����õ�
再答: for (j=0;temp[j]!=' ' && temp[j]!='\0';j++); ���ִ�к��jΪ������ʵĺ�һ��λ�ã�Ҳ���ǵ���λ��ֻ��j-1,������chs=temp[j]�� ���Ƿ���jλ����ݵı�����ͬ��chtҲ�ǡ�*res���Ǵ���ҵ��ĵ��ʡ�temp=t������temp��t�ַ���в���������for (j=0;temp[j]!=' ' && temp[j]!='\0';j++);ִ�����temp[0]��temp[j-1]Ϊ���ʣ���temp[j]='\0',��ʱtemp�ַ�����������ҵ��ĵ��ʡ�
#include
#include
void maxword(char *s,char *t)
{
char *res,*temp,chs,cht;
int i,j,found,maxlen=0;
while(*s!='\0')
{
while(*s==' ') s++; /*找出s字符串第一个不为空的字符位置*/
for(i=0;s[i]!=' ' && s[i]!='\0';i++);/*计算出单词长度*/
if(i>maxlen)
{
chs=s[i]; /*将s[[i]的值放入chs*/
s[i]='\0';
temp=t;
found=0;
while (*temp!='\0' && !found)
{
while (*temp==' ') temp++;/*找出temp(也就是t)字符串第一个不为空的字符位置*/
for (j=0;temp[j]!=' ' && temp[j]!='\0';j++);/*计算出单词长度*/
if (j==i)
{
cht=temp[j];
temp[j]='\0';
if (strcmp(s,temp)==0) /*比较两个字符串是否一样,是的话执行下面语句*/
{
maxlen=i;
res=s; /*将第一个单词放入res*/
found=1;
}
temp[j]=cht; /*两个字符串不一样则将temp[j]原值放回*/
}
temp=&temp[j]; /*两个单词不一样长时将temp[j]的地址赋予temp[*/
}
s[i]=chs;
}
s=&s[i];
}
if(maxlen==0)
printf("没有相同的单词.\n");
else
{
chs=res[maxlen];
res[maxlen]='\0';
printf("%s\n",res);
res[maxlen]=chs;
}
}
main()
{
static char s[]="This is C programming text";
static char t[]="This is a text for C programming";
maxword(s,t);
}
再问: *res,*temp,chs,cht; ���ĸ������ֱ��Ǹ����õ�
再答: for (j=0;temp[j]!=' ' && temp[j]!='\0';j++); ���ִ�к��jΪ������ʵĺ�һ��λ�ã�Ҳ���ǵ���λ��ֻ��j-1,������chs=temp[j]�� ���Ƿ���jλ����ݵı�����ͬ��chtҲ�ǡ�*res���Ǵ���ҵ��ĵ��ʡ�temp=t������temp��t�ַ���в���������for (j=0;temp[j]!=' ' && temp[j]!='\0';j++);ִ�����temp[0]��temp[j-1]Ϊ���ʣ���temp[j]='\0',��ʱtemp�ַ�����������ҵ��ĵ��ʡ�