免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3140 | 回复: 14
打印 上一主题 下一主题

[C] 无聊时进来休息下 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-13 10:02 |只看该作者 |倒序浏览
呵呵。有时候我发现思维模式一旦固定了,还真难跳出来……

一个小题目哈,看大家能不能用最简单的方法解决了,不要使用复杂和高深的技巧(如指针)。
编写一个程序,把它的输入复制到输出,并在此过程中将相连的多个空格用一个空格代替。


下面是我想到的——
#include <stdio.h>
#include <stdlib.h>

int main()
{
&nbsp;&nbsp;&nbsp;&nbsp;int c = 0;

&nbsp;&nbsp;&nbsp;&nbsp;int spaceFlag = 0;

&nbsp;&nbsp;&nbsp;&nbsp;while(1)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Read

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c = getchar();

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Print

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(spaceFlag==0)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;putchar(c);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(c!=' ')
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;putchar(c);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Mark Flag

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(c==' ')
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;spaceFlag = 1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;spaceFlag = 0;
&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;return 1;
}


刚开始的时候,还想用2个变量来读取。结果越想越复杂了。发现解决问题,不能让问题发散,得让问题收敛才行啊。如果想解决一个问题,然后为了解决这个问题又引发新的问题,那就比较难解决掉了。唉,胡言乱语了。贴出来,看看大家还有没更好的办法呢?

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
2 [报告]
发表于 2008-08-13 10:03 |只看该作者
C语言程序设计中的题目?

论坛徽章:
0
3 [报告]
发表于 2008-08-13 10:12 |只看该作者
原帖由 Godbach 于 2008-8-13 10:03 发表
C语言程序设计中的题目?

恩。平时工作是用不到C的,重新看下,就当温故而知新了。:wink: C还是很有味道的。
看来解决问题,也有很多种方法啊。要把这些方法归纳起来,就强大了。以后,就知道哪类问题该用啥方法解决会更有效了。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
4 [报告]
发表于 2008-08-13 10:13 |只看该作者
呵呵,是啊。偶很庆幸,工作中主要是用C。可以好好的深入一下C。

论坛徽章:
0
5 [报告]
发表于 2008-08-13 10:18 |只看该作者
原帖由 Godbach 于 2008-8-13 10:13 发表
呵呵,是啊。偶很庆幸,工作中主要是用C。可以好好的深入一下C。

呵呵。 那以后C方面的问题可以多向你请教下。这很久没摸C了,又退回入门级别了……哈哈!就只会写Hello World了。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
6 [报告]
发表于 2008-08-13 10:22 |只看该作者
原帖由 iheshi 于 2008-8-13 10:18 发表

呵呵。 那以后C方面的问题可以多向你请教下。这很久没摸C了,又退回入门级别了……哈哈!就只会写Hello World了。


不客气。大家一起交流。本版块高手云集。你有问题在这里一提,就会有不少人回答的

论坛徽章:
0
7 [报告]
发表于 2008-08-13 11:07 |只看该作者
感觉四川成都的兄弟们钻研的精神都很强啊,学习了.

论坛徽章:
0
8 [报告]
发表于 2008-08-13 12:36 |只看该作者

  1. /*
  2. *[url]http://bbs.chinaunix.net/thread-1241880-1-1.html[/url]
  3. *
  4. *问题:编写一个程序,把它的输入复制到输出,并在此过程中将相连的多个空格用一
  5. *个空格代替。
  6. */

  7. #include <stdio.h>

  8. int main(void)
  9. {
  10.         int c = 0;
  11.         int f = 0;

  12.         while(1){
  13.                 if((c = getchar()) == EOF)
  14.                         return 1;

  15.                 if(' ' != c){
  16.                         f = 0;
  17.                         putchar(c);
  18.                 }
  19.                 else{
  20.                         if(0 == f)
  21.                                 putchar(c);
  22.                         f = 1;
  23.                 }
  24.         }

  25.         return 0;
  26. }
复制代码

[ 本帖最后由 veking 于 2008-8-13 12:49 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2008-08-13 13:10 |只看该作者
原帖由 veking 于 2008-8-13 12:36 发表

/*
*http://bbs.chinaunix.net/thread-1241880-1-1.html
*
*问题:编写一个程序,把它的输入复制到输出,并在此过程中将相连的多个空格用一
*个空格代替。
*/

#include

int main(void)
{
...



呵呵。思路差不多的。

论坛徽章:
0
10 [报告]
发表于 2008-08-13 13:19 |只看该作者
读到空格时,能否一直接着读,当最后一个不是空格时,先打印空格,再打印读到的字符
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP