思路:
读取字符串后,一个单词连同它后面的空格,存储到二维数组的同一行里。最后一个单词后面是没有空格的,所以存储的时候要加个空格。
先输出最后一行,最后输出第一行
程序:
#include<stdio.h>
#include<string.h>
#define H 200
#define L 15
int main()
{
//用二维数组,每个单词存到一行里,先输出最后一行,最后输出第一行
char word[H][L] = { '\0' }, str[1000] = {'\0'};
//gets(str);
scanf("%[^\n]\n",str);
//printf("%s\n", str);
int i, j, k = 0;
int Hang = 200;
for (i = 0; i < Hang; i++)
{
for (j = k; j <= strlen(str); j++)
{
word[i][j - k] = str[j];
if (str[j] == ' ')
{
k = j + 1;
break;
}
if (str[j] == '\0')
{
word[i][j - k] = ' ';
Hang = i+1; // Hang就是单词个数
}
}
}
for (i = Hang-1; i >= 0; i--)
{
for(j=0;j<L;j++)
{
if(word[i][j]=='\0')
break;
printf("%c", word[i][j]);
}
}
}
#include<string.h>
#define H 200
#define L 15
int main()
{
//用二维数组,每个单词存到一行里,先输出最后一行,最后输出第一行
char word[H][L] = { '\0' }, str[1000] = {'\0'};
//gets(str);
scanf("%[^\n]\n",str);
//printf("%s\n", str);
int i, j, k = 0;
int Hang = 200;
for (i = 0; i < Hang; i++)
{
for (j = k; j <= strlen(str); j++)
{
word[i][j - k] = str[j];
if (str[j] == ' ')
{
k = j + 1;
break;
}
if (str[j] == '\0')
{
word[i][j - k] = ' ';
Hang = i+1; // Hang就是单词个数
}
}
}
for (i = Hang-1; i >= 0; i--)
{
for(j=0;j<L;j++)
{
if(word[i][j]=='\0')
break;
printf("%c", word[i][j]);
}
}
}