第二周报告3:字符数组
实验目的:输入一行字符,统计其中有多少个单词
实验内容:输入一行字符,统计其中有多少个单词。每两个单词之间以空格(可能多个)隔
开,或者由标点符号(只考虑 , . ; ? !共5 种)隔开。
* 程序头部注释开始
* 程序的版权和版本声明部分
* Copyright (c) 2012烟台大学计算机学院学生
* All rights reserved.
* 文件名称:
* 作
* 完成日期:
* 版 本 号:
* 对任务及求解方法的描述部分
* 输入描述:输入一行字符
* 问题描述:利用字符与标点的关系,进行输出单词数量。
* 程序输出:单词数
* 程序头部的注释结束
#include<iostream>
#include"string.h"
using namespace std;
int main()
{
char line[50];
int num = 0;
cout << "Enter your words:" << endl;
gets(line);
cout << "Entered the line is: " << line << endl;
for(int i = 0; line[i] != '\0'; ++i)
{
if((line[i] != '?' && line[i] != ' ' && line[i] != ';' && line[i] != '.' && line[i] != '?') && (line[i+1] == ' ' || line[i+1] == '?' || line[i+1] == '!' || line[i+1] == ';' || line[i+1] == '.'))
{
num++;
}
else
{
continue;
}
}
cout << "There are " << num << " words in the line." << endl;
return 0;
}
运行结果:

经验积累:
1、问题有不少疑问,尽管结果是对的,但有问题,首先不能实现输入任意字符的功能,思量再三还未解决。再一个问题是对于库函数中string.h和<string>在运行时并不完全相等。最后实现一个字符是非标点的代码中,用 || 和用&&结果出乎意料。需要进一步解决。
2、可否将if语句处简化,但简化后出现错误!
上机感言:
此问题在编写时,并不如意,尽管思想已经明白,思路也较清晰,但在编码实现时总有错误。