目录
输入一个不大于10的9次方的正整数,从高位开始逐位分割并输出各位数字。
1.1
1060:题目描述
输入一个正整数,将其逆序输出,每个数字后有一个空格。
输入
输入一个正整数n,你可以假设n在int范围内
输出
将n按其逆序输出,每个数字后有一个空格,输出占一行。例如,输入12354,输出4 5 3 2 1
1.2
#include<stdio.h>
int main()
{
long long int x,c,y[999],i,a,b=1;
scanf("%lld",&x);
c=x;
for(i=1;c>9;i++)
c=c/10;
a=i;
for(i;i>=1;i--){
y[b]=x%10;
x=x/10;
b++;}
for(b=1;b<=a;b++)
printf("%lld ",y[b]);
return 0;
}
2.1
1061:题目描述
输入一个不大于10的9次方的正整数,从高位开始逐位分割并输出各位数字。
输入
输入一个正整数n,n是int型数据
输出
依次输出各位上的数字,每一个数字后面有一个空格,输出占一行。例如,输入 12345 ,输出 1 2 3 4 5
2.2
#include<stdio.h>
int main()
{
long long int x,c,y[999],i,a,b=1;
scanf("%lld",&x);
c=x;
for(i=1;c>9;i++)
c=c/10;
a=i;
for(i;i>=1;i--){
y[b]=x%10;
x=x/10;
b++;}
for(a;a>=1;a--)
printf("%lld ",y[a]);
return 0;
}
ps:两道题可以当成一道题,输出循环顺序改变就行,比如第一个从y[1]到y[i],第二个反过来,需要的变量(如i值)中间改变,那就增加变量赋值保存i原始值,虽然解决问题简单了,但是代码长度,复杂性提升emmm,还可以再想想更巧妙的解法。
pps:
这个问题写了好久,遇到的问题:
1.刚开始没有c,改变了x值,导致后面各种数据错误,偶还没意识到,一直在验算后面的程序结构问题,觉得没问题,这一个小细节卡了几个小时,还是朋友提醒才看到emmm。方向错了,浪费了好多时间。
2.第一次是c>=9,i取x位数错误
例如:999转两次就行,i=3了
加=号会转3次,i=4,
数组y i 会=0,然后倒叙输出,先出y 4,然后就多了个0
这个问题很好解决,第一次没想到,朋友帮忙试数据时发现的
ppps:今天没时间了,先打卡,emmm就写了一道题。