您的位置:

逆序的c语言,逆序c语言编程

本文目录一览:

C语言中怎么求逆序

因为这个数字很长,而且开头允许以零开始,所以有必要使用字符串来保存这个数字。然后用两个变量分别指向它的第一个数字和最后一个数字,在使用一个循环判断这两个数字是否相同,如果相同,就把前面的标加一,并且把后面的下标减去一,直到前面的下标大于后面的下标,或者两个下标所指的数字不相同。只要退出的时候两个下标的数字不相同,原来的数字就不是幸运数字,否则他就是一个幸运数字。

C语言-逆序输出

①要求

将正整数或负整数

从个位开始逆序输出。

涉及三个变量,

n是原数,

m用于储存提取的个位数,

y用于储存重新组合的逆序数。

②定义函数

#include stdio.h

int fun(int n)

{int m,y} ;

/*给y赋初值,组合数在组合之前为0。*/

y=0;

/*给m赋初值,将原数n的绝对值赋值给m。

我试了,也可以直接m=n,删除y=(n=0)?y:-y,结果一样有负号,绝对值具体还有什么用,等待大神解答。*/

if(n=0)m=n;

else m=-n;

/*当m不为0时,循环继续。

当m为0时,即提取到只剩一位数时,m=m/10=0,循环结束。*/

while(m!=0)

{y=y*10+m%10;

/*提取个位:m%10。

已经提取个位升为十位:y乘10。

逆序组合数:y。*/

m=m/10;}

/*降位提取个位:m/10

不断除10取整,屏蔽个位;

不断将十位降为个位,再提取;

直到只剩一位数,循环结束。*/

y=(n=0)?y:-y;

/*将负数的负号恢复。*/

return y;

}

③主函数

{int m1,m2;

scanf("%d%d",m1,m2);

printf("%d的逆序是%d\t",m1,fun(m1));

printf("%d的逆序是%d\t",m2,fun(m2));

return 0;

}

④思路整理

1.输入原数:n

2.求绝对值:m=|n|

3.提取个位:m%10

4.逆序组合:y=y*10+m%10

5.高位降位:m/10

6.恢复负号:y=(n=0)?y:-y

用C语言编程:将一个数组逆序输出

从最后一个元素,逆向遍历到数组的0元素,逐一输出即可实现。

1、创建数组;

2、输入值;

3、逆序遍历输出数组。

代码:int main(){ int a[10]; int i;

for(i = 0; i  10; i ++)

scanf("%d",a+i);

for(i = 9; i = 0; i --)

printf("%d ", a[i]);}

扩展资料:

将一个数组逆序输出。

1、程序分析:用第一个与最后一个交换。

2、程序源代码:

#define N 5

main()

{ int a[N]={9,6,5,4,1},i,temp;

printf(" original array: ");

for(i=0;i printf("%4d",a[i]);

for(i=0;i {temp=a[i];

a[i]=a[N-i-1];

a[N-i-1]=temp;

}

printf(" sorted array: ");

for(i=0;i printf("%4d",a[i]);}

参考资料:百度百科 c语言

用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语言简单逆序程序

算法没有问题,只是

for(i=0;in-1;i++);

{

for(int

j=0;jn-i-1;j++);

{

temp=a[j+1];

a[j+1]=a[j];

a[j]=temp;

}

}

去掉for循环之后的分号就好了

分号放在for循环之后,循环就只执行一次了~