用c语言编程 写一个函数,输入一行字符,将此字符串中最长的单词输出 请高人指教哪里有问题,如何改
#include<stdio.h>#include<string.h>voidmain(){charstr[100];voidf(charstr[]);printf("请...
#include <stdio.h>
#include <string.h>
void main()
{char str[100];
void f(char str[]);
printf("请输入一行字符串:\n");
gets(str);
f(str);}
void f(char str[])
{int x=0,y,i,j,m1=0,m2;
char string1[20],string2[20];
for(i=0;i<strlen(string1);i++)
{if(str[i]==' ') x=x+1;}
for(i=0;i<strlen(string1);i++)
{if(str[i]!=' ') m1=m1+1;}
for(y=1;y<=x;y++)
{m2=0;
for(i=m1+y;i<strlen(string1);i++)
{if(str[i]!=' ') {m2=m2+1;
m1=m1+m2;
for(j=0;j<20;j++) string2[j]=str[i];}
if(strlen(string1)<m2) for(j=0;j<m2;j++) string1[i]=string2[i]; }
else break;}}
printf("the longgest word is %s",string1);
} 展开
#include <string.h>
void main()
{char str[100];
void f(char str[]);
printf("请输入一行字符串:\n");
gets(str);
f(str);}
void f(char str[])
{int x=0,y,i,j,m1=0,m2;
char string1[20],string2[20];
for(i=0;i<strlen(string1);i++)
{if(str[i]==' ') x=x+1;}
for(i=0;i<strlen(string1);i++)
{if(str[i]!=' ') m1=m1+1;}
for(y=1;y<=x;y++)
{m2=0;
for(i=m1+y;i<strlen(string1);i++)
{if(str[i]!=' ') {m2=m2+1;
m1=m1+m2;
for(j=0;j<20;j++) string2[j]=str[i];}
if(strlen(string1)<m2) for(j=0;j<m2;j++) string1[i]=string2[i]; }
else break;}}
printf("the longgest word is %s",string1);
} 展开
4个回答
展开全部
#include "stdio.h"
#include <string.h>
void main()
{
void PrintLongWord(char arry[]);
char arr[1000];
char c;
int flag = 1;
while(1)
{
printf("请输入字符串:");
gets(arr);
PrintLongWord(arr);
printf("是否继续?(Y/N):");
scanf("%c",&c);
if(c == 'n'||c == 'N')
break;
}
}
void PrintLongWord(char arry[])
{
int i,x = 0,max = 0,j,y;
char c;
for(i = 0;i <= (int)strlen(arry);i++)
{
if((c = arry[i]) )
{
if((c >= 'a' && c <= 'z')||(c >= 'A' && c <= 'Z'))
{
x++;
}
else
{
if(x > max)
{
max = x;
y = i;
j = y - x;
x = 0;
}
}
}
else
{
if(x > max)
{
max = x;
y = i;
j = y - x;
}
}
}
printf("输出最长单词:");
for(i = j;i < y;i++)
printf("%c",arry[i]);
printf("\n");
}
去年的作业题,希望对你有帮助
#include <string.h>
void main()
{
void PrintLongWord(char arry[]);
char arr[1000];
char c;
int flag = 1;
while(1)
{
printf("请输入字符串:");
gets(arr);
PrintLongWord(arr);
printf("是否继续?(Y/N):");
scanf("%c",&c);
if(c == 'n'||c == 'N')
break;
}
}
void PrintLongWord(char arry[])
{
int i,x = 0,max = 0,j,y;
char c;
for(i = 0;i <= (int)strlen(arry);i++)
{
if((c = arry[i]) )
{
if((c >= 'a' && c <= 'z')||(c >= 'A' && c <= 'Z'))
{
x++;
}
else
{
if(x > max)
{
max = x;
y = i;
j = y - x;
x = 0;
}
}
}
else
{
if(x > max)
{
max = x;
y = i;
j = y - x;
}
}
}
printf("输出最长单词:");
for(i = j;i < y;i++)
printf("%c",arry[i]);
printf("\n");
}
去年的作业题,希望对你有帮助
展开全部
解决了编译问题。
#include <stdio.h>
#include <string.h>
void main()
{
char str[100];
void f(char str[]);
printf("请输入一行字符串:\n");
gets(str);
f(str);
gets(str);
}
void f(char str[])
{
int x=0,y,i,j,m1=0,m2;
char string1[20],string2[20];
for(i=0;i<strlen(string1);i++) // string1没有赋值,长度肯定为0,没有必要计算,不知道你要做什么
{
if(str[i]==' ')
{
x=x+1;
}
}
for(i=0;i<strlen(string1);i++) // string1没有赋值,长度肯定为0,没有必要计算,不知道你要做什么
{
if(str[i]!=' ')
{
m1=m1+1;
}
}
for(y=1;y<=x;y++)
{
m2=0;
for(i=m1+y;i<strlen(string1);i++) // string1没有赋值,长度肯定为0,没有必要计算,不知道你要做什么
{
if(str[i]!=' ')
{
m2=m2+1;
m1=m1+m2;
for(j=0;j<20;j++)
{
string2[j]=str[i];
}
}
if(strlen(string1)<m2)
{
for(j=0;j<m2;j++)
{
string1[i]=string2[i];
}
}
else
{
break;
}
}
}
printf("the longgest word is %s",string1);
}
#include <stdio.h>
#include <string.h>
void main()
{
char str[100];
void f(char str[]);
printf("请输入一行字符串:\n");
gets(str);
f(str);
gets(str);
}
void f(char str[])
{
int x=0,y,i,j,m1=0,m2;
char string1[20],string2[20];
for(i=0;i<strlen(string1);i++) // string1没有赋值,长度肯定为0,没有必要计算,不知道你要做什么
{
if(str[i]==' ')
{
x=x+1;
}
}
for(i=0;i<strlen(string1);i++) // string1没有赋值,长度肯定为0,没有必要计算,不知道你要做什么
{
if(str[i]!=' ')
{
m1=m1+1;
}
}
for(y=1;y<=x;y++)
{
m2=0;
for(i=m1+y;i<strlen(string1);i++) // string1没有赋值,长度肯定为0,没有必要计算,不知道你要做什么
{
if(str[i]!=' ')
{
m2=m2+1;
m1=m1+m2;
for(j=0;j<20;j++)
{
string2[j]=str[i];
}
}
if(strlen(string1)<m2)
{
for(j=0;j<m2;j++)
{
string1[i]=string2[i];
}
}
else
{
break;
}
}
}
printf("the longgest word is %s",string1);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
strlen(string1)这是没有意义的,因为strlen测试的是字符数组有效字符的长度,你的string1都没初始化,系统默认为0,所以strlen (string1)等于0
更多追问追答
追问
其实这段代码里有好多错误,我不知道怎么改
追答
要不我重写一个给你参考吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
#include <string.h>
int main(void)
{
int i, num = 0, max = 0;
char str[128];
printf("please input a string:\n");
gets(str);
for (i = 0; str[i] != '\0'; i++)
{
if (str[i] != ' ')
{
num++;
}
else
{
if (num > max)
{
max = num;
}
num = 0;
}
}
if (num > max)
{
max = num;
}
printf("\nmax_length of the string is: %d\n", max);
return 0;
}
#include <string.h>
int main(void)
{
int i, num = 0, max = 0;
char str[128];
printf("please input a string:\n");
gets(str);
for (i = 0; str[i] != '\0'; i++)
{
if (str[i] != ' ')
{
num++;
}
else
{
if (num > max)
{
max = num;
}
num = 0;
}
}
if (num > max)
{
max = num;
}
printf("\nmax_length of the string is: %d\n", max);
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询