c语言里如何倒序输出字符,倒序输出字符 C语言

匿名用户

1级

2010-11-26 回答

#include

#include

void main()

{

char string1[200]; //用于存放输入的字符串

char string2[200]; //用于存放倒序后的字符串

int invertion(char *ch1, char *ch2); //声明函数

printf("Please input a sentences:\n");

gets(string1); //这里不要用scanf,因为scanf遇到空白符就会结束

printf("Your inputed sentences is:%s\n", string1);

invertion(string1, string2);

printf("The invertion sentences is:%s\n", string2);

getchar();

}

int invertion(char *ch1, char *ch2)/*char1 接收实参传过来的原字符串指针 char2 接收倒序后的新字符串返回主函数*/

{

int count = 1,num=0;

char *ch=ch1;

for(;*ch1!='\0';ch1++)// 统计单词个数

{

if(*ch1==' ')

count++; //单词数等于空格数加1,前面把count初始化为1就是这个原因

if(*ch1==' '&&*(ch1+1)==' ') //防止单词之间有2个空格符而多计数了一个单词数

count--;

}

printf("count = %d\n", count);

ch1=ch1-1;//前面的ch1经过循环之后已经指向字符串的结束标志'\0',这里减1是为了让它指向字符串的最后一个字符

while(ch1>=ch)//让ch1从指向string1的最后一个字符开始往前递减,当减到字符串的首个字符时结束

{ int j=num; //保存num,后面要用到这个数

if(*ch1!=' ')//记录每个单词的长度 ,以空格符作为标志

num++;

else // 知道了每个单词的长度之后,就可以用循环将字符以单词为单位写入数组string中,这样的话单词内就不会倒序了

{

for(int i=1;i<=j;i++,num--)

*(ch2-num)=*(ch1+i);

*ch2=*ch1;

}

ch1--;

ch2++;

}

for(int i=1;i<=num;i++,ch2++)//因为string1的第一个单词前没有空格符,肯定输不出来,所以单独用一个循环将其输出

*(ch2-num)=*(ch1+i);

*ch2='\0'; //string2的结束标志

}

这是我做了修改之后的程序,看看符不符合要求!!

你的那个定义的变量太多,很混乱!循环语句太乱了,if判断条件与循环条件不正确

已经做了修改,看符合要求不,不行的话,再说!!!

又做了修改了,看符合要求不??

不会吧,我调试通过还运行了!!不然怎么会发上来啊!!至于算法问题我给注释吧,你看看!!

  • 2
    点赞
  • 3
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值