c语言:练习题 2021-10-15
一.题目:
给一个不多于五位的正整数求它是几位数,输出每一位数字,按逆序输出。本题将采用两种写法:一种比较直接,另一种比较简便。
二.知识点:
明确 “%” 和 “/” 的区别:
1.%:取余(只需要后面的数字)
2. / :运算除法(只需要前面的数字)
三.代码
1.直接法:
#include<stdio.h>
#include<math.h>
#define M 99999
int i(i<=M);
int main()
{
printf("输入一个正整数:", i);
scanf_s("%d", &i);
if (i >= 10000)
{
printf("%d是五位数\n", i);
printf("%d %d %d %d %d\n", i % 10, i / 10 % 10, i / 100 % 10, i / 1000 % 10, i / 10000);
}
else if(i>=1000)
{
printf("%d是四位数\n", i);
printf("%d %d %d %d\n", i % 10, i / 10 % 10, i / 100 % 10, i / 1000);
}
else if(i>=100)
{
printf("%d是三位数\n", i);
printf("%d %d %d\n", i % 10, i / 10 % 10, 1 / 100);
}
else if (i >=10)
{
printf("%d是两位数\n", i);
printf("%d %d",i% 10, i / 10);
}
else
{
printf("%d是一位数\n", i);
printf("%d\n", i % 10);
}
return 0;
}
运行结果:
2.简便法:
#include<stdio.h>
int main()
{
int n;
scanf_s("%d", &n);
int m = n;//m是备份
if(n<=0 || n>99999)
{
printf("enter data error\n");
return 0;
}
//1. 获取位数
int count = 0;
while(n != 0)
{
n /= 10;
count = count + 1;
}
printf("位数是 %d\n", count);
int index = 1; //权重
for(int i=0; i<4; i++)
{
index = index *10;
}
//2.正序打印
n = m; //0 -> 12345
while (n != 0)
{
printf("%d", n/index);
n = n % index;
index = index / 10;
}
printf("\n");
//3.逆序打印
n = m;//0->12345
while(n != 0)
{
printf("%d", n%10);
n /= 10;
}
printf("\n");
return 0;
}
运行结果:
四.总结
1.在此题目中需明确“%”和“/”的不同作用。
2.在写代码时注意规范性书写,避免一些小错误。