C语言整数逆序输出
将一个从键盘输入的整数存放到一个数组中,通过程序的运行按照数组中的逆序输出该整数,利用递归的方法解决问题。
算法思想
设计函数实现数据的逆序存放,设定形参数组接收实参数组的地址,来存储数据的每一位。函数体采用递归的方式解决问题,因此考虑递归进行的条件。例如,把数据 n 存放到数组 s 中,若 n 是一位数,则存放 n 到数组中;若 n 不是一位数,则存放 n/10 到数组中。
问题解决的难点在于找到数据的存放地址,通过不断地取余和整除 10 来得到数据的每一位。为了实现数据的逆序存放,每一次整除 10 的时候,同时把存放数据的数组地址后移,这样得到的第一位数存放在数组的最后一位……通过依次前移,即递归的回归,实现整个数据的存放。通过函数 convert() 实现字符串中的数字的逆序转换。
程序代码
#include <stdio.h>
int convert(char s[],int n)
{
int i;
if((i=n/10)!=0)
convert(s+1,i);
*s=n%10+'0';
return 0;
}
int main()
{
int num;
char str[10]=" ";
printf("input integer data:");
scanf("%d",&num);
convert(str,num);
printf("output string:\n");
puts(str);
return 0;
}
调试执行结果
当输入整数为 123456789 时,其程序运行结果如下所示:
input integer data:123456789
output string:
987654321
当输入整数为 654321789 时,逆序转换输出结果如下所示:
input integer data:654321789
output string:
987123456
总结
数组名代表数组中第一个元素的地址,数组的地址就是数组的指针,每个元素的地址就是每个元素的指针。数组元素在内存中是连续存放的,相对于普通变量,用指针指向数据元素操作更简便。
一维数组的数组名代表了数组的首地址,即数组的指针,但数组名是常量指针,其值是不可改变的,可以定义一个指针变量指向数组名。当定义了指针后,对于数组元素的引用既可以使用下标,又可以使用指针。
- C语言三色旗问题
- 有一根绳子,上面有红、白、蓝三种颜色的旗子。
- 03-10 关注:0
- C语言整数逆序输出
- 将一个从键盘输入的整数存放到一个数组中,通过程序的运行按照数组中的逆序输出该整数,利用递归的方法解决问题。
- 03-10 关注:0
- C语言约瑟夫环问题
- 编号为 1,2,3,…,n 的 n 个人围坐一圈,任选一个正整数 m 作为报数上限值,从第一个人开始按顺时针方向报数,报数到 m 时停止,报
- 03-10 关注:0
- C语言输出等腰三角形
- 本实例要求从键盘输入任意整数 n,通过程序运行输出对应高度为 n 的等腰三角形。
- 03-10 关注:0
- C语言字符串加密和解密算法
- 在本实例中要求设计一个加密和解密算法。在对一个指定的字符串加密之后,利用解密函数能够对密文解密,显示明文信息。
- 03-09 关注:3
- C语言统计单词个数,单词个数算法
- 在实际生活中经常会遇到一个问题:写英语作文时,常常要求满足一定的字数。在以往,要么我们一个一个地数;要么我们估算一行的单词数,
- 03-09 关注:3
- C语言获取矩阵的最大值及其下标
- 本实例要求使用二维数组将一个 3×4 的矩阵中所有元素的最大值及其下标获取,通过该程序,掌握二维数组的引用知识。
- 03-09 关注:4
- C语言谁家孩子跑得最慢
- 张、王、李三家各有三个小孩。一天,三家的九个孩子在一起比赛短跑,规定不分年龄大小,跑第一得 9 分,跑第二得 8 分,依次类推。
- 03-09 关注:3