1.统计一个整数的位数:
#include<stdio.h>
int main() {
int count, number, t_number;
count = 0;
printf("enter a number:\n");
scanf("%d", &number);
t_number = number;/*将number的值赋给t_number,后续操作只在t_number上进行而不会改变number的值*/
if (number < 0) {
t_number = -t_number; /*取整操作:所有带符号的数要取绝对值进行取整运算,最后根据除数和被除数的符号确定最后商的符号,这里不需要确定最后商的符号*/
}
do {
count++;
t_number = t_number / 10;/*整除后减少一位个位数,组成一个新数*/
} while (t_number != 0);
printf("it contains %d digits.\n", count);
return 0;
}
分析:a.故无法事先确定循环的次数,采用do-while循环;
b.循环体只能是一条语句;
c.使用时要另加初始化部分,循环体语句必须包含最终能改变条件真假性的操作;
d.适用于先循环、后判断循环条件的情况,一般在循环体执行过程中明确循环控制条件。
2.逆序输出一个整数的个位数字:
#include<stdio.h>
int main() {
int number;
printf("enter a number:\n");
scanf("%d", &number);
do {
printf("%d", number % 10);/*分离一位并输出*/
number = number / 10;/*为下一次分离做准备*/
} while (number != 0);/*直到number=0,循环结束*/
return 0;
}