#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
char charArray[100] = "";
gets(charArray);
if (strchr(charArray, ' ') == NULL) {
printf(charArray);
}
else {
while (strchr(charArray, ' ' )!= NULL) {
printf("%s ", strrchr(charArray, ' ') + 1);
*strrchr(charArray, ' ') = 0;
}
printf("%s", charArray);
}
return 0;
}
这是CSDN上一位大佬写的代码,很遗憾,在我准备写篇博客的时候,已经找不到他的博客地址了
通过他的解法,我新学了两个函数 strchr 以及 strrchr
另外,printf(str) 居然还能这样输出,但好像只能输入字符数组,详情还有待考究
最后还是贴上我自己的代码,改了半天测试点4还是通不过,难搞哦~
#include<stdio.h>
#include<string.h>
int main() {
int i, j, k;
char charArray[82] = { '\0' };
for (i = 0; i < 82; i++) {
scanf("%c", &charArray[i]);
if (charArray[i] == '\n') {
break;
}
}
int initialPositionRecord[80] = { 0 };
int letterNumberRecord[80] = { 0 };
int charNumber = 0;
int wordsNumber=0;
for (i = 0;; i++) {
if (charArray[i] == '\n') {
break;
}
charNumber++;
}
for (i = 0; i < charNumber; i++) {
if (charArray[i] >= 65 && charArray[i] <= 90 ) {
if(i==0||
(charArray[i-1]==' '&& charArray[i+1]==' ') ||
(charArray[i-1]==' ' && charArray[i+1]>=97 && charArray[i+1]<=122)
){
initialPositionRecord[wordsNumber] = i;
for (j = i;; j++) {
if (charArray[j] == 32 || charArray[j]=='\n' || charArray[j]=='\0') {
letterNumberRecord[wordsNumber] = j - i;
break;
}
}
wordsNumber++;
}
}
}
for (i = wordsNumber-1; i>=0; i--) {
for (k = initialPositionRecord[i];;k++) {
if (charArray[k] == ' ' || charArray[k]=='\n') {
break;
}
printf("%c", charArray[k]);
}
if (i != 0) {
printf(" ");
}
}
return 0;
}