一.实验题目,设计思路,实现方法

第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);
}

三.遇到的问题及解决方法,心得体会

杨辉三角是斜三角,空格的输出要注意。

循环右移提前时注意要按照顺序提前。

递归使用不是很熟练,找不到该如何编写,需要多加练习。

posted on 2018-01-22 21:32  惜泠  阅读(124)  评论(0编辑  收藏  举报