1009 说反话

 1 #include<stdio.h>
 2 #include<string.h>
 3 int main()
 4 {
 5     char str[90];
 6     /*出现运行时错误常常可能是因为字符串数组的位置不够本题用的是不超过
 7     80个字符串的数组,由于每个字符串在存储的时候会自动在后面添加'\0'因
 8     此内存会多用一位,在开辟数组的时候需要小心,比如这道题开辟的时候就
 9     不要用str[80]而是用str[90]比较好否则测试点4(可能测试的是80个字符
10     )就会报错*/
11     char a[90][90];
12     gets(str);
13     /*gets()识别换行符\n作为输入结束,因此scanf完一个整数后如果要用gets
14     需要先用getchar接收整数后的换行符*/ 
15     int col=0,line=0;
16     int len=strlen(str);
17     for(int i=0;i<len;i++)
18     {
19         if(str[i]!=' ')
20             a[col][line++]=str[i];
21         else
22         {  
23            a[col++][line]='\0';
24            /*在字符串尾部需要添加'\0'以表示字符串结束
25            否则printf与puts无法识别字符串是否结束而输出一堆乱码*/
26            line=0;
27         }
28     }
29     for(int k=col;k>=0;k--)
30     {
31         printf("%s",a[k]);
32         if(k>0)
33           printf(" ");
34     }
35 }

 

posted @ 2019-08-08 16:05  gausstu  阅读(285)  评论(0编辑  收藏  举报