解题思路: 先看第一二步 就是统计单词个数的简单变化 第三步仅仅考虑最后一个单词 可以先把前俩步弄懂 再看第三步
注意事项:先输入空格 和 后面空格 和最后一个单词的统计
参考代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
char a[1005],flag = 1;
gets(a); //获取字符串
int ans=0,index = 0; //ans用来统计多少个字符,index为下标
int b[305]={0}; //全部置为0 但是没啥用好像
int pos1 = strlen(a)-1;
while(a[pos1] == ' '&& pos1>=0) pos1--; //这个和上一步 去出后面的空格 后面有作用
for(int i = 0 ; i <= pos1;i++)
{
if(i == pos1) //第三 这个用于判断最后一个单词用 不然最后一个统计不上
{
index++;
if(a[i-1] != ' ') // 如果前面为空格的话 在第二步里面的已经概括了 这个重复了 你可以用 最后单词是一个来试
b[index] = ans + 1;
else b[index] = ans;
}
if(a[i] == ' ') // 第一步
{
if(a[i-1] == ' ') continue; //判断 如果前面也是空格 直接跳过 解决多个空格在一起的情况
flag = 1;//标记
index++;
b[index] = ans; // 将步数存放在数组中
}
else if(flag == 1)//第二
{
flag = 0;
ans = 1; // 这个已经把空格后面的第一次概括了 所以ans = 1
}
else ans++; //这个是不是空格来计算字符个数
}
int pos = 1;
while(b[pos]==0&&pos<=index) pos++;//去除先输入空格的情况 去除前导0
for(int j = pos ;j < index;j++)
printf("%d,",b[j]);
cout << b[index];// 正常输出
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复