| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
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);
 
 - }
 
 
  复制代码 
 
 
 |   
 
 
 
 |