倒置函数reverse的用法(C语言问题!!输入一个整数,将它逆序输出例如reverse(123)的返回值是321)

本文目录
- C语言问题!!输入一个整数,将它逆序输出例如reverse(123)的返回值是321
- 编写以下方法,返回倒置的函数 public static int reverse(int number)
- perl字符串倒置
- C++中对字符串如何使用reverse函数
- 求inverse、reverse、adverse三个词的用法上的区别
- 构造一个函数,使得函数运行以后,链表每个节点的元素都为原先的两倍
C语言问题!!输入一个整数,将它逆序输出例如reverse(123)的返回值是321
1、C 表示将输入的整数n传给reverse函数
2、C 表示定义一个long型变量res,并初始化
3、B 表示主函数(main)穿进来的值,如果为负数,则取反
4、B 倒置传入的参数number,res*10表示将原来res乘以10,再加上number%10;比喻说你传的是123,而res的初始值是0,123%10=3,那么res=3,第二次循环:由于123/10=12,所以res*10+number%10=30+2=32,第三次循环:12/10=1,所以res=res*10+number%10=320+1=321,第四次循环,number/10=0,结束循环,所以最后的res就是将传进来的值倒置之后的值。
这里给你分析了一下倒置的原理,望采纳!
编写以下方法,返回倒置的函数 public static int reverse(int number)
底下是个简单程序。方法很简单,number%10是取number的个位数字,然后将结果加入到res中,再用number = number/10把number的个位数字去掉,进入下一次循环。你可以拿着笔演算一遍,好了解算法的执行过程。
不过这个程序考虑的不全面,比如:负数问题?还有就是以0结尾的数字。比如reverse(10)的结果是1还是01?该程序返回的是1.
int reverse(int number){
int res = 0;
while(number != 0){
res = res * 10 + number % 10;
number = number/10;
}
return res;
}
perl字符串倒置
用reverse函数可以实现,我写了一个例子程序如下,程序中我用语句$line=《stdin》从键盘上读入一个字符串,然后倒置以后输出,希望你能明白:
#!/usr/bin/perl
$line=《stdin》;
$line=reverse($line);
print $line;
C++中对字符串如何使用reverse函数
//#include "stdafx.h"//vc++6.0加上这一行.
#include 《algorithm》
#include 《iostream》
#include 《string》
using namespace std;
int main(void){
char str="abcdefgh";
string s=str;
reverse(s.begin()+2,s.begin()+7);//和下面一句效果一样
//reverse(s.begin()+2,s.end()-1);
cout 《《 s 《《 endl;
return 0;
}
求inverse、reverse、adverse三个词的用法上的区别
inverse:强调正反,顺序颠倒
比如
数学里的反函数
inverse function
在某些语言里,问句的顺序是颠倒的
In some languages, the word order in questions is inverted
reverse:强调里外,上下颠倒,逆转
比如:
他把盘子翻了过来
He reverses the dish.
不可逆转的失败
an irreversable failure
converse:多半用于正规场合 比如口语: Conversely, not all the people are happy 相反地,并不是每个人都开心
构造一个函数,使得函数运行以后,链表每个节点的元素都为原先的两倍
我假设你的这个单向链表是带头节点的(即第一个节点HEAD不存信息)。
设节点的结构体定义为:
struct
Node
{
int
data;
struct
Node
*next;
};
那么倒置函数则为:
void
reverse(Node
*HEAD)
{
Node
*p,
*tmp;
p
=
HEAD-》next;
HEAD-》next
=
NULL;
while(p!=NULL)
{
tmp
=
p;
p
=
p-》next;
tmp-》next
=
HEAD-》next;
HEAD-》next
=
tmp;
}
}
这只是实现倒置的方法之一,其大致思路是:
先用一个指针p指向HEAD的下一个节点,并将HEAD的next置空,相当于使用p来“拎着”整个链表,HEAD取出来等待构造倒置的新链表。
然后使用p指针逐一向后访问到链表最后一个节点。如果当前p所指向的节点不为空NULL,则将该节点插入到HEAD之后,注意插入的节点应位于HEAD节点之后、原HEAD-》next节点之前,
如此原先在链表头部的节点就逐一被“挤”到了后面,实现了倒置。
当然“插入”的这个动作还需要一个临时指针tmp才能实现。
完整的定义、函数实现及测试程序:
#include
"stdio.h"
#include
"stdlib.h"
struct
Node
{
int
data;
struct
Node
*next;
};
/*
Reverses
a
list(with
HEAD
node)
*/
void
reverse(struct
Node
*HEAD)
{
struct
Node
*p,
*tmp;
p
=
HEAD-》next;
HEAD-》next
=
NULL;
while(p!=NULL)
{
tmp
=
p;
p
=
p-》next;
tmp-》next
=
HEAD-》next;
HEAD-》next
=
tmp;
}
}
int
main(int
argc,
char
*argv)
{
struct
Node
*p;
struct
Node
*head,
*a,
*b,
*c;
head
=
(struct
Node*)malloc(sizeof(struct
Node));
a
=
(struct
Node*)malloc(sizeof(struct
Node));
b
=
(struct
Node*)malloc(sizeof(struct
Node));
c
=
(struct
Node*)malloc(sizeof(struct
Node));
a-》data
=
1;
b-》data
=
2;
c-》data
=
3;
head-》next
=
a;
a-》next
=
b;
b-》next
=
c;
c-》next
=
NULL;
//
before
reversing
printf("Before\n");
for(p=head;
p-》next!=NULL;
p=p-》next)
printf("Data:%d\t",
p-》next-》data);
//
after
reversing
reverse(head);
//
Reverses
the
list
printf("\nAfter\n");
for(p=head;
p-》next!=NULL;
p=p-》next)
printf("Data:%d\t",
p-》next-》data);
return
0;
}

更多文章:
易语言点击js按钮(易语言网页填表怎样点击链接为“javascript:void(0)“的按钮)
2026年10月11日 03:00
compare with造句(用compared with和compared to造句)
2026年10月10日 23:30
tensorflow与keras对应版本(为什么tensorflow2.8没有keras)
2026年10月10日 22:10
maven仓库jar网站(如何在maven仓库中添加jar包)
2026年10月10日 19:50
利用地理空间数据云下载dem数据怎么知道具体位置?DEM数据获取
2026年10月10日 18:30
单例模式的几种实现方式(么是单例模式,并写出单例模式的2种实现方式)
2026年10月10日 17:10




