今天打算做10-0和10-1的,不过发现自己做起来有一点困难,还是觉得用10-0当例子,自己复习一下之前的内容吧~
10-0. 说反话 (20)
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。
输出格式:每个测试用例的输出占一行,输出倒序后的句子。

答案1
#include <stdio.h>//基本 输入输出的头文件
#include <string.h>// 要使用字符串函数的头文件
char str[81];//定义了一个字符串,str数组 长度为81
//在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成
int main()
{
int i, k;
char *p;//定义了指针p
getchar(str);//使用字符串输入函数 读取字符到str
//【注意:getchar的以“空格”终止】
k = strlen(str);//计算长度 那个单词的长度
p = str + k;//
while (1)
{
if ( p == str )
{
printf("%s\n", p);
break;
}
if (*p == ' ' && *(p+1) != ' ')
{
*p = '\0';
printf("%s ", p+1);
}
p--;
}
return 0;
}
getchar报错处理:
too manyarguments to function‘getchar’在devc++怎么解决?
说调用getchar函数时()中写的实个数参太多了。getchar是没有参数的,所以调用时( )中要空着。

gets(数组)函数
从stdin流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为‘\0’空字符,并由此来结束字符串。
getchar()和gets()的选择
从标准输入读入一个字符
读取单个字符,并且马上做出处理。——getchar()
char ch;
ch=getchar();
//【“hello”---"olleh"】
独取字符数组,换行or回车orEOF后,再统一处理。——gets()
#include <stdio.h>
#include <string.h>
char str[81];
int main()
{
gets(str);
答案2
#include <stdio.h>
int main(void){
char ch[81];
gets(ch);
char *p = ch;
char *ans = NULL;
int flag = 1; //判断是否结束
//让p指向最后
while(*(p+1) != '\0'){
p++;
}
while(flag){
if(*p == ' ') //如果p所指的是空格
{
ans = p+1; //ans就指向p的下一个
while(*ans != '\0' && *ans != ' '){
printf("%c",*ans);
ans++;
} //输出p后面一直到空格或\0的内容
printf(" "); //打印空格
}
if(p == ch) //如果p回到了第一个
{
flag = 0; //结束
ans = p; //ans就指向p所指的位置
while(*ans != '\0' && *ans != ' '){
printf("%c",*ans);
ans++;
}
}
p--; //p向前移动一位
}
return 0;
}



