用c语言写一个函数,输入一行字符,将此字符串中最长的单词输出。要有详细解释

作者&投稿:员锦 (若有异议请与网页底部的电邮联系)
写一个函数,输入一行字符,将此字符串中最长的单词输出~

#include
void main(){
void maxLen(char str[50]);
char str[50];
gets(str);
maxLen(str);
}
void maxLen(char str[50]){
int i,j=1,t=-1,start=0,m;
int maxNum(int num[50]);
int num[50]={0};
num[0]=-1;//num[1]放第一个单词的长度,num[2]放第二个单词的长度,。。。
for(i=0;i<50;i++){
if(str[i]==' ' || str[i]=='\0') {num[j]=i-t-1;t=i;j++;
}
}
//找出num[j]最大时的下标m
m=maxNum(num);
//计算最长字符串的开始位置
for(i=1;i<m;i++){
start += (num[i]+1);
}
//输出最长字符串
for(i=start;i<start+num[m];i++){
printf("%c",str[i]);
}
printf("
");
}
int maxNum(int num[50]){
int i,j;
int max=num[0];//num[0]=-1
for(i=0; i<50; i++){
if(max<num[i]){max=num[i]; j=i;}
}
return (j);
}

扩展资料:printf函数使用注意事项
1、域宽
%d:按整型数据的实际长度输出。
如果想输出指定宽度可以指定域宽,%md-->m域宽,打印出来以后,在控制台上,显示m位;
如果要打印的数的位数如果超过我们设定m则原样输出;
如果要打印的数的位数如果小于设定的位数,则补空白,具体如下:
如果m为正数,则左对齐(左侧补空白);
如果m为负数,则右对齐(右侧补空白)。
2、转义字符
如果想输出字符"%",则应该在“格式控制”字符串中用连续两个%表示。
如:printf("%f%%",1.0/3);输出结果:0.333333%。

#include char *longest(char *p){ char *t,max,n; while(*p==' ') p++; for(max=n=0,t=p;*p;p++) if(*p!=' ') n++; else{ if(max<=n) max=n,t=p-n; n=0; } return max<=n ? p-n : t;}int main(void){ char str[1000],*p; scanf("%[A-Z a-z]",str); for(p=longest(str);*p && *p!=' ';printf("%c",*p++)); printf("
"); return 0;}

#include <iostream>
void main()
{
int word(char c);
int longest(char str[]);
int i;
char str[80];
printf("输入一行字符串\n\n");
gets(str);
printf("\n\n最长的单词为:\n\n");
for(i=longest(str);word(str[i]);i++)
printf("%c",str[i]);
printf("\n");
}
int word(char c)
{
if((c>='a'&&c<='z')||(c>='A'&&c<='Z')) return 1;
else return 0;
}

int longest(char str[])【这个函数几乎完全看不懂 望逐句详细解释其逻辑】
{
int i,flag=1,len=0,point,max_len=0,max_point;
for(i=0;i<=strlen(str);i++)//解析每个字符
{
if(word(str[i])) //是英文字母的话
{
if(flag==1) //成立的话说明这个英文字母是单词的第一个
{
point=i; //单词第一个找到后改变标志
flag=0;
}
else len++; //开始对这个单词长度进行累加
}
else //非英文字母的话
{
flag=1; //等待第一个英文字母的出现,所以flag=1(要是下一个是英文字母的话就能执行上面的if)
if(len>max_len)//之前累加的单词长度是否比上一个单词更长(第一次的话max_len初始化为0,len必大于max_len)
{
max_len=len;//将单词长度保存下来
max_point=point;//将最长单词的第一个英文字母在字符串中的位置保存下来
}
len=0;
}
}
return (max_point);
}

给你个思路。将字符串以空格为分隔符,将子字符串放入集合或数组,然后迭代,获取各成员的长度。我学java的,C不是很懂、


在c语言中自定义了一个函数,在main中调用时提示找不到标识符,怎么...
把定义的函数放在,main函数之前即可。自定义的函数需要声明在调用之前,比如说在main函数里调用自定义的fun(),则fun()的方法体需要写在main函数之前。在C语言中的执行总是从main函数开始的,无论main函数在哪个位置都肯定从它开始。如果你定义的函数在main函数之后。而且在main函数前没有进行该调用函数...

C语言:写一个判断水仙花数的函数,在主函数中输入一个3位的整数,输出其...
include<stdio.h> int isflower(int x) \/\/是 返回1,不是返回0.{ if(x<100 || x>999) \/\/不是三位数 { printf("Input error");return 0;} int a,b,c;a = x%10; \/\/ 个位上的数 b =x\/10%10; \/\/十位上的数 c = x\/100; \/\/百位上的数 if(a*a*a + b*b*b...

C语言编程,写三个函数?
include <stdio.h> float max(float a[]){ int i;float m = a[0];for(i=1;i<10;i++){ if(m<a[i])m = a[i];} return m;} float min(float a[]){ int i;float m = a[0];for(i=1;i<10;i++){ if(m>a[i])m = a[i];} return m;} float aver(float a[]...

C语言中函数的定义格式是什么,函数原型声明的语法格式?
下面举例说明两者的语法格式:include<stdio.h>int fun(int a, int b); \/\/ 函数的声明void main(){ int x=1, y=2; int c; c = fun(x+y);}\/\/ 下面的fun函数就是函数的定义int fun(int a, int b){ return a+b;}注:如果被调函数(上例中为fun函数)写在调用处...

C语言题 编写一个主函数,计算并输出表达式1+2(平方)3(平方)+...+10...
include<stdio.h> main(){int i,sum=0;for(i=2;i<=10;i++){sum+=i*i;} printf("%d",1+sum);}

C语言编程:设计一个c函数,对输入的a,b两个整形函数返回其中的最小数...
include<stdio.h> main(){ int a=0,b=0,min;printf("请输入a:");scanf("%d",&a);printf("请输入b:");scanf("%d",&b);if(a

用C语言写一个函数,要求输入为1时,输出为2;输入为2时,输出为1.
include<stdio.h> main(){ int x;scanf("%d",&x);printf("%d\\n",(x==1)?2:1);}

急求一个c语言定义函数的程序,有一个参数但无返回值,实现输出一行n
函数的调用值把一些表达式作为参数传递给函数。函数定义中的参数是形式参数,函数的调用者提供给函数的参数叫实际参数。在函数调用之前,实际参数的值将被拷贝到这些形式参数中。2.参数传递 先看一个例子:void a(int); \/*注意函数声明的形式*\/ main(){ int num;scanf("%d",&num);a(num); ...

C语言程序题: 1、编写一个求n!的函数fact(n),要求fact函数分别用递归...
1。include "stdio.h"\/\/#define RECURSION 1 ifdef RECURSION long fact(int n){ if(n<1) return 1;return n*fact(n-1);} else long fact(int n){ long t=1;for(int i=2;i<=n;i++)t*=i;return t;} endif main(){ long s=0;for(int i=1;i<=10;i++)s+=fact(i);p...

C语言。有一个函数y=x(x<1),y=2x-1(1<=x<10),y.=3x-11(x>=10)。写...
有一个函数y=x(x<1),y=2x-1(1<=x=10)。一段程序如下:1、函数(function)表示每个输入值对应唯一输出值的一种对应关系。这种关系使一个集合里的每一个元素对应到另一个(可能相同的)集合里的唯一元素。2、函数f中对应输入值的输出值x的标准符号为f(x)。包含某个函数所有的输入值的集合被...

马龙县15889308144: 【C语言】写一个函数,用选择法对输入的一行字符按照由小到大的顺序排列. -
貊的喜欣: #includevoid main() {printf(" 请输入字符串:\n"); char szBuf[512] = {0}; for (int i = 0; i {for (int j = i + 1; j {if (szBuf[j] > szBuf[j+1]){char tmp = szBuf[j];szBuf[j] = szBuf[j+1];szBuf[j+1] = tmp;}}} printf("排序后的字符串:%s\n", szBuf); }

马龙县15889308144: c语言编程 写一个函数,输入一行字符,将此字符串中最长的单词输出 -
貊的喜欣: 楼上的何必不指出思路啊! 分析:首先输入的是一行字符吧,而要找出最长的单词,首先要做的就是统计出每个单词吧,统计单词可以根据空格来判断是否为一个单词,当不是空格时,变量累加(这个就是单词的长度啊),储存起来,开始下一个单词的统计!最后把每个单词的长度作比较,求出最大的一个就行了,在把这个长度的单词弄出来! 在编程之前,首先明确目标,理清思路,从上往下把需要的都写出来,这样长期的积累就能写出好程序了,祝愿楼主学有所成! PS:仅代表个人观点,如有错误,谢谢指出!还有楼主要找的是最长的单词,又不是找到ASC||最大的字母,不住楼上的例题,我有点理解不了,寡闻了吧,我!

马龙县15889308144: c语言编程 写一个函数,输入一行字符,将此字符串中最长的单词输出.用最简单的方法 -
貊的喜欣: #include "string.h" #include "ctype.h" main() { char str[50]; char str1[50][20]; char str2[20]; int i,j,t;gets(str);j=0,t=0; for(i=0;str[i];i++) /*提取字符串中的单词,但是输入时每个单词之间只允许*/ { /*有一个字符如空格,逗号只有句末才能用句号*/...

马龙县15889308144: 一个c语言问题,编写一个函数,从键盘输入一行字符,将此字符串中最长和最短的单词输出 -
貊的喜欣://#include "stdafx.h"//vc++6.0加上这一行. #include "stdio.h" #include "string.h" int main(void){char str[100][21];int i,j,lmax,lmin,ln,imax,imin;printf("Type a line text( # end)...\nstr=");for(i=0;i<100;i++)if(scanf("%s",str[i]),str[i]...

马龙县15889308144: 用C语言编程:输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数. -
貊的喜欣: #include <stdio.h> void main() {char line[30];int i,count1=0,count2=0,count3=0,count4=0;printf("\n请输入一行字符: ");gets(line);i=0;while(line[i]!='\0'){if(((line[i]>=97) && (line[i]<=122))||((line[i]>=65) && (line[i]<=90))){count1++;}...

马龙县15889308144: 用c语言写一个函数,输入一行字符,将此字符串中最长的单词输出.要有详细解释
貊的喜欣: #include <iostream> void main() { int word(char c); int longest(char str[]); int i; char str[80]; printf("输入一行字符串\n\n"); gets(str); printf("\n\n最长的单词为:\n\n"); for(i=longest(str);word(str[i]);i++) printf("%c",str[i]); printf("\n"); } int word(...

马龙县15889308144: C语言编写函数,从屏幕输入一行字符将所有的大写字母转换为小写字母,所有的小写字母转换为大写字母 -
貊的喜欣: #include #include int main() { int i, len; char str[100]; gets(str); len=strlen(str); for (i = 0; iif (isalpha(str[i])) { str[i] ^= 32; } puts(str); return 0; } 其中用到了一个函数isalpha(),作用是判断参数是否为英文字母.当参数为英文字母a-z或A-Z时,返回...

马龙县15889308144: c语言函数解 答输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数 求下面解答!!1 -
貊的喜欣: //楼上太复杂了吧 void char_stat(char *str,int *counter ) {char ch,i;for(i=0;str[i]!='\0';i++){if(str[i]>=65&&str[i]<=90)counter[0]++;else if(str[i]>=97&&str[i]<=122)counter[0]++;else if(str[i]>=48&&str[i]<=57)counter[2]++;else if(str[i]==32)counter[...

马龙县15889308144: c语言写一个函数 输入一行字符 将最长单词输出 求编程还有解释 -
貊的喜欣: //#include "stdafx.h"//If the vc++6.0, with this line.#include "stdio.h"#include "string.h" int main(void){ char str[500][21]; int n,i,k,ln,lmax; printf("Please enter a line of text('#' end):\n"); for(n=0;;n++)//输入一行单词2113和空格组成5261的...

马龙县15889308144: C语言 输入一行字符,分别统计求出其中英文字母、空格、数字和其他字符的个数并输出结果 -
貊的喜欣: ||#include "stdio.h" void main() {char s;int i=0,j=0,k=0,m=0,da=0,xiao=0;printf("please input the string\n");while((s=getchar())!='\n') /*循环从键盘读入字符直到一行结束(输入回车)*/{if((s='a')||(s'A')) {if(s='A')da++;if(s='a')xiao++;i++; ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网