1.タイトル:解体整数
プログラミング要件:
- 入力:キーボードから数値(いくつかのテストは、入力数のビットの数は、1、2、3、4、5)
- 出力:それは出力エラー、または出力(1)ビットの数(2)が負である場合、シーケンス番号の正の出力(3)出力の数の逆の順序での
- 例:入力325、出力523
#include<stdio.h>
#include<math.h>
int main(){
int n, m, p, count=0;
scanf("%d", &n);
m=n;
p=n; //n、m、p均为输入的数,count记录位数
//一、求出该数的位数,用n
if(n<0){
printf("error\n");
}else{
do{
count++;
n = n/10;
}while(n!=0);
printf("位数为%d\n", count);
//二、正序输出,用m
printf("正序输出为:");
int divide;
divide = pow(10,count-1); //以除法得m的最高位数字,需要先确定除数的大小,如:321/100 = 3
do{
printf("%d", m/divide);
m = m%divide; //m去掉它的最高位
divide = divide/10;
if(divide!=0){ //该if语句可有可无。有,则可避免多输出结尾的一个空格
printf(" ");
}
}while(divide!=0); //******正序输出则不能用m!=0做判据,否则当输入100、10等数时,输出是不合预期的******
printf("\n");
//三、逆序输出,用p
printf("逆序输出为:");
do{
printf("%d", p%10);
p = p/10;
if(p!=0){
printf(" ");
}
}while(p!=0); //******逆序输出则可以用p!=0做判据******
printf("\n");
return 0;
}
説明:ノート、一部Notesのアスタリスクと