C指针数组问题

来源:百度知道 编辑:UC知道 时间:2024/05/15 19:10:08
其实这个问题用数组编还是比较简单的,但希望对指针数组理解的更好点,望大家帮我修改下,
能把i去掉更好了
#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();
}

这是10年前我用QBASIC编写的一个程序,元素分别用A,B,C,D,……表示,不再改了。QBASIC是很容易找到的一个小程序,在90年代中期使用的人还是不少的。程序编得并不好,但毕竟是我刚刚拥有自己的电脑时编着玩的。这个程序可以打印从n(运行时自己输入)个不同元素中取k(运行时自己输入,当时编写的时候限制k不超过10)个不同元素的全部组合。
下面是程序运行的结果:
ABC, ABD, ABE, ABF, ABG,
ABH, ABI, ABJ, ACD, ACE,
ACF, ACG, ACH, ACI, ACJ,
ADE, ADF, ADG, ADH, ADI,
ADJ, AEF, AEG, AEH, AEI,
AEJ, AFG, AFH, AFI, AFJ,
AGH, AGI, AGJ, AHI, AHJ,
AIJ, BCD, BCE, BCF, BCG,
BCH, BCI, BCJ, BDE, BDF,
BDG, BDH, BDI, BDJ, BEF,
BEG, BEH, BEI, BEJ, BFG,
BFH, BFI, BFJ, BGH, BGI,
BGJ, BHI, BHJ, BIJ, CDE,
CDF, CDG, CDH, CDI, CDJ,
CEF, CEG, CEH, CEI, CEJ,
CFG, CFH, CFI, CFJ, CGH,
CGI, CGJ, CHI, CHJ, CIJ,
DEF, DEG, DEH, DEI, DEJ,
DFG, DFH, DFI, DFJ, DGH,
DGI, DGJ, DHI, DHJ, DIJ,
EFG, EFH, EFI, EFJ, EGH,
EGI, EGJ, EHI, EHJ, EIJ,
FGH, FGI, FGJ, FHI, FHJ,
FIJ, GHI, GHJ, GIJ, HIJ,

共有 120 种

下面是程序:
CLS
100 PRINT " 本程序用于打印从n个元素中任取k个元