C语言编程:写一个函数,输入一行字符,将此字符串中最长的单词输出.

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言编程:写一个函数,输入一行字符,将此字符串中最长的单词输出.相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
#include<string.h>
char max(char s[])

int sum=0,m=0,n=0,i;
for(i=0;i<=strlen(s);i++)

if(s[i]!=" ")sum++;
else

if(m<sum)

m=sum;
n=i-1;

sum=0;


for(i=n-m+1;i<=n;i++)

printf("%c",s[i]);


int main()

char str[100];
printf("请输入一行字符:\n");
gets(str);
printf("\n此字符串中最长的单词是:\n");
max(str);
printf("\n");
return 0;

求大神帮忙改错。

#include

<stdio.h>

void

main()

int

a,b,c;

printf("请输入3个整数:");

scanf("%d%d%d",&a,&b,&c);

if((a>b)

&&

(a<c)

||

(a<b)

&&

(a>c))

printf("\\n

%d

为位于中间的数\\n",a);

if((b>a)

&&

(b<c)

||

(b<a)

&&

(b>c))

printf("\\n

%d

为位于中间的数\\n",b);

if((c>b)

&&

(c<a)

||

(c<b)

&&

(c>a))

printf("\\n

%d

为位于中间的数\\n",c);

这个是几个数中输出最大的数的!

扩展资料:

字符串在存储上类似字符数组,它每一位单个元素都是能提取的,字符串的零位是它的长度,如s[0]=10,这提供给我们很多方便,例如高精度运算时每一位都能转化为数字存入数组。

通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。

参考资料来源:百度百科-字符串

参考技术A #include<stdio.h>
#include<string.h>
void
max(char
s[])
//函数返回值改为void

int
sum=0,m=0,n=0,i;
for(i=0;i<=strlen(s);i++)

if(s[i]!='
')
//改为if(s[i]!=‘
’)
即是字符而不是字符串
sum++;
else

if(m<sum)

m=sum;
n=i-1;

sum=0;


for(i=n-m+1;i<=n;i++)//
for条件控制错误,改为for(i=n-m+1;i<=m;i++)

printf("%c",s[i]);


int
main()

char
str[100];
printf("请输入一行字符:\n");
gets(str);
printf("\n此字符串中最长的单词是:\n");
max(str);
printf("\n");
return
0;
参考技术B 字符串比较啊,用strcmp(),需要string.h的头文件,用法可以看网上,手机不方便给你写代码,请见谅 参考技术C 你这个是作业吧??
算了,给你一个方法,你自己琢磨吧,直接给你答案太对不起你老师了!
#include
<stdio.h>
void
main()

int
a,b,c;
printf("请输入3个整数:");
scanf("%d%d%d",&a,&b,&c);
if((a>b)
&&
(a<c)
||
(a<b)
&&
(a>c))
printf("\n
%d
为位于中间的数\n",a);
if((b>a)
&&
(b<c)
||
(b<a)
&&
(b>c))
printf("\n
%d
为位于中间的数\n",b);
if((c>b)
&&
(c<a)
||
(c<b)
&&
(c>a))
printf("\n
%d
为位于中间的数\n",c);

这个是几个数中输出最大的数的!
希望对你有帮助,还是自己琢磨琢磨对你有好处~
参考技术D #include<stdio.h>
#include<string.h>
void max(char s[])
int sum=0,m=0,n=0,i;
for(i=0;i<=strlen(s);i++)
if(s[i]!=' ')
sum++;
else

if(m<sum)
m=sum;
n=i-1;
sum=0;


for(i=n-m+1;i<=n;i++)
printf("%c",s[i]);


int main()
char str[100];
printf("请输入一行字符:\n");
gets(str);
printf("\n此字符串中最长的单词是:\n");
max(str);
printf("\n"); return 0;

//max()函数if(s[i]!=" ")改为if(s[i]!=‘ ’)
//max()函数返回值改为void本回答被提问者和网友采纳

写一个函数,输入一行字符,将此字符串中最长的单词输出

#include<stdio.h>
#include<string.h>
void main()

void longwords(char str[]);
char str1[80];
int i;
printf("please input a string:\n");
gets(str1);
i=strlen(str1);
str1[i]=' ';
str1[i+1]='\0';
longwords(str1);


void longwords(char str[])

int maxlen,len,i,j,src1=0,src2=0;
maxlen=len=0;
for(i=0,j=0;str[i]!='\0';i++,j++)

if(str[i]=' ')

len=j;
if(len>maxlen)

maxlen=len;
src1=src2;

j=0;
src2=i+1;


for(i=src1;str[i]!=' ';i++)
printf("%c",str[i]);



//为什么我的这个程序没有输出结果

#include <stdio.h>

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("\\n");

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--&gt;m域宽,打印出来以后,在控制台上,显示m位;

如果要打印的数的位数如果超过我们设定m则原样输出;

如果要打印的数的位数如果小于设定的位数,则补空白,具体如下:

如果m为正数,则左对齐(左侧补空白);

如果m为负数,则右对齐(右侧补空白)。

2、转义字符

如果想输出字符"%",则应该在“格式控制”字符串中用连续两个%表示。

如:printf("%f%%",1.0/3);输出结果:0.333333%。

参考技术A 首先在longwords函数里有个笔误:
if(str[i]=' ')
应该改为
if(str[i]==' ')

其次楼主在main()中把输入的字符串的结尾符给换成空格了,那么怎么判断字符串在哪里结尾?

对于这种问题,一般由两个步骤反复循环直到字符串末尾。
1. 忽略空格,直到找到字符(非空格,单词开始)
2. 继续向下,直到找到空格(单词结束)

尽量保存楼主的原文,改后如下。编译运行正常。
#include<stdio.h>
#include<string.h>
void main()

void longwords(char str[]);
char str1[80];
int i;
printf("please input a string:\n");
gets(str1);
i=strlen(str1);
//str1[i]=' ';
//str1[i+1]='\0';
longwords(str1);


void longwords(char str[])

int maxlen,len,i,j,src1=0,src2=0;
maxlen=len=0;

j=strlen(str);
for(i=0;;i++)

while(str[i]==' ') i++;//忽略空格,直到找到单词开始
if(i==j)
break;
for(src2=i;i<j;i++)//单词开始,向下找

if(str[i]==' ') //直到空格(单词结束)

len=i-src2;
if(len>maxlen)

maxlen=len;
src1=src2;

break;


if(i==j)break;
//继续循环找下一个单词
;
for(i=src1;str[i]!=' ';i++)
printf("%c",str[i]);
追问

谢谢哈,晚上自己看了下找到了,加个等号就对了

本回答被提问者采纳

以上是关于C语言编程:写一个函数,输入一行字符,将此字符串中最长的单词输出.的主要内容,如果未能解决你的问题,请参考以下文章

一个c语言问题,编写一个函数,从键盘输入一行字符,将此字符串中最长和最短的单词输出

c语言输入一行字符将此字符串中最长的单词输出

c++:写一函数,输入一行字符,将此字符串中最长的单词输出。

C语言题目:输入一行字符,将此字符串中最大的单词输出

编写一个函数,输和一行字符,将此字符串中最长的单词输出

输入一行字符,将此字符串中最长的单词输出