顺序输出

本文介绍了一种算法,用于将一个不大于10的9次方的正整数从高位到低位逐位分割并输出各位数字。通过计算最高位的位权,使用循环结构实现数字的分割与输出,避免了使用可能导致精度损失的浮点运算。

顺序输出
题目描述
输入一个不大于10的9次方的正整数,从高位开始逐位分割并输出各位数字。
输入
输入一个正整数n,n是int型数据
输出
依次输出各位上的数字,每一个数字后面有一个空格,输出占一行。例如,输入 12345 ,输出 1 2 3 4 5
样例输入 Copy
12345
样例输出 Copy
1 2 3 4 5
提示
注意整数运算避免使用double类型的函数如pow()。
本题可先用一个循环计算出最高位的位权h,然后再用一个循环,循环内容为: 输出最高位(n/h)、扔掉最高位(n = n%h)、降低最高位位权(h = h/10),直到位权h为0。

#include <stdio.h>
#include <math.h>

int main()
{
int n,i,ws;
int a[100];
scanf("%d",&n);
ws=log10(n)+1;
for(i=0; i<ws; i++)
{
a[i]=n%10;
n/=10;
}
/*
----------逆序输出-----
for(i=0; i<ws; i++)
{
if(i==0) printf("%d",a[i] );
else printf(" %d", a[i]);

}
*/

//---------顺序输出
for(i=ws-1; i>0; i--)
{
	printf("%d ", a[i]);
} 
printf("%d\n", a[i]);

return 0;

}
巧用数组

在C语言中,实现指定顺序输出有多种情况,以下是不同场景下的实现方法: ### 按降序输出三个整数 可以通过比较和交换的方式实现三个整数的降序输出。以下是示例代码: ```c #include <stdio.h> int main() { int a, b, c; int t; scanf("%d %d %d", &a, &b, &c); if (b > a) { t = b; b = a; a = t; } if (c > a) { t = c; c = a; a = t; } if (c > b) { t = c; c = b; b = t; } printf("%d %d %d", a, b, c); return 0; } ``` 此代码中,首先读取三个整数,然后通过多次比较和交换,确保 `a` 最大,`b` 次之,`c` 最小,最后按顺序输出这三个数 [^1]。 ### 按位顺序输出一个整数(递归版) 可以使用递归函数按位顺序输出一个整数。示例代码如下: ```c void printdigits(int n) { if (n / 10 == 0) printf("%d\n", n % 10); else { printdigits(n / 10); printf("%d\n", n % 10); } } ``` 在这个递归函数中,当 `n` 为个位数时直接输出,否则先递归调用函数处理 `n` 的前几位,再输出当前位,从而实现按位顺序输出 [^4]。 ### 按顺序打印顺序表 对于顺序表,可以编写一个函数来按顺序打印其元素。示例代码如下: ```c #include <stdio.h> #include <assert.h> typedef int SLDateType; typedef struct SeqList { SLDateType* a; int size; int capacity; } SeqList; void SeqListPrint(SeqList* ps) { assert(ps); if (ps->size == 0) { printf("顺序表无有效数据\n"); return; } for (SLDateType i = 0; i < ps->size; i++) { printf("%d ", *(ps->a + i)); } printf("\n"); } ``` 该函数接收一个指向顺序表的指针,首先检查顺序表是否为空,若不为空则遍历顺序表并按顺序输出元素 [^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值