实现杨辉三角
#include <stdio.h>
void yh(int a[][100],int n);
int main(int argc, const char *argv[])
{
int a[100][100];
int n=0;
scanf("%d",&n);
yh(a,n);
return 0;
}
void yh(int a[][100],int n)
{
int i=0,j=0;
for(i=0;i<n;i++)
{
a[i][0]=1;
for(j=1;j<=i;j++)
{
a[i][j]=a[i-1][j]+a[i-1][j-1];
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n-i;j++)
printf(" ");
for(j=0;j<=i;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
课堂练习
1函数封装strcmp
#include <stdio.h>
int hscmp(char a[],char b[]);
int main(int argc, const char *argv[])
{
char a[32]="qz";
char b[32]="qzw";
if(hscmp(a,b)==0)printf("a=b\n");
if(hscmp(a,b)==1)printf("a>b\n");
if(hscmp(a,b)==-1)printf("a<b\n");
return 0;
}
int hscmp(char a[],char b[])
{
int i=0;int flag=0;
while(b[i]!='\0'||a[i]!='\0')
{
if(a[i]-b[i]>0)
flag=1;
if(a[i]-b[i]<0)
flag=-1;
i++;
}
return flag;
}
2打印二维数组(注意引用格式)
#include <stdio.h>
void pri(char (*p)[32],int row);//或者写成(char s[][32],int row)
int main(int argc, const char *argv[])
{
char s[3][32];
/* gets(s[0]);
gets(s[1]);
gets(s[2]);
*/int i=0;
for(i=0;i<3;i++)
scanf("%s",s[i]);
int row=sizeof(s)/sizeof(s[0]);
pri(s,row); //引用不变
return 0;
}
void pri(char (*p)[32],int row) //(char s[][],int row)
{
int i=0;
for(i=0;i<row;i++)
printf("%s\n",p[i]); //s[i]
}
1:gcc 分步编译(ESc iso)
预处理: 生成可编译文件 E x.c x.i
编译:生成汇编文件 gcc - S x.i -o x.s
汇编:生成链接文件 c x.s x.o
链接:生成可执行文件 gcc x.o -o
2:strlen计算字符串长度,不计算\0
sizeof计算数据所占字节数大小,会计算\0
3:\是转义字符\t \n \036 \123 均表示一个字符。