7-3 逆序的三位数 (10 分)
程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。
输入格式:
每个测试是一个3位的正整数。
输出格式:
输出按位逆序的数。
输入样例:
123
输出样例:
321
提交地址:https://pintia.cn/problem-sets/14/problems/783
//方法一:
#include <stdio.h>
int main()
{
int n;
int a,b,c;
scanf("%d",&n);
a = n%10;
b=(n/10)%10;
c=n/100;
n=a*100+b*10+c;
printf("%d\n",n);
return 0;
}
//方法二:
#include<stdlib.h>
#include<stdio.h>
int main()
{
char a[3]={};
scanf("%s",a);
int i;
for(i=2; i>=0; i--)
{
if(a[i]!='0')
printf("%c",a[i]);
}
return 0;
}
拓展一:如果输入的数字不是三位呢?
#include <stdio.h>
int main()
{
int tmp;
int i,n;
scanf("%d",&n);
for(i=0; n > 0; i++)
{
tmp = n%10;
printf("%d",tmp);
n /= 10;
}
return 0;
}
拓展二: 1、一个数有多少位? 2、如何将一个数一位一位输出?且用空格隔开
#include <stdio.h>
/*
一个数有多少位?用 i 即可得到
*/
int count(int n)
{
int i;
for(i=0; n > 0; i++)
{
n /= 10;
}
return i;
}
void reversePrint(int n)
{
int tmp;
int i;
for(i=0; n > 0; i++)
{
tmp = n%10;
printf("%d ",tmp);
n /= 10;
}
return ;
}
void printDigit(int n)// n= 123456
{
int tmp=0;
int i;
for(i=0; n > 0; i++)
{
tmp = tmp*10 + n%10;
n /= 10;
}
reversePrint(tmp); //tmp = 654321
return ;
}
int main()
{
int n;
printf("Enter a integr:\n");
scanf("%d",&n);
printf("This is a %d digit number.\n",count(n));
printf("\nEach digit is: ");
printDigit(n); //如何将一个数一位一位输出?且用空格隔开
printf("\nThe reverse order is: ");
reversePrint(n);
return 0;
}
详情参考:https://blog.youkuaiyun.com/qq_17268389/article/details/83113234