#include <stdio.h>
#include <string.h>
int main()
{ void cd(char str_1[]); //声明函数
char str[100];
printf("请输入一串字符:\n");
gets(str);
cd(str); //调用函数
return 0;
}
void cd(char str_1[]) //定义函数
{ int i,m,length=0;
for(i=0;(size_t)i<strlen(str_1);i++)//size_t don't know
if (str_1[i]>='a'&&str_1[i]<='z'||str_1[i]>='A'&&str_1[i]<='Z')
m=i; //判断第几个字符开始是字母
for( ;(size_t)i<strlen(str_1);i++)
if (str_1[i]<'a'&&str_1[i]>'z'||str_1[i]<'A'&&str_1[i]>'Z')
if ((i-m)>length)
length=i-m; //比较单词长度
if( ;m<i;m++) //输出最长单词
printf("%c",str_1[m]);
}
功能:输入一串字符,输出最长的单词
①调试 在最后一个IF 出错了,不知道怎么错了,
②还有strlen 返回无符号整型
我定义 int i i 不就是个无符号整型吗?
为什么下面比较时前面要加(size_t)
for(i=0;(size_t)i<strlen(str_1);i++)
谢谢~
14 个解决方案
#1
if( ;m<i;m++) //输出最长单词
printf("%c",str_1[m]);
这里应该是
for( ;m<i;m++)吧
int是整形
size_t是无符号整形,相当于unsigned int
printf("%c",str_1[m]);
这里应该是
for( ;m<i;m++)吧
int是整形
size_t是无符号整形,相当于unsigned int
#2
楼主逻辑有点问题啊,
#include <stdio.h>
#include <string.h>
int main()
{ void cd(char str_1[]); //声明函数
char str[100];
printf("请输入一串字符:\n");
gets(str);
cd(str); //调用函数
return 0;
}
void cd(char str_1[]) //定义函数
{ int i,m,length=0;
for(i=0;(size_t)i<strlen(str_1);i++)//size_t don't know
if (str_1[i]>='a'&&str_1[i]<='z'||str_1[i]>='A'&&str_1[i]<='Z')
{
m=i; //判断第几个字符开始是字母
break; //这个地方应该遇到字母就跳出for循环
}
for( ;(size_t)i<strlen(str_1);i++)
if (str_1[i]<'a'&&str_1[i]>'z'||str_1[i]<'A'&&str_1[i]>'Z')
if ((i-m)>length)
length=i-m; //比较单词长度
for( ;m<i;m++) //输出最长单词
printf("%c",str_1[m]);
printf("\nend\n");
}
#3
嗯嗯 这样改后就无错误,
但貌似 算法有问题。。。
但貌似 算法有问题。。。
#4
我没太看懂你的算法是什么意思
#5
int == (unsigned int || signed int)
#6
就是 要求 输入一串字符,然后输出字符里面长度最长的单词。。。
我是想
先比较一串字符里面哪个单词最长
然后输出。。。
#7
哈哈 你的头像好给力啊~
呃,,,调试后运行结果不对呀。。。
比如:~!@ i am a boy!
我写的程序是想 挨个判断
确定boy 最长 然后输出,
您在给看看 我哪里错了,谢谢
呃,,,调试后运行结果不对呀。。。
比如:~!@ i am a boy!
我写的程序是想 挨个判断
确定boy 最长 然后输出,
您在给看看 我哪里错了,谢谢
#8
我给你写了个,自己看看
int main()
{
void cd(char str_1[]); //声明函数
char str[100];
printf("请输入一串字符:\n");
gets(str);
cd(str); //调用函数
return 0;
}
void cd(char str_1[]) //定义函数
{
int i,length=0;
char str[100][100];
char maxchar[100]={"0"};
int max=0;
int m=0,n=0;
for(i=0;(size_t)i<strlen(str_1);i++)//size_t don't know
if (str_1[i]>='a'&&str_1[i]<='z'||str_1[i]>='A'&&str_1[i]<='Z')
{
str[m][n++]=str_1[i];
}
else
{
if(n>max)
max=m;
str[m][n]='\0';
m++;
n=0;
}
printf("%s",str[max]);
printf("\nend\n");
}
#9
输入单词 如asds12saaadd
streln()单词长度后 是字母的i++ 然后定义一个max变量和i比较 i遇到非字母字符时候清0 max初始化无限小
streln()单词长度后 是字母的i++ 然后定义一个max变量和i比较 i遇到非字母字符时候清0 max初始化无限小
#10
size_t是无符号类型,相当于unsigned int,而int可与unsigned int不相当啊
#11
有点深奥。。。
麻烦能帮我看下 我的算法哪里错了吗?
麻烦能帮我看下 我的算法哪里错了吗?
#12
语法错误可以根据编译器的提示改下 语言语法就那样 语法熟悉了记事本照样写程序
今天还得写3000字论文呢 偷偷来坛子看看的
今天还得写3000字论文呢 偷偷来坛子看看的
#14
嗯嗯 谢谢~
#1
if( ;m<i;m++) //输出最长单词
printf("%c",str_1[m]);
这里应该是
for( ;m<i;m++)吧
int是整形
size_t是无符号整形,相当于unsigned int
printf("%c",str_1[m]);
这里应该是
for( ;m<i;m++)吧
int是整形
size_t是无符号整形,相当于unsigned int
#2
楼主逻辑有点问题啊,
#include <stdio.h>
#include <string.h>
int main()
{ void cd(char str_1[]); //声明函数
char str[100];
printf("请输入一串字符:\n");
gets(str);
cd(str); //调用函数
return 0;
}
void cd(char str_1[]) //定义函数
{ int i,m,length=0;
for(i=0;(size_t)i<strlen(str_1);i++)//size_t don't know
if (str_1[i]>='a'&&str_1[i]<='z'||str_1[i]>='A'&&str_1[i]<='Z')
{
m=i; //判断第几个字符开始是字母
break; //这个地方应该遇到字母就跳出for循环
}
for( ;(size_t)i<strlen(str_1);i++)
if (str_1[i]<'a'&&str_1[i]>'z'||str_1[i]<'A'&&str_1[i]>'Z')
if ((i-m)>length)
length=i-m; //比较单词长度
for( ;m<i;m++) //输出最长单词
printf("%c",str_1[m]);
printf("\nend\n");
}
#3
嗯嗯 这样改后就无错误,
但貌似 算法有问题。。。
但貌似 算法有问题。。。
#4
我没太看懂你的算法是什么意思
#5
int == (unsigned int || signed int)
#6
就是 要求 输入一串字符,然后输出字符里面长度最长的单词。。。
我是想
先比较一串字符里面哪个单词最长
然后输出。。。
#7
哈哈 你的头像好给力啊~
呃,,,调试后运行结果不对呀。。。
比如:~!@ i am a boy!
我写的程序是想 挨个判断
确定boy 最长 然后输出,
您在给看看 我哪里错了,谢谢
呃,,,调试后运行结果不对呀。。。
比如:~!@ i am a boy!
我写的程序是想 挨个判断
确定boy 最长 然后输出,
您在给看看 我哪里错了,谢谢
#8
我给你写了个,自己看看
int main()
{
void cd(char str_1[]); //声明函数
char str[100];
printf("请输入一串字符:\n");
gets(str);
cd(str); //调用函数
return 0;
}
void cd(char str_1[]) //定义函数
{
int i,length=0;
char str[100][100];
char maxchar[100]={"0"};
int max=0;
int m=0,n=0;
for(i=0;(size_t)i<strlen(str_1);i++)//size_t don't know
if (str_1[i]>='a'&&str_1[i]<='z'||str_1[i]>='A'&&str_1[i]<='Z')
{
str[m][n++]=str_1[i];
}
else
{
if(n>max)
max=m;
str[m][n]='\0';
m++;
n=0;
}
printf("%s",str[max]);
printf("\nend\n");
}
#9
输入单词 如asds12saaadd
streln()单词长度后 是字母的i++ 然后定义一个max变量和i比较 i遇到非字母字符时候清0 max初始化无限小
streln()单词长度后 是字母的i++ 然后定义一个max变量和i比较 i遇到非字母字符时候清0 max初始化无限小
#10
size_t是无符号类型,相当于unsigned int,而int可与unsigned int不相当啊
#11
有点深奥。。。
麻烦能帮我看下 我的算法哪里错了吗?
麻烦能帮我看下 我的算法哪里错了吗?
#12
语法错误可以根据编译器的提示改下 语言语法就那样 语法熟悉了记事本照样写程序
今天还得写3000字论文呢 偷偷来坛子看看的
今天还得写3000字论文呢 偷偷来坛子看看的
#13
希望楼主注重算法 推荐你一个博客
http://blog.csdn.net/v_JULY_v 字符串、数据结构部分讲解的非常好
#14
嗯嗯 谢谢~