| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2296 人关注过本帖
标题:自认为完美的程序序,结果却出人意料,错在哪?望各位多多指教.
只看楼主 加入收藏
jiang5495
Rank: 1
等 级:新手上路
威 望:2
帖 子:296
专家分:0
注 册:2008-5-11
结帖率:100%
收藏
 问题点数:0 回复次数:28 
自认为完美的程序序,结果却出人意料,错在哪?望各位多多指教.
题目:将一个句子逆序输出如:输入:how are you.输出:you are how
我的方法:我定义一个二维数组str[N][N],每输入一个单词,就把它存入到一个str[N]中。
 然后把数组逆序输出。
我认为在理论上没有错误,但为什么答案出人意料。望各位指教。
下面是我自认为完美的程序,错在哪,望各位多多指教!
# include<stdio.h>
# define N 100
void main()
{
char str[N][N]={0};
int i,j=0,k;
for(i=0;;i++)
{
while(1)
{
str[i][j++]=getchar();
if(str[i][j-1]==' ')
break;
if(str[i][j-1]=='\n')
goto ab;
}
}
ab:;
for(k=i-2;k>=0;k--)
printf("%s",str[k]);
getch();
}
搜索更多相关主题的帖子: 程序 结果 指教 
2008-05-21 20:47
wltysy
Rank: 1
等 级:新手上路
帖 子:560
专家分:0
注 册:2008-5-2
收藏
得分:0 
for(i=0;;i++)?????
2008-05-21 20:53
jiang5495
Rank: 1
等 级:新手上路
威 望:2
帖 子:296
专家分:0
注 册:2008-5-11
收藏
得分:0 
for(i=0;;i++)
是用来对循环啊,不知你看懂我的程序没?我跳出循环的条件是放在while里面,
你所说的好象无关紧要,我想你你可能是没看仔细
2008-05-21 21:07
炽天使
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-5-8
收藏
得分:0 
# include<stdio.h>
# define N 100
void process(char str[][N],int i)
{
  for(int k=i;k>=0;k--)
  {
      printf("%s",str[k]);
      printf(" ");
  }
      printf("\n");
}
void main()
{
char str[N][N]={0};
int i=0,j=0;
while(1)
{
if((str[i][j++]=getchar())==' ')
{
    i++;
    str[i][j-1]='\0';
    j=0;
}
if(str[i][j-1]=='\n')
    {  str[i][j-1]='\0';
       process(str,i);
       break;
    }
}
}

[[it] 本帖最后由 炽天使 于 2008-5-21 21:27 编辑 [/it]]
2008-05-21 21:22
平常
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-5-21
收藏
得分:0 
说说我的看法
在你输入的时候
如:who are you?
这句话只在最后有回车,只给str[0]赋了值。
在输出的时候,因c 中字符串是以空格结束的,所以在输出第一个单词后认为已经结束。所以只输出who.
你没能把各个单词分别存储到str[0],str[1].....中去
我也是自己想的,不知对不对,希望能给你一点启示
2008-05-21 21:27
炽天使
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-5-8
收藏
得分:0 
都用函数了。。goto在你函数中的作用就是一个函数块的作用。。我帮你改好了
2008-05-21 21:31
faminxmu
Rank: 3Rank: 3
来 自:厦门
等 级:论坛游侠
帖 子:191
专家分:106
注 册:2008-4-23
收藏
得分:0 
回复楼主
#include<stdio.h>
#define N 3
void main()
{
     int i;
     char*name[N];
     for(i=0;i<N;i++)
     {
     name[i]=(char*)malloc(20);
     gets(name[i]);}
     for(i=N-1;i>=0;i--)
     printf("%s ",name[i]);
     system("pause");
     }

[[it] 本帖最后由 faminxmu 于 2008-5-21 22:39 编辑 [/it]]

在虚拟的世界中寻找目标。
2008-05-21 21:32
nobush
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2008-1-10
收藏
得分:0 
循環中,j沒有重置為 0
2008-05-21 21:34
faminxmu
Rank: 3Rank: 3
来 自:厦门
等 级:论坛游侠
帖 子:191
专家分:106
注 册:2008-4-23
收藏
得分:0 
用你的思想来做
#include<stdio.h>
#define N 3
void main()
{
     int i,j;
     char ch,name[N][N];
     for(i=0;i<N;i++)
     for(j=0;j<N;j++)
     {
     name[i][j]=getchar();
     ch=getchar();/*用来接收输入时的换行符*/
     }
     for(i=N-1;i>=0;i--)
     {
     printf("\n");                  
     for(j=0;j<N;j++)
     printf("%c",name[i][j]);
     }
     system("pause");
     }

在虚拟的世界中寻找目标。
2008-05-21 21:53
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
楼上你看看4楼的程序。。你的好像要写满100个数据才会倒叙的。。交互不好。。

[[it] 本帖最后由 sunkaidong 于 2008-5-21 22:02 编辑 [/it]]

学习需要安静。。海盗要重新来过。。
2008-05-21 21:57
快速回复:自认为完美的程序序,结果却出人意料,错在哪?望各位多多指教.
数据加载中...
 
   



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

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