问题描述:
输入一行字符,统计其中有多少单词,单词之间用空格隔开
解题思路:
判断单词是否出现,可以用空格的出现来判断(连续的若干空格看做成一个),若当前字符为空格,表明word未出现,当前字符非空格,之前字符为空格表明新单词出现,count++,之前字符是否为空格,用状态标志位word来标记
代码如下:
#include<stdio.h> //printf #include<string.h> //gets #include<stdlib.h> //system #define MAXLENTH 1000 //字符数组的最大容量 int main() { system("title count the number of 9");//设置cmd窗口标题 system("mode con cols=100 lines=100");//设置窗口宽度和高度 system("color 0A"); //设置幕布和字体颜色 char string[MAXLENTH];//存放终端输入的一段字符 char *ch = string; //指向该数组 int count = 0; //统计单词个数 int word = 0; //状态标志位,出现新单词(当前字符非空格,之前字符为空格)word=1,否则word = 0 printf("please input the charactors you want to count the words:\n"); gets(string); for(;*ch != '\0';++ch) { if(*ch == ' ') //当前字符为‘空格’,表明新单词未出现 { word = 0; } else if(word == 0)//(当前字符非空格,之前字符为空格)word=1 { count++; word = 1; } } printf("there are %d words\n",count); return 0; }
#include<stdio.h> //printf #include<stdlib.h> //system #include<string.h> //gets int main() { system("mode con cols=100 lines=100"); system("color 0A"); char string[100000];//存放一段字符 int num = 0; //统计单词个数 int word = 0; //单词是否出现的标志,0:新单词未出现,1:新单词出现 int i; printf("please input the charactors that you want to count words:\n"); gets(string); //从终端输入想要统计单词个数的一段字符 for(i=0;string[i] != '\0';++i) { if(string[i] == ' ')//当前字符是空格,表示新单词未出现word = 0 { word = 0; } else if(word == 0) //当前字符不是空格并且前一个字符是空格,表示新单词出现 { word = 1; num++; } } printf("there are %d words in the charactors you put \n",num); system("pause"); return 0; }
原文地址:http://blog.csdn.net/zongyinhu/article/details/44992969