| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5396 人关注过本帖
标题:编写程序以每行一个单词的形式打印其输入-哪一种思路比较好,好在哪里?可 ...
取消只看楼主 加入收藏
Man丶諦
Rank: 1
等 级:新手上路
帖 子:50
专家分:5
注 册:2016-7-22
结帖率:100%
收藏
已结贴  问题点数:18 回复次数:6 
编写程序以每行一个单词的形式打印其输入-哪一种思路比较好,好在哪里?可以改进吗?
程序代码:
/* 编写一个程序,以每行一个单词的形式打印其输入 */

/*

 * 思路:

 *    判断不是空格,制表符,换行就直接输出

 *    如果是就自己输出换行

 *      这样就可以把输入的单词以每行打印了

 */

#include <stdio.h>

int main(void)
{
        int c;

        while ( (c = getchar()) != EOF ) {
                if (c != ' ' && c != '\t' && c != '\n'){
                        putchar(c);
                }
                else if ( c == ' ' || c == '\t' || c == '\n' )
                        printf("\n");
        }
        return 0;
}





程序代码:
  GNU nano 2.2.6                                     文件: lx_1_12_1.c                                                                               


#include <stdio.h>

#define IN 1             // 在单词内
#define OUT 0            // 在单词外

main()
{
        int c, state;

        state = OUT;
        while ( ( c = getchar() ) != EOF ){
                if ( c == ' ' || c == '\n' || c == '\t' ){      // 判断c等于空格,换行,tab:在判断状态是不是在一个单词内是就输出一个换行
                        if ( state == IN ){
                                putchar('\n');
                                state = OUT;
                        }
                }
                else if ( state == OUT ) {                      // 如果不是空格之类的,判断是否在单词内。不在就输出字符,并把状态改为在单词内
                        state = IN;
                        putchar(c);
                }
                else                                            // 不是空格并不在单词外就自己输出字符
                        putchar(c);
        }
}



搜索更多相关主题的帖子: 单词 制表符 编写程序 
2016-07-24 16:44
Man丶諦
Rank: 1
等 级:新手上路
帖 子:50
专家分:5
注 册:2016-7-22
收藏
得分:0 
回复 2楼 晓益
c里面还有这样的函数啊~我都不知道~
    我这个程序对单词的定义就是,连续的一串字符,没有空格/制表符/回车。
    都没有考虑符号。

如果要考虑到符号的话,全部用if语句是不是太臃肿了,每个符号都需要去判断?
 有没有什么函数可以实现这个功能?

电脑小白~啥也不懂~
现在掉进了Linux的坑~
从C语言开始~我的计算机旅行~
2016-07-24 17:17
Man丶諦
Rank: 1
等 级:新手上路
帖 子:50
专家分:5
注 册:2016-7-22
收藏
得分:0 
回复 5楼 晓益
对啊,这样就只会输出大小写字母了~

  

电脑小白~啥也不懂~
现在掉进了Linux的坑~
从C语言开始~我的计算机旅行~
2016-07-24 17:32
Man丶諦
Rank: 1
等 级:新手上路
帖 子:50
专家分:5
注 册:2016-7-22
收藏
得分:0 
我重新测试了第一个程序,发现一个问题。
    如果连续输入多个空格的话,它就会输出多个换行符。
 

电脑小白~啥也不懂~
现在掉进了Linux的坑~
从C语言开始~我的计算机旅行~
2016-07-24 17:58
Man丶諦
Rank: 1
等 级:新手上路
帖 子:50
专家分:5
注 册:2016-7-22
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <ctype.h>

int main(void)
{
        int c, test;
        test = 0;

        while( (c = getchar()) != EOF )
                if(isalpha(c)){
                        putchar(c);
                        test = 1;
                }
                else if( c == ' ' || c == '\n' || c == '\t'){
                        if (test == 1){
                                printf("\n");
                                test = 0;
                        }
                }
        return 0;
}


/*

 * 输出一个字符后把测试的值变为1

 *  直到,一个单词输出完换行后,才继续把测试的值变为0

 *  这样的话,输出一个单词后只会换行一次,就解决了输入多个空格后出现的问题

 */

电脑小白~啥也不懂~
现在掉进了Linux的坑~
从C语言开始~我的计算机旅行~
2016-07-24 18:11
Man丶諦
Rank: 1
等 级:新手上路
帖 子:50
专家分:5
注 册:2016-7-22
收藏
得分:0 
程序是改出来了,不过思路还是好混乱~

电脑小白~啥也不懂~
现在掉进了Linux的坑~
从C语言开始~我的计算机旅行~
2016-07-24 18:13
Man丶諦
Rank: 1
等 级:新手上路
帖 子:50
专家分:5
注 册:2016-7-22
收藏
得分:0 
回复 10楼 晓益
写完就觉得有点不对劲,原来是这样。

电脑小白~啥也不懂~
现在掉进了Linux的坑~
从C语言开始~我的计算机旅行~
2016-07-24 18:47
快速回复:编写程序以每行一个单词的形式打印其输入-哪一种思路比较好,好在哪里 ...
数据加载中...
 
   



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

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