C语言课后习题(47)
谭浩强C语言第五版的一些课后习题第七章 第十题输入一行字符,输出最长的单词/*实现思路,一个判断是否为字符串的函数一个返回最长字符串初始下标的函数在main里输出由下标开始,到非字母结束 即为最长单词*/int main(){int ifzm(char c);int longest(char string[]);char str[50];int i;//i用于接收开始下标printf("输入一行字
·
谭浩强C语言第五版的一些课后习题
第七章 第十题
输入一行字符,输出最长的单词
/*
实现思路,一个判断是否为字符串的函数 一个返回最长字符串初始下标的函数
在main里输出由下标开始,到非字母结束 即为最长单词
*/
int main(){
int ifzm(char c);
int longest(char string[]);
char str[50];
int i;//i用于接收开始下标
printf("输入一行字母:\n");
gets(str);
for(i=longest(str);ifzm(str[i]);i++){
printf("%c",str[i]);
}
printf("\n");
return 0;
}
int ifzm(char c){//用于判断一个字符是否是字母
if((c>='a'&&c<='z')||(c>='A'&&c<='Z')){
return (1);
}else{
return (0);
}
}
/*
求最长的单词开始下标的方法:
从字母开始,到非字母结束为一个单词,记录其长度和开始下标
到非字母时,判断和当前记录的长度作比较,若大于 则把下标重新赋值,flag也重新赋值
*/
int longest(char string[]){
int maxindex;//用于返回下标
int index;//记录当前下标
int i,flag=1; //
int len=0;//当前长度
int maxlen=0;//最大长度
for(i=0;i<=strlen(string);i++){ //到总长度+1(即到'\0')才结束
if(ifzm(string[i])){ //首先判断是不是字母
if(flag){ //用flag记录字母开始了
index=i;
len++;
flag=0;
}else{//首字母之后 记录字母个数
len++;
}
}else{ //不是字母 开始比较
flag=1;//先将flag重新置为1 使得下次首字母能记录位置
if(len>maxlen){
maxindex=index;
maxlen=len;
}
len=0;//将长度重置
}//else
}//for
printf("最长长度为:%d\n",maxlen);
return maxindex;
}
更多推荐



所有评论(0)