程序结构的课程已经告一段落,在这里写几道作业加以巩固。
Assignment1:
找到指定范围[inf,supper]内含有9的整数。比如91就是十位含有9的整数,901就是百位还有9的整数。
我自己的思路有两种:一种是遍历法,另一种是生成法。遍历法就是从inf到supper一个一个试过去,找到符合条件(含有9)的数;而生成法是找到符合条件的数的生成规律(往往是通项公式),在指定范围内加以生成。最后采用的是遍历法。
#include <stdio.h>
#include <math.h>
int core_find9(int, int);
int computeBit(int);
int find9(int, int);
int main() {
find9(100,10);
return 0;
}
//upper为上界,inf为下界.作用是找到[inf,supper]范围内含有9的数字,并计数.返回总数.
int find9(int upper, int inf) {
/*算法思想是:遍历该范围内的全部的整数,逐个判断它们是否含有9.
核心是判断给定数是否含有9.为此编写core_find9函数,功能如下.
由于这个函数需要指定位数,所以编写computeBit函数,用于指定位数.位数为upper(上界)的位数.
*/
int count = 0;
int bit = computeBit(upper);
for (int i = inf; i <= upper; i++) {
if (core_find9(i, bit) == 1)
++count;
}
return count;
}
//判断给定的数num从第1位到第bit位是否含有9