当前位置: 代码迷 >> C语言 >> 解释一下程序哈
  详细解决方案

解释一下程序哈

热度:130   发布时间:2007-10-31 22:59:21.0
以下是引用zzsy04et138在2007-10-29 14:54:22的发言:
题目是要连接两个字符串
char s1[80],s2[40];
int i=0,j=0;
gets(s1);
gets(s2);
while(s1[i]!='\0') //通过这个循环,i已经指向s1的最后一个字符的下一个位置
i++;
while(s2[j]!='\0')
s1[i++]=s2[j++];//这个不懂哦. //然后将s2加在s1的后面,i已经不是指向的第一个位置
s1[i]='\0'; //这个为什么要加上去? //在c中'\0'表示字符串的结束
printf("%s",s1);


----------------解决方案--------------------------------------------------------
好象有点懂了,谢谢哈。
再帮忙看看这个程序哪出问题了.程序的功能是:输入一个字符,要求将字符串中该字符删去.
char str[81];
int i,j;
char ch;
gets(str);
ch=getchar();
for(i=j=0;str[i]!='\0';i++)
if(str[i]!=ch);
str[j++]=str[i];
str[j]='\0';
printf("%s",str);
----------------解决方案--------------------------------------------------------
楼主这样改一下,for语句有问题,if的判断条件有误
for(i=j=0;str[i]!='\0';i++)
{
if(str[i]==ch)
;
else
str[j++]=str[i];
}

[此贴子已经被作者于2007-11-1 13:09:18编辑过]


----------------解决方案--------------------------------------------------------
以下是引用zzsy04et138在2007-11-1 12:56:23的发言:
好象有点懂了,谢谢哈。
再帮忙看看这个程序哪出问题了.程序的功能是:输入一个字符,要求将字符串中该字符删去.
char str[81];
int i,j;
char ch;
gets(str);
ch=getchar();
for(i=j=0;str[i]!='\0';i++)
if(str[i]!=ch);//小失误,找不着就会出现大问题
str[j++]=str[i];
str[j]='\0';
printf("%s",str);


----------------解决方案--------------------------------------------------------

回复:(nuciewth)以下是引用zzsy04et138在2007-11-1...
好象还是不行...
----------------解决方案--------------------------------------------------------
以下是引用静思在2007-11-1 13:08:10的发言:
楼主这样改一下,for语句有问题,if的判断条件有误
for(i=j=0;str[i]!='\0';i++)
{
if(str[i]==ch)
;
else
str[j++]=str[i];
}

哦...我写的好象漏写大括号了..呵呵


----------------解决方案--------------------------------------------------------
以下是引用静思在2007-11-1 13:08:10的发言:
楼主这样改一下,for语句有问题,if的判断条件有误
for(i=j=0;str[i]!='\0';i++)
{
if(str[i]==ch)
;
else
str[j++]=str[i];
}

纯属多余,LZ的判断就可以了.
你加空判断有什么意义.


----------------解决方案--------------------------------------------------------
以下是引用zzsy04et138在2007-11-1 13:29:15的发言:

哦...我写的好象漏写大括号了..呵呵

不用大括号没有错,不会出现编译和逻辑错误.但建议要写.


----------------解决方案--------------------------------------------------------
以下是引用zzsy04et138在2007-11-1 13:27:31的发言:
好象还是不行...

#include<stdio.h>
int main()
{
char str[81];
int i,j;
char ch;
gets(str);
ch=getchar();
for(i=j=0;str[i]!='\0';i++)
{

if(str[i]!=ch)
{
str[j++]=str[i];
}
}
str[j]='\0';
printf("%s\n",str);
return 0;
}
//怎么不行了?


----------------解决方案--------------------------------------------------------
回复:(nuciewth)以下是引用静思在2007-11-1 13:08:...
呵呵,显得是有点多余,我原来还没发现,多谢版主提醒
----------------解决方案--------------------------------------------------------