统计一行字符的单词数
一. 题目要求
·题目
输入一行字符,统计其中包括多少单词,单词之间用空格分隔。
·要求:
- 输入格式:a b c d回车(空格可在任意位置,列如行头行尾可能会有空格。另外数字和字母一样,也可作为单词)
- 输出格式:单词数
- 输入的字符串长度最长为256个字符
·测试
输入:(空格)a a 112 c(空格)回车
输出:4
二.题目分析
- 用一个字符数组存储输入的字符串。
- 没有空格的一串字符(数字)即可视为单词。
- 先判断空格的个数,分两端有无空格四种情况即可判断单词的个数。
三.代码实现
#include <stdio.h>
#include <string.h>
int main() {
char str[257];
int n, m = 0, i;
gets_s(str, 256);
n = strlen(str);
for (i = 0; i <= n - 1; i++) {
if (str[i] == ' ') m++;
}
if (str[0] == ' ') {
if (str[n - 1] == ' ') printf("%d", m - 1);
else printf("%d", m);
}
else {
if (str[n - 1] == ' ') printf("%d", m);
else printf("%d", m + 1);
}
return 0;
}
上面的代码在VS2019上面运行是OK的,但是码图上面却不行。

正确的输出结果应该分别是5 3 7 5。
据说码图用的编译器是VS2010。
(这下没办法调试发现问题了)
下面是满分的代码:
#include<stdio.h>
int main()
{
char arr[100];
int i = 0;
int num = 0;
int word = 0;
gets_s(arr);
for (i = 0; arr[i] != '\0'; i++)
{
if (arr[i] == ' ')
{
word = 0;
}
else if (word == 0)
{
word = 1;
num++;
}
}
printf("%d", num);
}
这可能涉及到编译器的版本问题,实在是我的知识盲区。
请各位路过的大神看一下🙏!我真的想不到问题出在哪儿了😭呜呜呜

浙公网安备 33010602011771号