c语⾔⾥如何倒序输出字符,倒序输出字符C语⾔匿名⽤户
1级
2010-11-26 回答
#include
#include
void main()
{undefined
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 接收倒序后的新字符串返回主函数*/
{undefined
int count = 1,num=0;
char *ch=ch1;
for(;*ch1!='\0';ch1++)// 统计单词个数
{undefined
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中,这样的话单词内就不会倒序了{undefined
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的结束标志
}printf怎么输出字符
这是我做了修改之后的程序,看看符不符合要求!!
你的那个定义的变量太多,很混乱!循环语句太乱了,if判断条件与循环条件不正确
已经做了修改,看符合要求不,不⾏的话,再说
⼜做了修改了,看符合要求不??
不会吧,我调试通过还运⾏了!!不然怎么会发上来啊!!⾄于算法问题我给注释吧,你看看!!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。