标题:每日一题!NO.1(适合新手做练习)(以给答案)
只看楼主
啊C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:84
专家分:177
注 册:2010-6-24
结帖率:91.67%
已结贴  问题点数:1 回复次数:22 
每日一题!NO.1(适合新手做练习)(以给答案)
题目:
写一个程序,将输入复制到输出,当输入正文有连续一个以上的空格时,在输出中用一个空格代替。
答案明日公布。


时间过得真快,说明哈,我出这帖子只是为了我们这些菜鸟,有动手的动机,和交流各为朋友的思路!
在下公布的答案不是唯一的答案,但是也是实现题目的方法之一。都是简单型的!
代码如下
程序代码:
#include<stdio.h>
void main()
{
    int c,lastc='a';
    while((c=getchar())!=EOF)
    {
        if(c!=' '||lastc!=' ')
            putchar(c);
        lastc=c;

    }
}



[ 本帖最后由 啊C 于 2011-6-5 21:07 编辑 ]
搜索更多相关主题的帖子: color 公布 答案 
2011-06-04 22:13
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
得分:0 
菜鸟坐等答案

                                         
===========深入<----------------->浅出============
2011-06-04 22:45
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
得分:1 
做过的小练习,压缩空格。
程序代码:

root@~/prog #cat delblank.c
#include <stdio.h>

int main (void) {

        char s[80],*ptr=s;
        void delblank (char *str);

        printf("Enter some string:\n");
        gets(ptr);
        delblank(ptr);
        printf ("After compress blank,The string is:\n%s\n",ptr);

        return 0;

}

void delblank (char *str) {
        int i=0,j;
        char *p;

        while(*(str+i)) {
                if(*(str+i)==' ' && *(str+i+1)==' ') {
                        p=str+i+1;
                        j=0;
                        while(*(p+j)) {
                                *(p+j)=*(p+j+1);
                                j++;
                        }
                        *(p+j+1)='\0';
                        i--;
                }
                i++;
        }
}
root@~/prog #./delblank
Enter some string:
a b        c d e                  f
After compress blank,The string is:
a b c d e f
root@~/prog #

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-06-04 23:23
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
得分:0 
以下是引用laoyang103在2011-6-4 22:45:25的发言:

菜鸟坐等答案

老杨要是菜鸟, 我立马去。。。。。

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-06-04 23:24
马甲1号
Rank: 5Rank: 5
等 级:职业侠客
帖 子:68
专家分:312
注 册:2011-4-4
得分:0 
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    int i, j;
    char str[100], save[100];
    cin.getline(str, 100);
    int flag=0;
    for(i = j = 0; str[i]; ++i) {
        if (' '==str[i]){
            flag = 1;
            continue;
        }
        if (flag) {
            save[j++] = (flag = 0, ' ');
        }
        save[j++] = str[i];
    }
    save[j] = 0;
    cout << save <<endl;
    return 0;
}


???????
2011-06-05 00:37
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
得分:0 
以下是引用laoyang103在2011-6-4 22:45:25的发言:

菜鸟坐等答案
老杨要是菜鸟,我立马撤
2011-06-05 06:51
kwxx
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:309
专家分:913
注 册:2009-5-11
得分:0 
程序代码:
#include <stdio.h>
int main()
{
    char s[100];
    int i,j;

    gets(s);
    if(s[0])
        for(i=1,j=1;s[i];i++)
            if(s[j-1]!=' '||s[j-1]==' '&&s[i]!=' ')s[j++]=s[i];
    s[j]=0;
    puts(s);
    return 0;
}
2011-06-05 07:50
w123012306
Rank: 9Rank: 9Rank: 9
来 自:湖南
等 级:蜘蛛侠
威 望:4
帖 子:307
专家分:1180
注 册:2010-4-22
得分:0 
我也等答案

楼上,楼下的一定要幸福开心哦!
2011-06-05 08:29
gupiao175
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:40
帖 子:1787
专家分:7527
注 册:2007-6-27
得分:0 
以下是引用kwxx在2011-6-5 07:50:51的发言:

#include  
int main()
{
    char s[100];
    int i,j;
 
    gets(s);
    if(s[0])
        for(i=1,j=1;s;i++)
            if(s[j-1]!=' '||s[j-1]==' '&&s!=' ')s[j++]=s;
    s[j]=0;
    puts(s);
    return 0;
}
GOOD!简单犀利!
但是我还没看懂其中的原理。

Q:1428196631,百度:开发地 即可找到我,有事请留言!
2011-06-05 09:18
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
得分:0 
回复 7楼 kwxx
最好是定义i,j为静态变量或者初始化为0,否则直接输入回车,程序报错。
2011-06-05 09:24



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-341913-1-1.html




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

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