C指针数组,帮忙简化下程序

来源:百度知道 编辑:UC知道 时间:2024/06/11 22:22:10
#include<stdio.h>
main()
{ int a[3][3]={1,2,3,4,5,6,7,8,9};
int *p,i;
for(p=a[0];p<a[0]+9;p++)
{ if((p-a[0])%3==0)
printf("\n");
printf("% d",*p);
}
printf("\n");
p=a[0];
while(p<a[0]+9)
{ i=0;
do
{ printf(" %d",*p);
i++;
p=*(a+i);
}while(p<a[0]+7);
printf("\n");
p=a[0]+1;
i=0;
do
{
printf(" %d",*p);
i++;
p=*(a+i)+1;
}while(p<a[0]+8);
printf("\n");
i=0;
p=a[0]+2;
do
{ printf(" %d",*p);
i++;
p=*(a+i)+2;
}while(p<a[0]+9);
printf("\n");
}
getch();
}
其实这个问题用数组编还是比较简单的,但希望对指针数组理解的更好点,望大家帮我修改下,
能把i去掉更好了

不明白什么叫简化?是完成相同的功能但是越短越好么?那我的显然更好。
#include<stdio.h>

main() {
int a[3][3]={1,2,3,4,5,6,7,8,9};
int i, *p;
for(p=&a[0][0]; p<=&a[2][2]; p++) {
if((p-&a[0][0])%3==0)
printf("\n");
printf("%2d",*p);
}
printf("\n");

for (i=0; i<3; i++) {
for (p=a[0]+i; p<=&a[2][2]; p+=3)
printf("%2d", *p);
printf("\n");
}
getch();
}

#include<stdio.h>
main()
{
int a[3][3]={1,2,3,4,5,6,7,8,9};
int *p;
for(p=a[0];p<a[0]+9;p++)
{
if((p-a[0])%3==0)
printf("\n");
printf("% d",*p);
}
printf("\n");
p=a[0];
while(p<a[0]+9)
{

do
{
printf(" %d",*p);
p=p+