谭浩强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; 
}

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐