【ACM小白成长撸】--计算单词个数

我判断单词个数的方法,根据空格‘ ’的个数

分情况

  • 当没有单词的时候

判断第一个符号,即a[0] == ‘\0’时,赋值给存储个数的数组

  • 当遇到空格时,只有前面一个字符不是空格字符,后面一个字符不是空格字符,才能判断一个word

注意事项

  • 当输入组数时,最后回车输入缓冲区里面,gets会得到一个回车符号,所以为了消除缓冲区的回车,需要利用fflush函数
  • 当遇到最后一个‘\0’时,要在已有的words数目上加一,比如,"i love you",这儿有2个空格,不加一的话,words数目就2个,显然不符合要求。  
 1 /*程序的版权和版本声明部分:
 2 *Copyright(c) 2016,电子科技大学本科生
 3 *All rights reserved.
 4 *文件名:ACM_UESTC_OJ60
 5 *程序作用:统计单词个数
 6 *作者:Amoshen
 7 *完成日期:2016.9.26
 8 *版本号:V1.0
 9 */
10
11 #include <stdio.h>
12 #include <stdlib.h>
13
14 int main(void)
15 {
16     int i,m;
17     int j;//j为计数器
18     char *p;
19     char b[100];
20     int a[9999];
21
22     scanf("%d",&i);
23     fflush(stdin);//清除缓冲区,避免到后面直接跳过gets
24
25     for(m = 0;m < i;m++)
26     {
27         gets(b);
28
29         if(b[0] == ‘\0‘)//当不输入任何单词时,最后有回车符号,排除此情况,gets不能读换行符,遇到‘\0‘结束输入
30         {
31             a[m] = 0;
32             continue;
33         }
34         else
35         {
36             if(b[1] == ‘\0‘)
37             {
38                 a[m] = 1;
39                 free(p);
40                 continue;
41             }
42         }
43
44         p = b;
45
46         for(j = 0;;p++)
47         {
48             if((*p == ‘ ‘)&& (*(p - 1) != ‘ ‘)&&(*(p + 1) != ‘ ‘))
49             {
50                 j = j + 1;
51             }
52             if(*p == ‘\0‘&& j != 0)
53             {
54                 j = j + 1;
55                 a[m] = j;
56                 break;
57             }
58         }
59     }
60
61     for(m = 0;m < i;m++)
62     {
63         printf("%d\n",a[m]);
64     }
65
66     return (0);
67 }
时间: 2024-10-14 13:01:50

【ACM小白成长撸】--计算单词个数的相关文章

【ACM小白成长撸】--贪婪法解硬币找零问题

question:假设有一种货币,它有面值为1分.2分.5分和1角的硬币,最少需要多少个硬币来找出K分钱的零钱.按照贪婪法的思想,需要不断地使用面值最大的硬币.如果找零的值小于最大的硬币值,则尝试第二大的硬币,依次类推. 1 /*程序的版权和版本声明部分: 2 **从<C++程序设计思想与方法>(作者:翁惠玉)P61转载 3 */ 4 #include <iostream> 5 6 using namespace std; 7 8 #define ONEFEN 1 9 #defin

【小白成长撸】--Fibonacci

1 /*程序的版权和版本声明部分: 2 *Copyright(c) 2016,电子科技大学本科生 3 *All rights reserved. 4 *文件名:Fibonacci 5 *程序作用:计算菲薄拉稀数列 6 *作者:Amoshen 7 *完成日期:2016.9.28 8 *版本号:V1.0 9 */ 10 #include<stdio.h> 11 12 int main(void) 13 { 14 int f1 = 1,f2 = 1,f3,n = 1,k; 15 16 printf(

【小白成长撸】--多项式求圆周率PI

1 /*程序的版权和版本声明部分: 2 *Copyright(c) 2016,电子科技大学本科生 3 *All rights reserved. 4 *文件名:多项式求PI 5 *程序作用:计算圆周率PI 6 *作者:Amoshen 7 *完成日期:2016.9.28 8 *版本号:V2.0 9 */ 10 11 #include<stdio.h> 12 13 int main(void) 14 { 15 double pi = 0.0,i = 1.0;//pi/4 = 1 - 1/3 + 1

【C++小白成长撸】--(续)单偶数N阶魔方矩阵

1 /*程序的版权和版本声明部分: 2 **Copyright(c) 2016,电子科技大学本科生 3 **All rights reserved. 4 **文件名:单偶数N阶魔方矩阵 5 **程序作用:单偶数N阶魔方矩阵 6 **作者:Amoshen 7 **完成日期:2016.11.2 8 **版本号:V1.0 9 */ 10 #include<iostream> 11 12 using namespace std; 13 14 #define MAX_SIZE 100 15 16 int

【C++小白成长撸】--(续)双偶数N阶魔阵

原理: 把双偶数N阶魔阵均分为(N/4)^2个4阶魔阵(4*4) 每个魔阵的对角线都标为"-1",其余位置标为"0" 从第一个位置(a[0][0])从左到右,从上到下(例如:a[0][0],a[0][1]--a[0][3],a[1][0])用自然数(从1开始)依次填充,每次填充数加一,遇到-1,跳过,但自然数继续计数 当第三步全部完成后,从最下面一个位置(a[3][3]),从右到左,从下到上,计数从1开始,每次填充数加一,遇到填充了的位置,跳过,但自然数继续计数.

【C++小白成长撸】--矩阵乘法程序

矩阵乘法是大学矩阵课程中,相比矩阵加减法比较困难的部分. 矩阵乘法的原理: 矩阵乘法在代码中实现 得到目标矩阵的一个元素,涉及两个求和符号,一个求和符号一个for循环,两个求和符号两个for循环,再加上是二维数组,再加一个for循环 以下呈现出代码 1 /*程序的版权和版本声明部分: 2 **Copyright(c) 2016,电子科技大学本科生二年级学生 3 **All rights reserved. 4 **文件名:矩阵乘法 5 **程序作用:矩阵乘法 6 **作者:Amoshen 7 *

【小白成长撸】--循环顺序队列

1 // 循环顺序队列.cpp : 定义控制台应用程序的入口点. 2 //适合整数 3 4 #include "stdafx.h" 5 #include<stdio.h> 6 7 #define MAXNUM 100 8 #define true 1 9 #define false 0 10 11 typedef struct queue_type 12 { 13 int queue[MAXNUM];//队列的最大值为100 14 int front;//头指针 15 in

【C++小白成长撸】--N阶幻方(魔阵)矩阵

解决方法:1.第一个元素放在第一行中间一列 2.下一个元素存放在当前元素的上一行.下一列. 3.如果上一行.下一列已经有内容,则下一个元素的存放位置为当前列的下一行. 在找上一行.下一行或者下一列的时候,必须把这个矩阵看成是回绕的. 代码中,为了判断,当前位置是否有元素,我引入与魔方矩阵规模相同的另一个矩阵,如果魔方矩阵一个位置不为空,相应另一个矩阵那个位置为1,否则为0. 1 /*程序的版权和版本声明部分: 2 **Copyright(c) 2016,电子科技大学本科生 3 **All rig

【小白成长撸】--链栈(C语言版)

1 // 链栈.cpp : 定义控制台应用程序的入口点. 2 // 3 4 #include "stdafx.h" 5 #include <stdio.h> 6 #include <stdlib.h>//malloc的头文件 7 8 typedef struct line_stack//栈包装 9 { 10 int x; 11 struct line_stack *next; 12 }link; 13 14 void pushes(link **top, int