在生活中,我们或许会遇到一连串相似类型的数据,逐一的对他们进行处理,我们或许会进行的非常繁琐的处理。比如,我们来计算一下0——n中有多少个9.
是的,略微思考,能写出以下程序。
int main ()
{
int n;
int c9 = 0; // 定义计算9个数的量
scanf ("%d", &n); // 在键盘上输入n的值
int i;
for (i = 1; i <= n; i++) // 从1到n遍历
{
int num = i;
while(num) // 当num为0时,就会跳出循环
{
if (9 == num % 10) // 如果num求余为9,c9计数加一
c9++;
num /= 10; // 对num取整,看其是否还有其他位上有数
}
}
printf ("c9 : %d\n", c9);
return 0;
}
利用这样的程序,可以求出任意一个数范围内所有9的数量,但是,如果让你计算从1——n中,有多少个0——9又该是如何,是不是感觉头皮发麻。不过,我们的C同样为我们找到了解决的办法,数组,顾名思义,同一类数的集合。因为他们具有着相同的性质,所以才能放到一块。来,我们来看一下使用数组如何解决那个让人头皮发麻的问题。
int main()
{
// 定义一个变量 名字叫c
// 这个变量占 10 个int型变量的空间
int c[10]; // 定义一个数组
int i;
for (i = 0; i < 10; i++) // 利用for循环来将数组进行初始化
{
c[i] = 0;
}
int n;
scanf ("%d", &n);
c[0] = 1; // 因为我们下面的循环从1开始,对于0
// 我们只好在之前给他计数加一
for (i = 1; i <= n; i++) // 开始遍历
{
int num = i;
while (num)
{
c[num%10]++; //利用for循环,对数组中的每个数进行计数
num /= 10;
}
}
for (i = 0; i < 10; i++) // 使用for循环将数组里的数打印出来
{
printf ("c[%d] : %d\n", i, c[i]);
}
return 0;
}