A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 shenxian88 于 2015-4-30 00:39 编辑

#include <stdio.h>
int main(){
    char s[81],c;//定义一个数组,c接收字符
     int num = 0,word=0;//num表示单词的个数,word做单词的标记

    printf("请输入一句英语,单词之间用空格隔开:");//提示用户输入

    scanf("%s",s);

    for (int  i=0; (c=s)!='\0'; i++) {

        if (c==' ') word = 0;//如果c是空字符,那么标志word就等于0

        else if(word==0){word = 1;num++;}//当word == 0的时候就执行就执行括号里面的再把word赋值1;num++

    }
    printf("There are %d words.\n",num);//打印单词的个数
    return 0;
}

2 个回复

倒序浏览
本帖最后由 流风124 于 2015-4-29 16:51 编辑

scanf函数的问题,不接收空格、回车和Tab,可以改成gets()函数,但是会有警告
另外程序本身写的有点问题 c=s 这句是不对的,c是字符,s是字符串,怎么直接赋值?应该是 c=s,这里其实用while函数更好,也没有必要定义c来接收每一个字符,不过这里就按你的思路来吧
还有你的代码规范不是很好,还是多多注意一点
下面是我改的代码,结果没错

  1. #include <stdio.h>
  2. int main(){
  3.     char s[81],c;//定义一个数组,c接收字符
  4.     int num = 0,word=0;//num表示单词的个数,word做单词的标记
  5.    
  6.     printf("请输入一句英语,单词之间用空格隔开:");//提示用户输入
  7.    
  8.     gets(s);
  9.    
  10.     for (int  i = 0; ( c = s[i] ) != '\0'; i++) {
  11.         
  12.         if (c == ' ')
  13.         {
  14.             word = 0;//如果c是空字符,那么标志word就等于0
  15.         }
  16.         else if(word == 0)
  17.         {
  18.             word = 1;
  19.             num++;
  20.         }//当word == 0的时候就执行就执行括号里面的再把word赋值1;num++
  21.         
  22.     }
  23.     printf("There are %d words.\n",num);//打印单词的个数
  24.     return 0;
  25. }
复制代码

评分

参与人数 1黑马币 +3 收起 理由
shenxian88 + 3

查看全部评分

回复 使用道具 举报
流风124 发表于 2015-4-29 16:48
scanf函数的问题,不接收空格、回车和Tab,可以改成gets()函数,但是会有警告
另外程序本身写的有点问题 c= ...

谢谢,大神,我知道了

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马