C语言实现统计一行字符串的单词个数

目录
  • 问题简述
  • 解题思路
  • 程序代码
  • 测试结果

问题简述

输入一行字符,统计其中有多少个单词,单词之间用空格分开

输入样例:

I want to be a postgraduate.

输出样例:

There are 6 words in this line.

解题思路

采用空格统计单词的方法:空格出现的次数(连续的若干个空格作为出现一次空格;一行开头的空格不统计在内)决定单词个数。

具体做法:

从第一个字符开始逐个检查字符串中的字符,如果测出某个字符为非空格,而它的前面的字符是空格,则表示新的单词开始了。

设变量count来累计单词个数,初值为0。当发现新的单词开始,就使count累计1。

如果当前字符为非空格而前面的字符也是非空格,则意味着仍然是原来那个单词的继续,count不再累加1。

怎样知道前面一个字符是否是空格呢?可以设一个变量flag,用来表示指定的字符是否为空格,以flag为0代表前一个字符是空格;flag为1代表前一个字符是非空格,flag初始为0。

N-S图:

程序代码

/*
作者:C位出道丶
*/

#include<stdio.h>
#include<string.h>
int main(void)
{
	char string[81];
	int i, count = 0, flag = 0;
	char c;
	gets(string);  //读入一串字符串
	for(i=0; (c = string[i]) != '\0'; i++)
	{
		if(c == ' ') flag = 0; //如果当前字符是空格,则使flag为0
		else if(flag == 0)
		{
			flag = 1;
			count++;
		}
	}
	printf("There are %d words in this line.\n",count);
	return 0;
}

注意:

当第一次循环时,即c = ‘I’ 时,默认前一个字符为空格,即flag = 0,首次执行的是else if

测试结果

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • c语言实现足球比赛积分统计系统

    本文实例为大家分享了c语言实现足球比赛积分统计系统的具体代码,供大家参考,具体内容如下 /* 足球比赛积分统计系统    作者:施瑞文    时间:2018.2 */   //为简单化,这里没有加上文件的操作  #include <stdio.h> #include <stdlib.h> #include <string.h> #include<windows.h> #include<conio.h> #define LEN sizeof(mat

  • C语言实现统计100以内所有素数的个数

    目录 题目描述 分析 代码实现 运行结果 后期完善 网上参考 本人C语言萌新,最近工作中频频出现C语言小错误,遂决定使用笨方法提高我的C语言水平,坚持每天一个C语言小练习,养成C语言手感,从此让编程成为习惯. 题目描述 统计100以内所有素数的个数 分析 素数(prime number)又称质数,在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数,2是最小的素数. 代码实现 #include <stdio.h> #define INTEGER_RANGE 100 //数字范围 i

  • 统计输入字符各个字母出现频率的解题思路

    本文跟大家分享的是编写一个程序,能够计算输入字符各个字母出现的频率,具体如下 先跟大家展示一下最终结果: 刚刚接手题目的时候,我想得很复杂,因为26个字母中有大小写嘛,小写a~z,大写A~Z 但是,无论是大写还是小写,字母都只有26个,在此,当输入大写字母的时候,我们就将其转换为小写就ok啦 大写字母转换为小写字母,有个很方便的函数tolow(),在ctype.h中,详情文章末. 看过前一篇文章<c语言:计算输入字符个数>中使用数组统计单词长度的方法,在统计字母的个数的时候,依旧可以,只不过有

  • C语言每日练习之统计文本单词数及高频词

    作业1:统计出txt文本里面的单词数,并找出频率出现最高的单词是哪个? 运行结果: 上代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { //文件打开 //string file = System.IO.Fi

  • C语言实现选票统计

    用C语言实现选票统计,供大家参考,具体内容如下 要求: 设有N个候选人,10个选举人,每一个选举人只能选一位候选人,最终票数最高的当选为领导人,输出候选人票数和领导人信息. 实现: 1定义结构体数组存储候选人信息. 2循环10次,每次从键盘输入选票姓名,和候选人进行比较,并统计选票. 代码: #include<stdio.h> #include<string.h> #define N 3 struct person{ char name[20]; int count; }leade

  • C语言实现统计一行字符串的单词个数

    目录 问题简述 解题思路 程序代码 测试结果 问题简述 输入一行字符,统计其中有多少个单词,单词之间用空格分开 输入样例: I want to be a postgraduate. 输出样例: There are 6 words in this line. 解题思路 采用空格统计单词的方法:空格出现的次数(连续的若干个空格作为出现一次空格:一行开头的空格不统计在内)决定单词个数. 具体做法: 从第一个字符开始逐个检查字符串中的字符,如果测出某个字符为非空格,而它的前面的字符是空格,则表示新的单词

  • python统计文本字符串里单词出现频率的方法

    本文实例讲述了python统计文本字符串里单词出现频率的方法.分享给大家供大家参考.具体实现方法如下: # word frequency in a text # tested with Python24 vegaseat 25aug2005 # Chinese wisdom ... str1 = """Man who run in front of car, get tired. Man who run behind car, get exhausted."&quo

  • C#判断单词个数方法总结

    方法一: 判断英文单词个数: using System; namespace FindWord { class Program { static void Main(string[] args) { string space = " "; string str = "hello world" + space; int count = 0; bool start = false; for (int i=0;i<str.Length;i++) { if (Char

  • C语言编程中统计输入的行数以及单词个数的方法

    统计输入的行数 标准库保证输入文本流以行序列的形式出现,每一行均以换行符结束.因此,统计行数等价于统计换行符的个数. #include <stdio.h> /* count lines in input */ main() { int c, nl; nl = 0; while ((c = getchar()) != EOF) if (c == '\n') ++nl; printf("%d\n", nl); } 在该程序中,while 循环语句的循环体是一个 if 语句,它控

  • C语言如何实现翻转字符串中的单词

    目录 C语言翻转字符串中的单词 另外开辟一个空间,来存放翻转的字符串 直接在原数组上进行操作 C语言字符串各单词的反转 思路 代码实现 代码编译 调试输出 C语言翻转字符串中的单词 另外开辟一个空间,来存放翻转的字符串 单词之间是以空格间隔的,所以我们翻转需要一个一个字符进行翻转,我们需要找寻空格,找到空格表示一个字符已经找到,进行以下的步骤: 1. 首先获取原字符串的长度,申请一个长度+1的空间,因为还需要一个结束符. 2. 定义一个变量i,初始化为0,用i进行字符串的遍历,定义一个start

  • Shell中统计字符串中单词的个数的几种方法

    Shell中求字符串中单词的个数的几种方法 方法一: [linux@host ~]# echo 'one two three four five' | wc -w 5 方法二: [linux@host ~]# echo 'one two three four five' | awk '{print NF}' 5 方法三: [linux@host ~]# s='one two three four five' [linux@host ~]# set ${s} [linux@host ~]# ech

  • Java实现对一行英文进行单词提取功能示例

    本文实例讲述了Java实现对一行英文进行单词提取功能.分享给大家供大家参考,具体如下: package fanyi; import java.util.Scanner; import java.util.StringTokenizer; public class text { public static void handle(String eString) { StringTokenizer st = new StringTokenizer(eString,",!' '.;"); w

  • Java实现读取键盘输入保存到txt文件,再统计并输出每个单词出现次数的方法

    本文实例讲述了Java实现读取键盘输入保存到txt文件,再统计并输出每个单词出现次数的方法.分享给大家供大家参考,具体如下: package javatest; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOEx

  • Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】

    本文实例讲述了Python统计纯文本文件中英文单词出现个数的方法.分享给大家供大家参考,具体如下: 第一版: 效率低 # -*- coding:utf-8 -*- #!python3 path = 'test.txt' with open(path,encoding='utf-8',newline='') as f: word = [] words_dict= {} for letter in f.read(): if letter.isalnum(): word.append(letter)

  • R语言基础统计方法图文实例讲解

    tidyr > tdata <- data.frame(names=rownames(tdata),tdata)行名作为第一列 > gather(tdata,key="Key",value="Value",cyl:disp,mpg)创key列和value列,cyl和disp放在一列中 -号减去不需要转换的列 > spread(gdata,key="Key",value="Value") 根据value将

随机推荐