题目描述:(总结C语言字符串的用法)测试
给定一句英语,要求你编写程序,将句中全部单词的顺序颠倒输出。 输入格式: 测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。 输出格式: 每一个测试用例的输出占一行,输出倒序后的句子。 输入样例: Hello World Here I Come 输出样例: Come I Here World Hello
本人AC代码:spa
方法一:(改进版)blog
// 1009 说反话 (20 分) // 给定一句英语,要求你编写程序,将句中全部单词的顺序颠倒输出。 // 时间 2019年7月15日 # include <stdio.h> # include <string.h> int main(void) { char S[100]; int tail, head; // 读入字符串 gets(S); int len = strlen(S); head = tail = len-1; for (int i=len-1; i>=0; i--) { if (S[i] == ' ' || i==0) { head = i; for (head; head<=tail;head++) { if (S[head] != ' ') printf("%c",S[head]); } tail = i; if (i != 0) printf(" "); } } return 0; }
方法二:(初级版)(我已经不是当初写方法二时的我了,我也不知道咋想的 0.0)字符串
// 1009 说反话 (20 分) // 给定一句英语,要求你编写程序,将句中全部单词的顺序颠倒输出。 // 时间 2019年2月6日 # include <stdio.h> # include <stdlib.h> int main(void) { char S[100]; char ch; int i, j; int n; // 记录字符串的长度 int new_head, head, tail; for (i=0; i<100; i++) { S[i] = getchar(); if (S[i] == 10) // 换行符的ASCII码值为 10 当遇到就中止输入 break; } n = i; new_head = 0; for (i=0; i<n; i++) { tail = i; // 处理出去最后一组以外的全部字符 if (S[i] == 32) { tail--; head = new_head; for (j=head; j<tail; j++) { ch = S[head]; S[head] = S[tail]; S[tail] = ch; head++; tail--; if (head>=tail) break; } new_head = i+1; } // 处理最后一个单词 if (i == n-1) { tail = n-1; head = new_head; for (j=head; j<tail; j++) { ch = S[head]; S[head] = S[tail]; S[tail] = ch; head++; tail--; if (head>=tail) break; } } } for (i=n-1; i>=0; i--) { printf("%c",S[i]); } return 0; }