盗墓笔记杨洋视频合集:C语言循环、嵌套问题?

来源:百度文库 编辑:高校问答 时间:2024/05/12 00:18:01
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的位置
}
main()
{
int i;
char line[100];
gets(line);
for(i=longset(line);judge(line[i]);i++) //统计字符串中倒数第二个连续的字母,如abc3jg56jd67la,则输出jd
printf("%c",line[i]);// 【最后输出的应是字符串,是不是应该用%s?】 line[i]是一个字符,不是字符串
}

劝你运行一下程序,看看是什么结果再决定要不要理解这个程序

请原谅我没有耐心看你的代码,太乱了,呵呵。

程序中的place在if分支未被赋值,程序写的有问题。

编者的目的可能是:将输入的字符串中最多字母的段给打印出来。
比如:“abc##defg__hxhxhxhx”,输出结果应该为:“hxhxhxhx”

最后一个语句中当然应为:“%c”。