c语言问题5

#include <stdio.h>
#include <conio.h>
void fun (char *s)
{int i,j;
for (i=0,j=0;s[i]!='\o';i++)
if (s[j]>='0'&&s[i]<='9')
s[j++]=s[i];
s[j]='\0';
}
main()
{char intem [80];
printf .....}

请大家只关注fun函数定义部分,fun的功能是将输入的字符串中的字符输出.
可是在for函数的第一个小分句里每一次循环的条件都是i=0,j=0..本人觉得都规定死了还怎么取遍字符啊,没看出个所以然..

首先你的代码里有一个小错误改一下:
s[i]!='\o'
改成
s[i]!='\0'
判断的是否为字符串结束,所以判断'\0',而不是判断'\o'

是这么看的:
for (i=0,j=0;s[i]!='\0';i++)
if (s[j]>='0'&&s[i]<='9')
s[j++]=s[i];

首先你得明白for语句的结构:
for (初始处理表达式; 循环判断式; 递增表达式)
初始处理表达式:
一个表达式。该表达式只在执行循环前被执行一次。
循环判断式:
一个布尔表达式。如果该表达式的值是真,则循环继续。如果该表达式的值是假,则循环结束。
递增表达式:
一个表达式。在每次经过循环的最后执行该递增表达式。

所以i=0,j=0只在刚执行for循环前被执行一次。
以后每次都是在执行完for分支处理后,直接执行i++,再判断s[i]!='\0'是否成立,如果成立则继续执行。
而且除了执行了i++外,在for分支内,"s[j++]=s[i]"这个处理中,j也进行了++处理,所以i,j的值是在变化的
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-03-01
它的循环条件是s[i]!=‘\0’,和i=0,j=0有什么关系吗?本回答被提问者采纳
相似回答