【问题描述】写一个统计文件中单词和字符个数的程序。在此,单词指的是仅由字母组成的串。诸如is7years这样的串按照两个单词计算。
【输入形式】读取当前目录下文件in.txt,以统计该文件中单词和字符个数。
【输出形式】输出输入文件中单词和字符个数,中间以一个空格分隔。
【样例输入】in.txt的内容为:
I am an (BeiHang)student.
【样例输出】5 25
【样例说明】该输入文件中共有5个单词(即I, am, an, BeiHang, student)及25个字符。
C++代码如下(新手编程,大佬勿喷):
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
ifstream fp("in.txt");
char ch;
int character=0,word=0;
int flag=0;
while((ch=fp.get())!=EOF)
{
character++;
if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))
{
flag=1;
}
else
{
if(flag==1)
{
word++;
flag=0;
}
}
}
if(flag==1)
{
word++;
}
cout<<word<<" "<<character;
fp.close();
return 0;
}
C 代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *fp;
fp=fopen("in.txt","r+");
int character=0,word=0;
int flag=0;
char ch;
while((ch=fgetc(fp))!=EOF)
{
character++;
if((ch>='a'&&ch<='z')||ch>='A'&&ch<='Z')
{
flag=1;
}
else
{
if(flag==1)
{
word++;
flag=0;
}
}
}
if(flag==1)
{
word++;
}
fclose(fp);
printf("%d %d",word,character);
return 0;
}
注解:主要是读取文件的方式不同。
Java代码示例:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader ifile = new BufferedReader(new FileReader("in.txt"));
String s=null;
int character=0,word=0;
int flag=0;
while((s=ifile.readLine())!=null) {
for(int i=0;i<s.length();i++) {
character++;
char ch = s.charAt(i);
if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')) {
flag=1;
}else {
if(flag==1) {
word++;
flag=0;
}
}
}
}
if(flag==1) word++;
System.out.println(word+" "+character);
ifile.close();
}
}