鱼C论坛

 找回密码
 立即注册
查看: 3725|回复: 7

数组和字符串

[复制链接]
发表于 2019-10-27 09:18:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。
输入格式:
输入给出一行字符。
输出格式:
在一行中输出单词个数。
输入样例:
Let's go to room 209.
输出样例:
5                        //这是题目。

请问 怎么解决多空格问题。求助
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-10-27 10:05:36 | 显示全部楼层
判断字符 遇到空格加1 最后'\0'结束再加1. 连续空格做个标记。不就搞定了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-27 10:10:10 | 显示全部楼层
str1 = ‘字符串’
num = 1   #统计单词数量
for i in str1:
      if i == ' ':
            if str1[i-1] != ' ':
                  num += 1

这样可以吗,我是新手,可能用的方法比较low
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-27 10:23:31 | 显示全部楼层
wqz666 发表于 2019-10-27 10:10
str1 = ‘字符串’
num = 1   #统计单词数量
for i in str1:

你得用c解答
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-27 11:49:01 | 显示全部楼层
本帖最后由 bin554385863 于 2019-11-2 09:20 编辑
  1. #include <stdio.h>
  2. #include <ctype.h>
  3. void func(char * cstr)
  4. {
  5.         int a = 1;
  6.         if (!isalpha(*cstr))//首个字符不是子母的情况计数-1
  7.         {
  8.                 a = a - 1;
  9.         }
  10.         while (*(cstr + 1) != '\0')//指针+1避免数组越界
  11.         {
  12.                 if (!isalpha(*cstr) && isalpha(*(cstr + 1))) /*判断相邻两个字符,如果第一个不是子母且第二个是子母,那么单词的个数就是这两个字符的对数,同时不受字符串中单词之间空格数量的影响,完美解决空格数量的问题;*/
  13.                 {
  14.                         a++;
  15.                 }
  16.                 cstr++;
  17.         }
  18.         printf("字符串有%d个单词\n", a);
  19. }

  20. int main(int argc, char * argv[])
  21. {
  22.         char * a = "hello";
  23.         char * b = "hello world";
  24.         char * c = "   hello world       dffd       string          C";
  25.         func(a);
  26.         func(b);
  27.         func(c);
  28.         return 0;
  29. }



复制代码

----------------------------------------------------------------------------------
Microsoft Windows [版本 10.0.16299.1087]
(c) 2017 Microsoft Corporation。保留所有权利。

E:\Users\86184\Documents\Code>c:\Users\86184\.vscode\extensions\ms-vscode.cpptools-0.26.0\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-oem4klku.rpa --stdout=Microsoft-MIEngine-Out-2tqayjy5.niw --stderr=Microsoft-MIEngine-Error-d0tasn14.2nt --pid=Microsoft-MIEngine-Pid-nem2dt1f.tmd "--dbgExe=E:\My Program\MinGW\bin\gdb.exe" --interpreter=mi
字符串有1个单词
字符串有2个单词
字符串有5个单词


E:\Users\86184\Documents\Code>

-----------------------------------------------------------------------------------
char * c = "   (空h)ello(空w)orld      (空d)ffd      (空s)tring         (空C) ('\0' 数组之外的值 ) ;//最后一项是结束符'\0'它和数组之外的值也构成了一组计数字符组
如果会正则表达式的话,代码还能更简短
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-27 11:51:47 | 显示全部楼层
wqz666 发表于 2019-10-27 10:10
str1 = ‘字符串’
num = 1   #统计单词数量
for i in str1:

虽然语言不一样但是逻辑都是相同得,这样不是不行,如果第一个单词就是空格呢,若单词之间不止一个空格呢,这样就不准确了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2019-10-27 12:08:12 | 显示全部楼层
本帖最后由 jackz007 于 2019-10-27 12:38 编辑
  1. #include <stdio.h>

  2. main(void)
  3. {
  4.         char s[256] , ch                                                ;
  5.         int c , k , m                                                   ;
  6.         for(m = 0 ; (ch = getchar()) != '\n' && m < 255 ;) s[m ++] = ch ;
  7.         s[m] = '\0'                                                     ;
  8.         for(k = 0 ; (k < m) && (s[k] == 0x07 || s[k] == 0x20) ; k ++)   ;
  9.         for(c = 0 ; k < m ; k ++) {
  10.                 for(; (k < m) && (s[k] != 0x07 && s[k] != 0x20) ; k ++) ;
  11.                 for(; (k < m) && (s[k] == 0x07 || s[k] == 0x20) ; k ++) ;
  12.                 c ++                                                    ;
  13.         }
  14.         printf("%d\n" , c)                                              ;
  15. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-1 21:49:16 | 显示全部楼层
遍历遇见空格直接continue
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-16 05:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表