本篇文章给大家谈谈c语言字符串循环语句倒序输出,以及c语言如何倒序输出字符串对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
1、c语言用循环的方法,把输入的一个整数,倒序输出2、用c语言倒序输出字符串3、请教C语言字符串倒序输出4、用C语言写 字符串逆序输出
c语言用循环的方法,把输入的一个整数,倒序输出
思路:可以利用while循环依次对其进行对10取余输出并除10操作直到其为0为止,输出的结果就是该整数的倒序。
参考代码:
#include stdio.h
int main()
{
int i;
scanf(“%d”,i);
while(i)
{
printf(“%d “,i%10);
i/=10;
}
return 0;
}
/*
输出:
12345
5 4 3 2 1
*/
用c语言倒序输出字符串
思路:
用一个足够长的字符数组来接受用户的输入,然后从最后数组最后一个位置开始输出字符。
代码如下:
#include stdio.h
#include string.h
#define BUFFER 1024 /*定义常量BUFFER,值为1024,作数组长度*/
int main(void)
{
int i;
char a[buffer];
gets(a); /*将用户的输入存进字符数组*/
for(i=strlen(a)-1;i=0;i–) /*从数组的最后位置开始输出字符*/
printf(“%c”,a[i]); /*以字符的格式依次显示每个字符*/
printf(“\n”);
return 0;
}
程序运行截图如下:
请教C语言字符串倒序输出
#includestdio.h
#includestring.h
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判断条件与循环条件不正确
已经做了修改,看符合要求不,不行的话,再说!!!
又做了修改了,看符合要求不??
不会吧,我调试通过还运行了!!不然怎么会发上来啊!!至于算法问题我给注释吧,你看看!!
用C语言写 字符串逆序输出
逆序输出有很多种,具体的实现方法取决于你题目的要求
1. 如果只是要求逆序输出,那么可以采用类似的方法:
void reverse(char *s)
{
if(*s==’\0′)
return;
reverse(s+1);
printf(“%c”,*s);
}
这种方法在s很长的情况下会一直递归到底,不是很好。
2. 如果需要将字符串整个逆序在函数外面输出,那么可能希望采用返回字符串指针的方式;实现如下:
char * reverse( char* s )
{
static char *p = s+strlen(s)-1; //p是一个静态变量,指向当前递归层处理的字符串尾,而s指向字符串头
if(s p)
{
char c = *p; //交换头尾字符
*p = *s;
*s = c;
p–; //尾向前挪一个
reverse(s+1); //相当于头向后挪一个
}
return s;
}
3.1 当然,有的时候,并不需要reverse函数本身递归,而是可以借助一些辅助的递归函数,比如说:
void reversehelp(char * head, char * end)
{
if (head end)
{
char c = *head;
*head = *end;
*end = c;
reversehelp(++head, –end);
}
}
然后在调用时像这样调用:
char * reverse(char * s)
{
char * end = s + strlen(s) – 1;
reversehelp(s, end);
return s;
}
3.2 类似的辅助函数还可以采用一个字符串指针和一个长度参数的方式,如下例:
void reversehelp( char* s, int n )
{
if ( n 1 )
{
char c = s[n-1];
s[n-1] = s[0];
s[0] = c;
reversehelp( s+1, n-2 );
}
}
然后在调用时如下:
char *reverse(char *s)
{
reversehelp( s, strlen(s) );
return s;
}
c语言字符串循环语句倒序输出的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言如何倒序输出字符串、c语言字符串循环语句倒序输出的信息别忘了在本站进行查找喔。