PAT 1009 说反话
作者:互联网
输入格式:
测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。
输出格式:
每个测试用例的输出占一行,输出倒序后的句子。
输入样例:
Hello World Here I Come
输出样例:
Come I Here World Hello
结果:
1 #include <cstdio> 2 #include <cstring> 3 4 int main(void){ 5 char str[90]; 6 fgets(str,90,stdin); 7 int len = strlen(str); 8 int r = 0, h = 0; 9 char ans[90][90] = {""}; 10 for(int i = 0;i<len; i++){ 11 if(str[i] == '\n'){ 12 13 }else if(str[i] != ' '){ 14 ans[r][h++] = str[i]; 15 } 16 else{ 17 r++; 18 h = 0; 19 ans[r][h] = '\0'; 20 } 21 } 22 for(int i = r; i >= 0;i--){ 23 printf("%s",ans[i]); 24 if(i>0) printf(" "); 25 } 26 getchar(); 27 return 0; 28 }
备注:
获得1:此题目最头痛的是对于str[90]的处理,按照教材基本学习要求,提供了gets函数,但是在PAT环境中根本不可以使用,就好像这个函数已经被删除了一样。换用fget(str,90,stdin)进行。但是这个函数在处理的时候与gets有很大的不同。最大的特点是str最后两个字符是 10(换行符),0(\0)。所以对于这个特殊的尾巴需要增加特殊处理。
获得2:目前从编译结果来看,经常会有warning,比如使用scanf,fget的时候,虽然标准化达到了非常好的要求,但是这些函数的返回值不可以忽略,解决方法是正视返回值,不忽视异常存在的可能。(实际上在PAT中输入是不可能异常的);另一个方法是弃用scanf,用cin代替。无论如何代替,一定要注意的是,cin和scanf不可以同时存在,这样会引起无法预料的结果。
标签:PAT,1009,int,scanf,str,反话,90,输入 来源: https://www.cnblogs.com/bobyin/p/10350097.html