| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1845 人关注过本帖
标题:有奖解题(二)
只看楼主 加入收藏
乌鸦丘比特
Rank: 1
等 级:新手上路
威 望:2
帖 子:625
专家分:0
注 册:2004-7-19
收藏
得分:0 

main() {char a[100],b[50]; int i,k=1,j=0; gets(a); for(i=0;a[i]!='\0';i++) {if(k&&a[i]!=' '){b[j]=i;k=0;j++;}

else if(!k&&a[i]==' ')k=1;}

for(i=j-1;i>=0;i--) {for(k=b[i];a[k]!=' '&&a[k]!='\0';k++) printf("%c",a[k]); printf(" ");}

getch();}


我喜欢创造,一只扑腾着翅膀向天空飞翔的乌鸦
2004-09-05 15:13
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
收藏
得分:0 

原来gets(a)函数也可以接收空格啊,我还以为他和scanf("%s",a)一样呢?

弄得我写那么麻烦?


2004-09-05 16:26
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
收藏
得分:0 
以下是引用live41在2004-09-05 12:00:49的发言:

基础知识:局部变量不赋初值就编译器自动赋个乱值,main函数里面的变量也算局部变量。

这样改了又可以:

#include<stdio.h> #include<string.h> main() {char a[100]; int i=0,j,k,m; gets(a); for(i=strlen(a),k=strlen(a);i>=0;i--) if(a[i]==' ') {j=i; for(m=j+1;m<k;m++) printf("%c",a[m]); printf(" "); k=j; } for(i=0;i<strlen(a);i++) if(a[i]!=' ') printf("%c",a[i]); else break; printf("\n"); getch(); }

只是把:while((c=getchar())!='\n') a[i++]=c;

改成了:gets(a);

改了以后数组就不用赋初值,这又是为什么呢?


2004-09-05 16:37
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 

不好意思昨天我没看你的代码,以为是变量区域问题,我运行了一下两个都没问题。

字符串输入函数gets 格式: gets(字符数组名) 功能:从标准输入设备键盘上输入一个字符串。 本函数得到一个函数值,即为该字符数组的首地址

哦,我知道你问什么了,不好意思,我一直没弄懂你问什么!

其实getchar读如单字符,所以当你在局部变量情况下,只有你输入的数组元素有值(a[i],i没到末尾的话a[i]之后都乱值),其他仍是乱值,而gets是读入串,把你输入的作为一段输入到a,就是无论你输入多少字符都到末尾,而且补空格。

[此贴子已经被作者于2004-09-05 18:30:06编辑过]

2004-09-05 18:22
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
以上结果完全正确的好象只有 空前

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2004-09-05 20:18
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
哦,我不对吗?

淘宝杜琨
2004-09-06 14:53
乌鸦丘比特
Rank: 1
等 级:新手上路
威 望:2
帖 子:625
专家分:0
注 册:2004-7-19
收藏
得分:0 
以下是引用knocker在2004-09-05 20:18:10的发言: 以上结果完全正确的好象只有 空前
我的有什么漏洞呢?是不是空格的问题?

我喜欢创造,一只扑腾着翅膀向天空飞翔的乌鸦
2004-09-06 17:42
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 

对,空格,字符数不能变。

void fun(char*s); int main() { char*string="today is a hot day" ; fun(string); printf("%s",string); getch(); } void fun(char*s)

{ char*a,*t,*y ;

t=s ; while(*t++); a=--t ; while(t-s>=0) { if(*t==' '||t-s==0) { y=t-s?t+1:t ; while(a-y)printf("%c",*y++); if(t-s)printf(" "); a=t ; } t--; } printf("\n"); }

我觉得我的算法还是太烦,感觉应该还有更精练的算法。


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2004-09-06 19:43
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 

就 空前 加30分吧。


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2004-09-06 19:55
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 

我的程序没错误啊!!!!


淘宝杜琨
2004-09-07 14:00
快速回复:有奖解题(二)
数据加载中...
 
   



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

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