一.实验题目,设计思路,实现方法
第11次作业 二维数组(11-5 打印杨辉三角);12作业 字符串(12-8 删除重复字符);13 数组和指针(13-6 数组循环右移);14 结构体 指针 字符串(14-2 删除字符);15 结构体 链表 递归(15-7 递归求Fabonacci数列)。
设计思路:11-5注意三角形不是正三角形;12-8 注意字符比较要1跟2比较;13-6要注意循环右移的时候末尾的数字要提前;14-2 删除字符后后面的字符要提前;15-7 使用递归方法,函数自己套用自己。
实现方法:对二维数组字符串,指针,递归进行结合跟嵌套。
二.源程序
11-5
for( i=0;i<10;i++)
{
a[i][i]=1;
a[i][0]=1;
}
scanf("%d",&n);
if(n>2){
for( i=1;i<n;i++)
{
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(k=n-i-1;k>0;k--)printf(" ");
for( j=0;j<=i;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
12-8
for(i=0;str1[i];i++)
{
str2[str1[i]]=1;
}
for(i=0;i!=256;i++)
if(str2[i]==1)
printf("%c",i);
13-6
int ArrayShift( int a[], int n, int m )
{
int b[100];
int i,j,k;
for(j=0;j<n;j++)
{
k=(j+m)%n;
b[k]=a[j];
}
for(i=0,j=0;i<n;i++,j++)
{
a[i]=b[j];
}
return a;
}
14-2
void delchar( char *str, char c )
{
char *p,*q;
p=str;
if( str != NULL )
{
q = str;
while( *str !=‘\0‘)
{
if( *str != c )
{
*q = *str;
q++;
}
str++;
}
*q = *str;
}
return p;
}
15-7
int f(int n)
{
if(n == 1)
return 1;
else if(n == 0)
return 0;
else
return f(n - 2) + f(n - 1);
}
三.遇到的问题及解决方法,心得体会
杨辉三角是斜三角,空格的输出要注意。
循环右移提前时注意要按照顺序提前。
递归使用不是很熟练,找不到该如何编写,需要多加练习。