C语言,为什么运行结果不是我想要的,多多指教!

来源:百度知道 编辑:UC知道 时间:2024/05/12 23:54:10
题目:将一个句子逆序输出如:输入: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();
}

你是初学者吧?你的那个程序实在有些异想天开的成分,我本来想在你的基础上改成功,可能是实在不太好改,只好写下面这个程序,没有用到指针,全是用数组操作:
#include<stdio.h>
#include<string.h>
#define N 100
char str[N][N];
int i,j;
void change();
int main(void)
{
for(i=0;;i++)
{ j=0;
printf("请输入数据:");
while(true)
{
str[i][j++]=getchar();
if(str[i][j-1]==EOF)
return 0;
if(str[i][j-1]=='\n')
{
str[i][j-1]='\0';
--j;
change();
printf("%s\n",str[i]);
break;
}

}
}
return 0;
}

void change()
{ int s=0;
char temp[N];
while(j>0)
{
temp[s++]=str[i][--j];
}
temp[s]='\0';
strcpy(str[i],temp);
}
你看一下有没有什么不明白的。

不懂。。。这是音乐问题吗?