mumumu147258 2022-10-13 20:07 采纳率: 83.3%
浏览 25

C语言中如何将递归改为迭代?

/SJXT5-4.C/
#include<stdio.h>
#include<stdlib.h>
int a[1000] = { 0 };
void change(int j, int i)/交换数列里的数值顺序--使他们颠倒过来/
{
int m=0, b, t;
b = i - 1;
while (m < b)
{
t = a[m];
a[m] = a[i];
a[i] = t;
m++;
i--;
}
}
void reverse(long n)
{
int num,i=0,m=0;
do {
num = n % 1000;
printf("%d", num);
putchar(',');
n = n / 1000;
a[i] = n;
i++;
} while (n >= 1000);
//printf("%d", n % 1000);
for (i = 0; i; i++)
a[i] = a[i] % 1000;
change(m, i);
i++;
printf("%d", a[i]);
}
int main()
{
long a;
scanf_s("%ld", &a);
reverse(a);
system("pause");

return 0;

}
输入2004
输出4,0
应输出2,4
#include<stdio.h>
#include<stdlib.h>
void reverse(long n)
{
if (n >= 1000)
reverse(n / 1000);
printf("%d", n % 1000);
putchar(',');
}
int main()
{
long a;
scanf_s("%ld", &a);
reverse(a);
system("pause");
return 0;
}把这个程序用迭代方法写出

我个人理解的是:就是从个位起,每三个数插一个逗号。然后每个三位数中,正数前面的0可以去掉

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-10-14 10:48
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 10月13日

悬赏问题

  • ¥100 有偿寻云闪付SDK转URL技术
  • ¥30 基于信创PC发布的QT应用如何跨用户启动后输入中文
  • ¥20 非root手机,如何精准控制手机流量消耗的大小,如20M
  • ¥15 远程安装一下vasp
  • ¥15 自己做的代码上传图片时,报错
  • ¥15 Lingo线性规划模型怎么搭建
  • ¥15 关于#python#的问题,请各位专家解答!区间型正向化
  • ¥15 unity从3D升级到urp管线,打包ab包后,材质全部变紫色
  • ¥50 comsol温度场仿真无法模拟微米级激光光斑
  • ¥15 上传图片时提交的存储类型