c语言 题目是 写一个函数 输入一行字符 将此字符串中最长的单词输出
我这个是将字符串中所有最长单词都输出(可能不止一个)大概思路是新建一个数组a[],数组值是字符串中空格的下标,求得数组相邻两数之差的最大值就是原字符串相邻两空格长度最大值...
我这个是将字符串中所有最长单词都输出(可能不止一个)大概思路是新建一个数组a[],数组值是字符串中空格的下标,求得数组相邻两数之差的最大值就是原字符串相邻两空格长度最大值,这个值是k。然后,问题来了。我的思路是:再次求数组中相邻两数之差,如果是k,那么就在原字符串中从a[m-1]+1输出到a[m],这两个值相差k-1(包括单词右端的空格),必定是最长的。但是..程序编译没问题,运行的话,无论输什么按回车,都是程序崩溃。而把最后这一部的for循环:for(o=a[m-1]+1;o<=a[m];o++)printf("%s",s[o]);删掉就不崩溃但是什么都不输出..
求教大神 到底哪里出错了... 展开
求教大神 到底哪里出错了... 展开
4个回答
展开全部
楼上的何必不指出思路啊!
分析:首先输入的是一行字符吧,而要找出最长的单词,首先要做的就是统计出每个单词吧,统计单词可以根据空格来判断是否为一个单词,当不是空格时,变量累加(这个就是单词的长度啊),储存起来,开始下一个单词的统计!最后把每个单词的长度作比较,求出最大的一个就行了,在把这个长度的单词弄出来!
在编程之前,首先明确目标,理清思路,从上往下把需要的都写出来,这样长期的积累就能写出好程序了,祝愿楼主学有所成!
PS:仅代表个人观点,如有错误,谢谢指出!
还有楼主要找的是最长的单词,又不是找到ASC||最大的字母,不住楼上的例题,我有点理解不了,寡闻了吧,我!
分析:首先输入的是一行字符吧,而要找出最长的单词,首先要做的就是统计出每个单词吧,统计单词可以根据空格来判断是否为一个单词,当不是空格时,变量累加(这个就是单词的长度啊),储存起来,开始下一个单词的统计!最后把每个单词的长度作比较,求出最大的一个就行了,在把这个长度的单词弄出来!
在编程之前,首先明确目标,理清思路,从上往下把需要的都写出来,这样长期的积累就能写出好程序了,祝愿楼主学有所成!
PS:仅代表个人观点,如有错误,谢谢指出!
还有楼主要找的是最长的单词,又不是找到ASC||最大的字母,不住楼上的例题,我有点理解不了,寡闻了吧,我!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int a[l]中,因为l是变量,所以在C中这样定义数组是非法的,[]中必须是常量。但可以动态分配,用int *a=(int *)malloc(sizeof(int)*l));来定义,不过最后要用free(a)来释放。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
童鞋 我可以说下我的思路
引用一 个int[] 记录每个单词的长度 然后打印的话 只需要按照空格找到对应的索引就可以了
for example:
I hope I can be enable to help the ones who needs especially who ever helped me.
此时int a[] 里面最大的是a[12] 于是我从a[12] 这个地址开始打印a[12]这么多长度的字符就可以
这样使用的空间小 不需要开辟二为树组 但是至少需要遍历两次
引用一 个int[] 记录每个单词的长度 然后打印的话 只需要按照空格找到对应的索引就可以了
for example:
I hope I can be enable to help the ones who needs especially who ever helped me.
此时int a[] 里面最大的是a[12] 于是我从a[12] 这个地址开始打印a[12]这么多长度的字符就可以
这样使用的空间小 不需要开辟二为树组 但是至少需要遍历两次
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一个地方错了 第8行 inta[l];这句。
定义数组a的时候 下标不能用变量 下标必须是一个常量
定义数组a的时候 下标不能用变量 下标必须是一个常量
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询