C++,codeblocks
如图第四题,定义并用cin>>输入了一个字符数组ch1,但是后续在使用strlen(ch1);return l;(l是之前定义过的字符串长度)的时候报错显示has no effect是为什么
以及请帮帮我,连接后的字符长度一样的时候如何判断连接的单词数?
strlen如何使用以及请帮我解解题目
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 技术专家团-小桥流水 2021-10-27 23:41关注
代码如下,如有帮助,请帮忙采纳一下,谢谢。
#include <iostream> #include <string> using namespace std; struct stnode { char buf[100]; int cnt; }; int main() { char s[10][11]; stnode node[10]; char tmp[12]; int nmb =0; int k = 0,i,j; while(1) { cin >> s[nmb]; nmb++; if(cin.get() == '\n')break; } //按字符长度排序 for ( i=0;i<nmb-1;i++) { for ( j = 0;j<nmb-i-1;j++) { if(strlen(s[j]) > strlen(s[j+1])) { memset(tmp,0,sizeof(tmp)); memcpy(tmp,s[j],strlen(s[j])); memset(s[j],0,sizeof(s[j])); memcpy(s[j],s[j+1],strlen(s[j+1])); memset(s[j+1],0,sizeof(s[j+1])); memcpy(s[j+1],tmp,strlen(tmp)); } } } memset(node[0].buf,0,101); memcpy(node[0].buf,s[0],strlen(s[0])); node[0].cnt = 1; i=1; k = 0; while(i<nmb) { if(strlen(s[i]) == strlen(s[i-1])) { memcpy(node[k].buf+strlen(node[k].buf),s[i],strlen(s[i])); node[k].cnt +=1; } else { k++; memset(node[k].buf,0,101); memcpy(node[k].buf+strlen(node[k].buf),s[i],strlen(s[i])); node[k].cnt =1; } i++; } //对拼接后的字符排序 for ( i = 0;i<k;i++) { for( j = 0;j<k-i;j++) { if (strlen(node[j].buf) > strlen(node[j+1].buf) ) { stnode tt = node[j]; node[j] = node[j+1]; node[j+1] = tt; }else if (strlen(node[j].buf) > strlen(node[j+1].buf)) { if(node[j].cnt < node[j+1].cnt) { stnode tt = node[j]; node[j] = node[j+1]; node[j+1] = tt; } } } } //cout << "Output: "; for ( i = 0;i<=k;i++) { cout << node[i].buf << " "; } return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
- ¥20 关于URL获取的参数,无法执行二选一查询
- ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
- ¥15 marlin编译错误,如何解决?
- ¥15 有偿四位数,节约算法和扫描算法
- ¥15 VUE项目怎么运行,系统打不开
- ¥50 pointpillars等目标检测算法怎么融合注意力机制
- ¥20 Vs code Mac系统 PHP Debug调试环境配置
- ¥60 大一项目课,微信小程序
- ¥15 求视频摘要youtube和ovp数据集