C 语言经典范例 50 讲
第 17 讲
17-8、利用指针变量输入数组元素的值
#include <stdio.h>
#include <iostream>
int main()
{
static int a[3][4] = {1,3,5,7,9,11,13,15,17,19,21,23};
int *p;
for(p=a[0];p<a[0]+12;p++)
{
if((p-a[0])%4 == 0)printf("");
printf("%4d",*p);
}
}
运行结果:
变形:利用二维数组的下标访问元素方法:
#include <stdio.h>
#include <iostream>
int main()
{
static int a[3][4] = {1,3,5,7,9,11,13,15,17,19,21,23};
int i;
int j;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++) printf("%4d",a[i][j]);
printf("");
}
}
主要:虽然得到与上面相同的结果,但是因为需要两个 for 循环所以效率比较低
17.2.1 范例:有 n 个人围成一圈,顺序编号。从第一个人开始报数(从 1 到 3 报数),凡是
报到 3 的人退出圈子,问最后留下的是原来第几号的那位。
原理:通过指针 p 指向数组 num,则 p 为指针数组。然后对指针数组进行依次赋值
*(p+i)=i+1。接下来利用 while 循环实现报数操作,即判断*(p+i)是否为 0,不是零则进行计数,
为零则判断报数是否为 3,若不是 3 则继续报数,若是 3 则将但前位置的值置 0 并重新开始