| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1257 人关注过本帖
标题:每日一题!NO.1(适合新手做练习)(以给答案)
只看楼主 加入收藏
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
程序代码:
#include <stdio.h>
#define SIZE 81

int main(void) {
    char str_in[SIZE], str_out[SIZE], * p_in = str_in, * p_out = str_out;
    gets(str_in);
    while(*p_in) {
        if(*p_in == ' ' && *(p_in + 1) != ' ') {
            *p_out++ = *p_in++;
        } else if(*p_in == ' ' && *(p_in + 1) == ' ') {
            p_in++;
            continue;
        } else {
            *p_out++ = *p_in++;
        }
    }
    *p_out = '\0';
    puts(str_out);
    return 0;
}

图片附件: 游客没有浏览图片的权限,请 登录注册




[ 本帖最后由 lz1091914999 于 2011-6-5 12:29 编辑 ]

My life is brilliant
2011-06-05 12:25
gupiao175
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:40
帖 子:1787
专家分:7527
注 册:2007-6-27
收藏
得分:0 
#include <stdio.h>
#define SIZE 81

int main(void) {
    char str_in[SIZE], str_out[SIZE], * p_in = str_in, * p_out = str_out; /*定义2个数组和2个指针,一个为输入,一个为输出,并把指针指向2个数组的首地址!*/
    gets(str_in);/*获取输入字符串*/
    while(*p_in) {/*当首地址存在的时候,也就是有输入的动作发生即进入循环,前提只要输入的不是回车换行,就会继续循环*/
        if(*p_in == ' ' && *(p_in + 1) != ' ') {/*当输入的字符为空格,但是其后紧挨着的字符不为空格就正常的执行地址指向,p_in赋给p_out*/
            *p_out++ = *p_in++;
        } else if(*p_in == ' ' && *(p_in + 1) == ' ') {/*当输入的字符为空格,其后紧挨着的字符也为空格的时候,让p_in指针后移一位地址,也就是略过这个空格,并且退出当前循环(而不是真个循环),并进行下一次字符输入的循环判断,直到这个字符串输入结束*/
            p_in++;
            continue;
        } else {
            *p_out++ = *p_in++;/*否则正常的进行指针赋值*/
        }
    }
    *p_out = '\0';  /*增加字符串结束标志*/
    puts(str_out);  
    return 0;
}

我喜欢这个,比较适合像我这样的菜鸟看懂!上面是我为lz1091914999的附加注释!方便像我这样的新人学习!如有解释错误,欢迎指正!
7#的代码虽然简短,但是理解起来还真的挺吃力的!

[ 本帖最后由 gupiao175 于 2011-6-5 15:59 编辑 ]

Q:1428196631,百度:开发地 即可找到我,有事请留言!
2011-06-05 15:55
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
回复 12楼 gupiao175
呵呵,谢谢你啦,我比较懒!

My life is brilliant
2011-06-05 16:02
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
以下是引用gupiao175在2011-6-5 15:55:22的发言:

#include
#define SIZE 81

int main(void) {
    char str_in, str_out, * p_in = str_in, * p_out = str_out; /*定义2个数组和2个指针,一个为输入,一个为输出,并把指针指向2个数组的首地址!*/
    gets(str_in);/*获取输入字符串*/
    while(*p_in) {/*这个是当读到'\0'时结束循环,因为'\0' == 0所以循环会中止,呵呵其它的都对了*/
        if(*p_in == ' ' && *(p_in + 1) != ' ') {/*当输入的字符为空格,但是其后紧挨着的字符不为空格就正常的执行地址指向,p_in赋给p_out*/
            *p_out++ = *p_in++;
        } else if(*p_in == ' ' && *(p_in + 1) == ' ') {/*当输入的字符为空格,其后紧挨着的字符也为空格的时候,让p_in指针后移一位地址,也就是略过这个空格,并且退出当前循环(而不是真个循环),并进行下一次字符输入的循环判断,直到这个字符串输入结束*/
            p_in++;
            continue;
        } else {
            *p_out++ = *p_in++;/*否则正常的进行指针赋值*/
        }
    }
    *p_out = '\0';  /*增加字符串结束标志*/
    puts(str_out);  
    return 0;
}

我喜欢这个,比较适合像我这样的菜鸟看懂!上面是我为lz1091914999的附加注释!方便像我这样的新人学习!如有解释错误,欢迎指正!
7#的代码虽然简短,但是理解起来还真的挺吃力的!
看来你对指针还不太熟悉啊!呵呵

My life is brilliant
2011-06-05 16:10
redunkind
Rank: 2
等 级:论坛游民
帖 子:36
专家分:14
注 册:2011-4-10
收藏
得分:0 
新手表示这些还是有点难度啊
2011-06-05 16:14
gupiao175
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:40
帖 子:1787
专家分:7527
注 册:2007-6-27
收藏
得分:0 
以下是引用lz1091914999在2011-6-5 16:10:18的发言:

看来你对指针还不太熟悉啊!呵呵
呵呵,谢谢指正!

Q:1428196631,百度:开发地 即可找到我,有事请留言!
2011-06-05 16:50
qldxsun
Rank: 4
等 级:业余侠客
帖 子:125
专家分:240
注 册:2011-6-4
收藏
得分:0 
#include<stdio.h>
#define N 100
void main()
{
    printf("请输入正文,以回车结束\n");
    char s[N];
    gets(s);
    int i=0;
    while(s[i]!='\0')
    {
        printf("%c",s[i]);
        if(s[i]==' ')
            while(s[i+1]==' ')
                i++;
        i++;
    }
}
2011-06-05 17:50
qldxsun
Rank: 4
等 级:业余侠客
帖 子:125
专家分:240
注 册:2011-6-4
收藏
得分:0 
回复 13楼 lz1091914999
哥们做什么工作的?交个朋友吧!qq250615307
2011-06-05 17:56
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
回复 18楼 qldxsun
我的QQ就是1091914999

My life is brilliant
2011-06-05 17:57
啊C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:84
专家分:177
注 册:2010-6-24
收藏
得分:0 
回复 14楼 lz1091914999
谢谢大家这么多的回答,但很多都看不懂,注释是必须的,毕竟这是针对新手的,
上面这样就很好,今天看了很多的思路对也学到了一点点皮毛。呵呵!
每日一题还希望大家的多多支持!

亲爱的朋友们动起手来吧,让我们一起迈向C语言的世界!
2011-06-05 21:41
快速回复:每日一题!NO.1(适合新手做练习)(以给答案)
数据加载中...
 
   



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

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