本文目录一览:
- 1、C语言中怎么求逆序
- 2、C语言-逆序输出
- 3、用C语言编程:将一个数组逆序输出
- 4、用C语言写 字符串逆序输出
- 5、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循环之后,循环就只执行一次了~