c语言的练习-字符串的练习-单词的计数
关于这道题我们知道空格是可以被输入的但是空格是不能包含在单词里面的。所以我们的目的就是为了排除空格这一部分。显然的我们需要一个字符数组来承载字符串的内容。然后需要往里面去输入内容并且可以有空格输入。我们这里可以选择用 fgets(ch,105,stdin);也可以使用 scanf(%[^\n],ch);因为这里没有要求我们多组输入而如果使用多组输入我们只能选择前者而不能使用后者因为后者在遇到换行符的时候会停止输入。而在这里我们注意到字符串的长度小于100.所以为了防止边界性问题的产生数组越界我选择多定义了几个位置。当然在某些情况下也有助于算法的实现。首先我们要知道 fgets 是包含换行符的。所以我们要解决这一问题就要计算字符串的长度所以我这里使用了 int len strlen(ch) 来帮助我计算长度。当我们判断在这个数组最后的时候遇到了 \n 时我们就把它换为\0再len--,直到没有\n.这就是第一部分的代码#includestdio.h#includestring.hint main(){char ch[105];fgets(ch,105,stdin);int len strlen(ch);if(ch[len-1]\n){ch[len-1]\0;len--;}我们需要判断我们此时是否在单词内部当然也肯定需要一个变量来帮助我们计算单词的个数显然的我们要遍历这个字符串当我们遇到 时我们就知道我们此时不在单词内部于是inword 0;if 此时ch[i] ! 那么说明此时在单词内部。然后 count ;当再次循环时 显然的 ch[i] ! ‘ ’if! inword条件不成立我们此时无法进入循环意味着我们不会多此计入该单词所以我们的任务就完成了int inword0;int count0;for(int i0;ilen;i){if(ch[i] ) inword0; //如果当前是空格 不在单词内部else if(!inword){ //如果之前不在单词内部inword1; //找到一个新单词count;//计数加一}}printf(%d\n,count);return 0;}