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

问题及代码:

/*将输入字符串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的大小,之后再不断减少、增加对比

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值