123456789101112131415161718192021222324252627282930/*yh-2d.c-二维数组迭代*/#include#defineM10//行数//#definePYRAMID//金字塔,会额外填充空格//#defineREVERSE//反向再来一次,得到菱形intmain(void){inta[M][M],i,j;//二维数组和循环变量,a[行][列]for(i=0;i=0;i--){#ifdefPYRAMIDfor(j=0;j<=M-i;j++)printf("");#endif//填充结束for(j=0;j<=i;j++)printf("%4d",a[i][j]);//直接使用以前求得的值printf("\n");}#endif//菱形结束getchar();//暂停等待}这一个使用大数组写成,风格更接近教科书上的 VC6 代码。1234567891011121314151617181920212223/*yh-rt3.c-较为暴力的大数组*/#include#include"string.h"intmain(){inta;//容器,由n*(n+1)/2<=10000可知,n<=141intb,CR,i;//b为当前行数,CR为要求显示的行数,i为循环数printf("请输入要显示的行数(3~141):");scanf("%d",&CR);YHSJ(CR);a=a=1;//前两行数值少且全为1,故直接输出printf("%d\n",a);printf("%d%d\n",a,a);for(b=3;b<=CR;b++)//从第三行开始判断{for(i=b;i>=2;i--)//从倒数第一个数开始加a[i]=a[i]+a[i-1];//杨辉三角的规律,没有值的数组默认为0for(i=1;i<=b;i++)//显示循环printf("%d",a[i]);printf("\n");//换行}return0;}这个版本使用队列的方式输出。1234567891011121314151617181920212223242526272829303132333435363738394041#include#include#defineEMPTY1#defineOFLOW2#defineINVAL3#defineMAX_Q100typedefintDataType;//数据类型选择typedefstruct{DataTypeelem[MAX_Q];intfront,rear;}LinkQ;//队列及检查宏#defineInitQ(Q)LinkQQ;Q.front=Q.rear=-1;#define_EQ(Q,e)Q.elem[(Q.rear=(Q.rear+1)%MAX_Q)]=e#defineEnQ(Q,e)if((Q.rear+1)%MAX_Q==Q.front)Exit(OFLOW,"Overflow");_EQ(Q,e)#defineDeQ(Q,e)e=Q.elem[(Q.front=(Q.front+1)%MAX_Q)]#defineFront(Q)Q.elem[(Q.front+1)%MAX_Q]//退出intExit(interr,charmsg[]){puts(msg);exit(err);returnerr;}intmain(void){intn=1,i,j,k,t;InitQ(Q);printf("pleaseenteranumber:");scanf("%d",&n);if(n<=0){printf("ERROR!\n");exit(INVAL);}for(i=0;i