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语言习题,输入一个正整数,按照从高位到低位的顺序输出各位数字。怎么做的主要内容,如果未能解决你的问题,请参考以下文章