|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
每个作文都以一行#开始。随后是若干行字符,然后再以#结束。
作文中不会出现#。
输出每个作文有多少行。(空行不算)
输入:
#
I love C programming language!
Yes, I'm xiaomeng.
haha!
another paragraph. I'm so smart!
bye!
#
输出:5
怎么敲代码呀!!特别是对空行怎么处理呀
本帖最后由 1471590985 于 2020-11-6 22:49 编辑
随便写的,可能有更简单的方法
对空行的处理就是看这个'\n'的前一个字符是否为'\n'或'#'还要看他的前面所有空格前的字符是否为'\n'或#
如果是'\n'的话那就是中间的空行
如果是'#'的话那就是文章开头的空行
改了下代码,现在应该是没什么问题了
- #include<stdio.h>
- #include<string.h>
- void main()
- {
- int i, j, count = 0,space = 0;
- char s[] = "#\nI love C programming language!\n\nYes, I'm xiaomeng. \n haha!\nanother paragraph. I'm so smart!\n\nbye\n \n#eqd";
-
-
- for(i=0;(size_t)i<strlen(s);i++)
- {
- if(s[i] == '#') //出现#开始计数
- {
- for(j=i+1;(size_t)j<strlen(s);j++)
- {
- if(s[j] == ' ') //计算连续空格的个数以便于排除空格的影响
- {
- space++;
- continue;
- }
-
- if(s[j] == '#') //再次出现#停止
- {
- if(s[j-1] != '\n' && s[j-space-1] != '\n')
- count++;
- break;
- }
-
- if(s[j] == '\n') //遇到换行符
- {
-
- if(s[j-1] != '\n' && s[j-1] != '#' && s[j-space-1] != '\n'&& s[j-1-space] != '#') //判断是否为空行
- count++;
- }
-
- space = 0;
- }
- }
- break;
- }
- printf("%s", s);
- printf("\n%d\n",count);
- }
复制代码
|
|