pascal输入一个整数N(1<=N<=10000000),把它的各位数字倒序输出。N末尾的零不要输出。

如题所述

问题的关键是处理末尾的0,程序如下:

输入一个正整数,将其逆序输出,每个数字后有一个空格。

输入一个正整数n,可以假设n在int范围内

输出将n按其逆序输出,每个数字后有一个空格,输出占一行。/

#include<stdio.h>

int main()

{int i;

int n;

scanf("%d",&n);

int num = 0;

for(i = 0; ; i ++)

{num = n % 10;

n /= 10;

printf("%d\n",num);

if( n < 1)

break;

]return 0;

扩展资料

双阶乘用“m!!”表示。

当 m 是自然数时,表示不超过 m 且与 m 有相同奇偶性的所有正整数的乘积。如:

当 m 是负奇数时,表示绝对值小于它的绝对值的所有负奇数的绝对值积的倒数。

当 m 是负偶数时,m!!不存在。

任何大于等于1 的自然数n 阶乘表示方法:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-02
问题的关键是处理末尾的0.
程序如下:
var s:string;
i,j:integer;
begin
readln(s); //整数用字符串来存;
for i:=length(s) downto 1 do
if s[i]<>'0' then break; //这一步,是找出s串最右边一个不是0的数字的位置,用 i 记下;

for j:=i downto 1 do write(s[j]);
readln;
end.
第2个回答  2013-05-03
当成字符串处理就超简单了~
var
i,j:longint;
n:string;
begin
readln(n);
for i:=length(n) downto 1 do
if n[i]<>'0' then break; //这步是去掉前置0
for j:=i downto 1 do write(n[j]);
writeln;
end.

当然你用数组也可以
把n定义成字符数组n:array [1..9] of char;
这样做还要记录下长度

直接用整形来做当然也是可以的!
var
n:longint;
begin
readln(n);
while (n mod 10=0) do n:=n div 10; //这步是去掉前置0
while n<>0 do
begin
write(n mod 10); //输出最后一位
n:=n div 10; //删掉最后一位
end;
writeln;
end.

三种方法随你选~
满意望采纳谢谢!!本回答被提问者采纳
相似回答