C语言循环、嵌套问题?

来源:百度知道 编辑:UC知道 时间:2024/05/09 11:23:37
int judge(c)
{ if((c>='a'&&c<='z')||(c>='A'&&'Z'))
return(1);
else return(0); }
int longest(str) char str[];
{ int i,place,point;int len=0,length=0,flag=0;
for(i=0;i<=strlen(str);i++) 【这个for往下都看不明白】
if(judge(str[i]))
if(flag)
{ point=i;
flag=0;
}
else len++;
else
{ flag=1;
if(len>length)
{length=len;
place=point;
len=0;
}
}
return(place)
}
main()
{ int i;char line[100];
gets(line);
for(i=longset(line);judge(line[i];i++)
printf("%c",line[i]); 【最后输出的应是字符串,是不是应该用%s?】
}

望高手能否详细解释一下函数嵌套循环体那里(最好是每一句都能解释一下。),for...if(judge(str[]))...以及往下。。谢谢。

你的程序错误好多
又乱得可以
我给你整理了一下
自己看看吧。。
// zd_20.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <string.h>

int judge(char c)
{
if((c>='a'&&c<='z')||(c>='A'&&'Z'))
return(1);
else
return(0);
}
int longset(char str[])
{
int i,place,point;
int len=0,length=0,flag=0;
for(i=0;i<strlen(str);i++) //【这个for往下都看不明白】
{
if(judge(str[i])) //判断是不是字母
{
if(flag) //有没有非字母标志
{
point=i; //如果有,存储该位置
flag=0; //取消非字母标志
}
else
len++; //如果没有,记录长度
}
else
{
flag=1; //非字母标志设为1
if(len>length)
{
length=len;
place=point; //上一个非字母标志的位置
len=0;
}
}
}
return(place) ;//返回倒数第二个非字母标志位置,如abc3jd56jd67la 则返回第二个j的位置