C语言小任务——1000以内含有9的数字
步骤
第一步:分类
含有九的可能的情况:
个位有9,十位有9,百位有9,而根据组合数,我们可以得出,一共有7种情况,分别是
9##,#9#,##9, 99#,9#9,#99,999
想要按照这七种情况来找,很明显十分复杂,所以,我们采用另一种方法
第一步:求出小于1000的数字的每一位
void getnum(int num, int* arr)
{
int i = 0;
for (i = 0; i < 3; i++)
{
arr[2 - i] = num % 10;//我们这里,让百位在第一个,
//十位在第二个,个位在第三个
num /= 10;
}
}
第二步:一旦有一个9,那么就符合标准(主函数执行逻辑判断)
int main()
{
int i = 0;
int j = 0;
int arr[3] = { 0,0,0 };
for (i = 0; i < 1000; i++)
{
getnum(i, arr);
for (j = 0; j < 3; j++)
{
if (arr[2-j] == 9)
{
printf("%d\n", i);
break;
}
}
}
return 0;
}
这里是完整的代码
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<windows.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
void getnum(int num, int* arr)
{
int i = 0;
for (i = 0; i < 3; i++)
{
arr[2 - i] = num % 10;//我们这里,让百位在第一个,
//十位在第二个,个位在第三个
num /= 10;
}
}
int main()
{
int i = 0;
int j = 0;
int arr[3] = { 0,0,0 };
for (i = 0; i < 1000; i++)
{
getnum(i, arr);
for (j = 0; j < 3; j++)
{
if (arr[2-j] == 9)
{
printf("%d\n", i);
break;
}
}
}
return 0;
}