第7周 C语言程序设计(新2版) 练习1-19 颠倒字符串中的字符

来源:互联网 发布:广西南宁移动网络缴费 编辑:程序博客网 时间:2024/04/30 08:05

问题及代码:

/*将输入字符串s中的字符颠倒过来*/  #include <stdio.h>  #define MAXLINE 1000 int getline(char line[],int maxline); void reverse(char s[]);   main()  {      char line[MAXLINE];  //当前输入行     int len;    while((len=getline(line,MAXLINE))>0)       {      reverse(line);     printf("%s",line);     }} /*颠倒输入字符串的字符*/     void reverse(char s[])     {        int i,j;   // j为第一个字符下标,i为最后一个字符下标     char c;    i=0;         while(s[i]!='\0')           i++;      //输入一个字符数组,直到遇到'\0'为止       i--;   //去掉最后一个'\0'符号          if(s[i]=='\n')    i--;   //此时的i已经是达到最大 j=0; /*每置换一次,即第一个与倒数第一个互换, 之后,倒数第二与第二互换,直到j>=i停止 */ while(j<i){         c=s[j]; s[j]=s[i]; s[i]=c;     i--;     j++;     }   }      /*输入一行,并返回其长度*/         int getline(char s[],int lim)         {            int c,i,j;            j=0;    //j记录复制到字符串s中字符的个数           for(i=0;(c=getchar())!=EOF&&c!='\n';i++)  //不再检查字符数是否超出数组s的限制               if(i<lim-2)   //数组s的最后一个下标是lim-1;               {                  s[j]=c;                  j++;              }           if(c=='\n')               {                s[j]=c;               j++;                 i++;                 }            s[j]='\0';  //字符串末尾以'\0'为结尾不能漏了             return i;         }  


运行结果:

学习心得:

颠倒字符串,注意先去掉'\0'和'\n'.

知识总结:

要颠倒字符串,可以通过循环判断第一个j与最后一个下标i的大小,之后再不断减少、增加对比

0 0
原创粉丝点击