| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2087 人关注过本帖
标题:宏的定义以及指针和函数的使用
只看楼主 加入收藏
三脚猫a
Rank: 2
等 级:论坛游民
帖 子:61
专家分:90
注 册:2019-2-27
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
宏的定义以及指针和函数的使用
题目是让我们设计一个程序,统计一句英文句子中的单词个数。英文单词用空格分开。
题目的难处在于,如果中间分隔的空格很多,如何破解。
我的想法是这样的:用宏将所有的英文字母定义为1,然后空格定义为0,然后进行两个字符间的加减,如果相减为1,表示英文字母接空格;相减为-1,表示空格接英文字母;相减为0,表示两个英文字母在一起或者空格在一起。定义完后,我统计相减结果为1的次数就可以知道有几个单词了。
我写的程序是这样的:(目前还没有宏定义,因为不会;然后就是报错有很多,我不懂为啥报错的)
程序代码:
#include <stdio.h>
STA(char a[]);
#define
int main()
char a=[100],*p;
    printf("请输入一句英文句子:");
    for(i=0;i<=100;)
            {scanf("%c",&p);
                i++;
                p+=i;
            }
    b=STA(a[]);
    printf("%d",b);
    return 0;
}
STA(char a[])
    for(i=0;i<=100;i++)
    {m=a[i]-a[i+1];
        if(m==1)
        x+=1;
    }
return (x);
搜索更多相关主题的帖子: 宏的 定义 空格 英文字母 相减 
2019-03-24 18:14
三脚猫a
Rank: 2
等 级:论坛游民
帖 子:61
专家分:90
注 册:2019-2-27
收藏
得分:0 
求各位帮帮忙呀,谢谢你们啦
2019-03-24 18:17
三脚猫a
Rank: 2
等 级:论坛游民
帖 子:61
专家分:90
注 册:2019-2-27
收藏
得分:0 
求解答呀
2019-03-24 20:13
三脚猫a
Rank: 2
等 级:论坛游民
帖 子:61
专家分:90
注 册:2019-2-27
收藏
得分:0 
啊啊啊 别沉啊
2019-03-24 22:18
沓炅
Rank: 2
等 级:论坛游民
帖 子:22
专家分:63
注 册:2017-8-13
收藏
得分:0 
回复 楼主 三脚猫a
#include <stdio.h>

#define n 100

int STA(char *p)
{
    int i,x =0;
   
    for(i = 0; i < n; i++)
      {
      if((*p>='a'&&*p<='z')||(*p>='A'&&*p<='Z'))
             x=x+1;
             p++;
   }
    return (x);
}

int main()
{
    int b;
    char a[n]={0},*p;
    printf("请输入一句英文句子:");
    //scanf("%s",a);scanf遇空格结束读取。
    //gets(a);//解决1
     scanf("%[^\n]",a); //解决2 读到'\n'结束读取
    printf("%s\n",a);
    p = a;
    b=STA(p);
   
    printf("%d",b);
    return 0;
}

还有很多的方法

图片附件: 游客没有浏览图片的权限,请 登录注册
2019-03-24 22:22
三脚猫a
Rank: 2
等 级:论坛游民
帖 子:61
专家分:90
注 册:2019-2-27
收藏
得分:0 
回复 5楼 沓炅
谢谢你  但是应该是 单词数目,不是字母数目。可以把紧挨在一起的称为识别为单词。
2019-03-24 22:37
三脚猫a
Rank: 2
等 级:论坛游民
帖 子:61
专家分:90
注 册:2019-2-27
收藏
得分:0 
帮帮忙啊
2019-03-24 23:09
沓炅
Rank: 2
等 级:论坛游民
帖 子:22
专家分:63
注 册:2017-8-13
收藏
得分:20 
程序代码:
#include <stdio.h>

#define n 100

int STA(char *p)
{
    int i,x =0;
    
    for(i = 0; i < n; i++)
      {
      if(((*p>='a'&&*p<='z')||(*p>='A'&&*p<='Z'))&&\
              ((*(p+1) == ' ')||\
            (*(p+1) == '\0')||\
            (*(p+1) == '.')||\
              (*(p+1) == ',')||\
            (*(p+1) == ':')||\ 
            (*(p+1) == '?')))     
            x=x+1;    
             p++;
   }
    return (x);
}

int main()
{
    int b;
    char a[n]={0},*p;
    printf("请输入一句英文句子:");
    //scanf("%s",a);scanf遇空格结束读取。
    //gets(a);//解决1 
     scanf("%[^\n]",a); //解决2 读到'\n'结束读取
    printf("%s\n",a);
    p = a;
    b=STA(p);
    
    printf("%d",b);
    return 0;
}


图片附件: 游客没有浏览图片的权限,请 登录注册
2019-03-25 08:27
三脚猫a
Rank: 2
等 级:论坛游民
帖 子:61
专家分:90
注 册:2019-2-27
收藏
得分:0 
回复 8楼 沓炅
谢谢你愿意花时间来给我编了这么一个程序。谢谢。
2019-03-25 13:00
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:0 
回复 5楼 沓炅
不应该用%[^\n]
直接 %s 简单直接得多
%[^\n] 是自找麻烦

https://zh.
2019-03-25 17:02
快速回复:宏的定义以及指针和函数的使用
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024064 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved