| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2596 人关注过本帖
标题:有道程序分析不来,请指点迷津~
只看楼主 加入收藏
michaelyj
Rank: 1
来 自:上海
等 级:新手上路
帖 子:55
专家分:0
注 册:2009-10-27
结帖率:88.24%
收藏
 问题点数:0 回复次数:34 
有道程序分析不来,请指点迷津~
将输入复制到输出的程序,并将其中连续的多个空格用一个空格代替。

#include <stdio.h>

#define NONBLANK 'a'

main()
{
    int c, lastc;
   
    lastc = NONBLANK;
    while((c = getchar()) != EOF)
    {
        if(c != ' ')
            putchar(c);
        if(c == ' ')
            if(lastc != ' ')
                putchar(c);
        lastc = c;
    }
}

练习题上的这道题分析了不清楚,小弟是刚入学,请各位达人讲解一下~~
搜索更多相关主题的帖子: 程序分析 
2009-11-12 14:30
michaelyj
Rank: 1
来 自:上海
等 级:新手上路
帖 子:55
专家分:0
注 册:2009-10-27
收藏
得分:0 
没人帮我分析分析吗?自己先顶一下!
2009-11-12 15:23
jcslt
Rank: 8Rank: 8
来 自:90-xx.com
等 级:蝙蝠侠
帖 子:251
专家分:975
注 册:2009-10-10
收藏
得分:0 
#define NONBLANK 'a'这个用来干嘛的呢

www.
2009-11-12 15:27
michaelyj
Rank: 1
来 自:上海
等 级:新手上路
帖 子:55
专家分:0
注 册:2009-10-27
收藏
得分:0 
我也不知道呀,看不懂啊!
2009-11-12 15:33
李若斌
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:219
专家分:184
注 册:2009-9-30
收藏
得分:0 
#define NONBLANK 'a'  宏定义一个NONBLANK,只要在程序中出现了NONBLANK就用字符a来替代,我是这样理解
2009-11-12 15:49
michaelyj
Rank: 1
来 自:上海
等 级:新手上路
帖 子:55
专家分:0
注 册:2009-10-27
收藏
得分:0 
晕,这我知道,这程序我看不懂!
2009-11-12 16:01
李若斌
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:219
专家分:184
注 册:2009-9-30
收藏
得分:0 
    int c, lastc;          //*这里就出错了,你还怎么理解?字符能用整形来定义?*//
    lastc = NONBLANK;
    while((c = getchar()) != EOF)   //*EOF是回车字符,判断输入的不是回车键就把这个字符负责给c*//
    {
        if(c != ' ')         //*判断C不是空格就输出C*//
            putchar(c);
        if(c == ' ')        //*判断如果C是空格 *//
            if(lastc != ' ')  //*这里的laftc根据前面的意思应该是字符a,也就是说当a不等于空格的时候输出c*//
                putchar(c);
        lastc = c;          //*将c赋值给lastc*//  
 上面是我对你写出来的这个程序的理解,我想那样写的话应该是错误了。我想你理解了半天就是在理解一个错误的东西。写程序的人应该是觉得lastc好想就是下一个字符的意思。我就纳闷...

2009-11-12 16:39
michaelyj
Rank: 1
来 自:上海
等 级:新手上路
帖 子:55
专家分:0
注 册:2009-10-27
收藏
得分:0 
为什么要用int来声明变量,经典书the c programming language 新版10页上是这么说的。

在没有输入时,getchar函数将返回一个特殊值,这个特殊值与任何实际字符都不同。这个值称为EOF。我们在声明变量C的时候,必须让它大到足以存放getchar函数返回的任何值。这里之所以不把C声明成char类型,是因为它必须足够大,除了能存储任何可能的字符外还要能存储文件结束符EOF。因此,我们将C声明成int类型。

小弟我也搞不懂它说的“足够大”是什么意思?

这个程序是这本书的练习题,
小弟做不来,就翻了此本书附带的练习解答手册,手册上是这么写的。

我百思不得其解啊,请各位高手帮帮忙啊!
2009-11-12 17:17
小楼ai
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2009-11-11
收藏
得分:0 
O(∩_∩)O~斑竹啊~我也刚刚碰到这个问题,这个程序写出来,不能够将连续的空格输入变成一个空格输出,我也纳闷
2009-11-12 18:51
小楼ai
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2009-11-11
收藏
得分:0 
回复 7楼 李若斌
这个程序的本意是lastc 是上一个字符
2009-11-12 18:52
快速回复:有道程序分析不来,请指点迷津~
数据加载中...
 
   



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

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