C++代码:
#include<cstdio>
#include<cstring>
#include<cstdlib>
/*
- 输入字符串存放在str一维数组中,
- 开辟二维数组ans[][] 分别存放每个单词和相应的字母个数 (末尾记得加入‘\0’)
- 计算出长度行和列 以空格作为单词之间的界限
gets 不接收回车 以回车作为结束符的标志
getline(cin,string )接收回车,以回车作为结束标志
cin空格和回车作为输入结束符,只接受空格之前的内容
else if ( str[i] == '\n') {
ans[row][col] = '\0';
break;//设置出口
}
*/
int main() {
char str[90] ;
//gets 以回车作为结束输入标志 scanf %s 以 空格和回车作为结束输入的标志 scanf %c 空格也能接收作为输入变量
gets(str);
int len = strlen(str);
int row = 0, col = 0;
char ans[90][90];
for (int i = 0; i < len; ++i) {
if (str[i] != ' '&& str[i] != '\n') {
ans[row][col++] = str[i];
//合并两条指令 col++;
}
else if ( str[i] == '\n') {
ans[row][col] = '\0';
break;//设置出口??是否有必要
}
else {
ans[row][col] = '\0';
++row;
col = 0;
}
}
for (int i = row; i >= 0; i--) {
printf("%s",ans[i]);
if (i > 0) {
printf(" ");
}
}
system("pause");
return 0;
}
单点测试代码:
#include<cstdlib>
#include<cstdio>
int main() {
int num = 0;
char ans[90][90];
while(scanf("%s",ans[num]) != EOF) {
num++;
}
for (int i = num - 1; i >= 0; i--) {
printf("%s", ans[i]);
if (i > 0) {
printf(" ");
}
}
system("pause");
return 0;
}