c语言习题,输入一个正整数,按照从高位到低位的顺序输出各位数字。怎么做

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言习题,输入一个正整数,按照从高位到低位的顺序输出各位数字。怎么做相关的知识,希望对你有一定的参考价值。

    输入时由代码限制只能是正整数,并赋与int型变量n,否则退出;

    用一个for循环计算输入之数的十进制长度,用1之后的0的个数表示并赋与临时变量t,如10000表示输入了一个4位十进制正整数;

    用一个while循环先后由t/=10和n/t%10来求得从高位至低位的各位数字并输出。

代码如下:

#include "stdio.h"
int main(int argc,char *argv[])
int n,t;
printf("Please enter a positive integer...\\nn=");
if(scanf("%d",&n)!=1 || n<1)//保证输入是正整数,否则退出
printf("Input error, exit...\\n");
return 0;

printf("The result are as follows:\\n");
for(t=10;n/t;t*=10);//求出十进制数n的长度,用1后0的个数表示,如1000表示3位数
while(t/=10)
printf("%d ",n/t%10);//t/=10与n/t%10配合从高至低输出各位上的数字
printf("\\n");
return 0;

运行样例如下:

参考技术A //不要超过int的范围就行了
#include<stdio.h>
 
int main()

    int a;
    int flag=0;
    scanf("%d",&a);
    if(a/1000000000)
    
        printf("%d\\t",a/1000000000);
        flag=1;
    
    if(a%1000000000/100000000 || flag)
    
        printf("%d\\t",a%1000000000/100000000);
        flag=1;
    
    if(a%100000000/10000000 || flag)
    
        printf("%d\\t",a%100000000/10000000);
        flag=1;
    
    if(a%10000000/1000000 || flag)
    
        printf("%d\\t",a%10000000/1000000);
        flag=1;
    
    if(a%1000000/100000 || flag)
    
        printf("%d\\t",a%1000000/100000);
        flag=1;
    
    if(a%100000/10000 || flag)
    
        printf("%d\\t",a%100000/10000);
        flag=1;
    
    if(a%10000/1000 || flag)
    
        printf("%d\\t",a%10000/1000);
        flag=1;
    
    if(a%1000/100 || flag)
    
        printf("%d\\t",a%1000/100);
        flag=1;
    
    if(a%100/10 || flag)
    
        printf("%d\\t",a%100/10);
        flag=1;
    
    if(a%10 || flag)
    
        printf("%d\\n",a%10);
        flag=1;
    

辛苦打来,望采纳,谢谢!

[CSP-S模拟测试]:数字(数学+高精度)

题目描述

很简单,给出正整数$n$,求出$n!$在十进制表示下的从最末非零位开始的总共$k$位。


输入格式

第一行一个正整数$T$,表示有$T$组数据
接下来$T$行,每行两个正整数$n$和$k$。


输出格式

每组测试数据,按照高位到低位的顺序输出,共$k$位,包含前导$0$(若高位不足,用前导$0$补足)。


样例

样例输入:

3
1 1
5 1
10 2

样例输出:

1
2
88


数据范围与提示

对于$20\%$的数据,$nleqslant 100,k=1,2,3$分别占$10\%,5\%,5\%$
对于另外$30\%$的数据,$nleqslant 10^7,k=1,2,3$分别占$10\%,10\%,10\%$
对于另外$30\%$的数据,$nleqslant 10^{18},k=1,2,3$分别占$10\%,10\%,10\%$
对于另外$20\%$的数据,$nleqslant 10^{100},k=1,2,3$分别占$5\%,5\%,10\%$
$Tleqslant 100$


题解

一道$200$多行的数学题……

讲一下推到过程(其实主要是学长的……)

为方便,不妨做如下定义:

$aperp b$表示$a$与$b$互质,即$gcd(a,b)=1$。

$a|b$表示$a$可以整除$b$,即$gcd(a,b)=a$。

$a equire{cancel}cancel{-}b$表示$a$无法整除$b$,即$gcd(a,b) eq a$。

$a\%b$表示满足$aequiv(mod b)$的最小自然数$x$。

设$Fp(k,x)$为$x$中因子$k$的最大幂次,即满足$x=rk^n(n,rin N)$的最大$n$。

设$Ext(k,x)$为$x$除去所有因子$k$后的值,即$Ext(k,x)=frac{x}{k^{Fp(k,x)}}$。

定义完了之后,我们接着看着道题

未完……

以上是关于c语言习题,输入一个正整数,按照从高位到低位的顺序输出各位数字。怎么做的主要内容,如果未能解决你的问题,请参考以下文章

[CSP-S模拟测试]:数字(数学+高精度)

用c语言编写程序 输入一个正整数n,求1到n的数中1出现的个数

[PTA]习题10-8 递归实现顺序输出整数

[华为机试练习题]2.大数求和

c语言中怎么将十六进制中的高位和低位分别存到数组中

关于几个java位运算的算法分析