yukijudai... 2021-10-29 23:55 采纳率: 66.7%
浏览 268
已结题

编写一个程序,用于统计行数、单词数与字符数。

编写一个程序,用于统计行数、单词数与字符数, 单词仅由连续的字母(含大小写)组成且前后必须有分隔符('\n','\t',' '),第一个和最后一个单词除外。
遇文件结束字符EOF结束统计。(键盘输入ctrl+z)

输入
abc DEF123
^z
输出
Lines:1
Words:1
Chars:10

#include <stdio.h>
#define OUT 0
#define IN 1
 
int main()
{
 int hangshu,danci,zifu,state,ifnum;
 hangshu = danci = zifu = 0;
 state = OUT; 
 ifnum = 0;
 char c;
 while((c=getchar())!=EOF)
 {
  ++zifu;
  if(c=='\n')
   ++hangshu;

  if(c=='\n'||c==' '||c=='\t')
   state = OUT;
  if(c>='0'&&c<='9')
   ifnum = 1;
   
  if(state == OUT)
  {
      if(ifnum == 0)
      state = IN;
    ++danci;}
    
   
  
  }
 
 printf("Lines:%d\n",hangshu);
 printf("Words:%d\n",danci);
 printf("Chars:%d\n",zifu);
}

测试用例 1
adsa↵
sad sadgth↵
dghyj↵
dsdf↵

Lines:4↵
Words:5↵
Chars:28↵

测试用例 2
adsa↵
sad12 sadgth↵
12dghyj↵
dsdf↵

Lines:4↵
Words:3↵
Chars:34↵

测试用例 3
happy↵
hello world↵


bye↵

Lines:5↵
Words:4↵
Chars:24↵

请问下大家,是哪里出问题了?

img

  • 写回答

1条回答 默认 最新

  • 关注

    代码修改如下,修改部分在代码中有注释,如有帮助,请帮忙采纳一下,谢谢。

    img

    代码:

    #include <stdio.h>
    #define OUT 0
    #define IN 1
    int main()
    {
        int hangshu,danci,zifu,state,ifnum;
        hangshu = danci = zifu = 0;
        state = IN; //修改1:这里是IN
        ifnum = 0;
        char c;
        char pre = 0;
        while((c=getchar())!=EOF)
        {
            zifu++; //修改2:换行符不统计
            if(c=='\n')
                ++hangshu;
            if(c=='\n'||c==' '||c=='\t')
                state = OUT;
            if(c>='0'&&c<='9')
                ifnum = 1;
            if(state == OUT)
            {
                //修改3if(ifnum == 0 && ( (pre >='a'&&pre<='z') || (pre >='A'&&pre<='Z') )  )
                {
                    ++danci;
                }
                state = IN;
                ifnum = 0;
    
            }
            pre = c;
        }
        printf("Lines:%d\n",hangshu);
        printf("Words:%d\n",danci);
        printf("Chars:%d\n",zifu);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月7日
  • 已采纳回答 10月30日
  • 修改了问题 10月30日
  • 修改了问题 10月30日
  • 展开全部

悬赏问题

  • ¥15 python变量和列表之间的相互影响
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)