给一个整数,要求:
① 求出他是几位数
② 分别输出每一位数字
③ 按逆序输出各位数字
① 解析:
假设整数为n,
第一步:/10 将最低位丢弃;
第二步:重复第一步,直到为0为止,统计总共可以丢弃的次数.
- 例如:1234
- 第一次 1234/10------12
- 第二次 123/10------12
- 第三次 12/10------1
- 第四次 1/10------0
#include<stdio.h>
int GetDigit(int n)
{
int i=0;
do{
i++;
n/=10;
}while(n!=0);
return i;
}
int main()
{
printf("12345的位数为%d\n",GetDigit(12345));
printf("0的位数为%d\n",GetDigit(0));
return 0;
}
② 解析:
假设整数为n,
第一步:由①得到整数位数count;
第二步:n/(10的count次方)得到最高位,输出最高位,n%(10的count次方)丢弃最高位, count/10;
第三步:重复第二步操作,直至为0为止.
- 例如:1234
- 第一次 1234/1000------1 1234%1000------234
- 第二次 234/100-------2 234%100------34
- 第三次 34/10-------3 34%10------4
- 第四次 4/1------4 4%1------0
#include<stdio.h> int GetDigit(int n) { int i=0; do{ i++; n/=10; }while(n!=0); return i; } void Show(int n) { int temp=GetDigit(n); //得到位数 int k=1; int j; //保存最高位 for(int i=0;i<temp-1;i++) { k*=10; } do { j=n/k; //得到最高位 printf("%d ",j); n%=k; //丢弃最高位 k/=10; }while(n!=0); printf("\n"); } int main() { Show(1234); Show(0); return 0; }
③ 解析:
假设整数为n,
第一步:n%10得到最低位,输出最低位,n/10丢弃最低位;
第二步:重复第一步,直至为0为止.
- 例如:1234
- 第一次 1234%10------4 1234/10-------123
- 第二次 123%10------3 123/10------12
- 第三次 12%10------2 12/10------1
- 第四次 1%10------1 1/10------0
void ReverseShow(int n)
{
int i=0;
do
{
i=n%10;
n/=10;
printf("%d ",i);
}while(n!=0);
printf("\n");
}
int main()
{
ReverseShow(1234);
ReverseShow(0);
return 0;
}