实现打印特殊图案及打印杨辉三角形

所有理解都在代码注释中标明
问题一:实现打印特殊图案
代码如下:

#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
void tu_an(int);
int main(int argc, char *argv[]) {
//当输入n,实现输入输入n行等腰三角形;
//思考步骤:第一步:实现每行输出一个'*';
//          第二步:实现每行输出的'*'个数进行递增;
//          第三步:加入每行'*'前的空格,实现图案形状;
int n;
 printf("请输入图案的长度:"); 
 scanf("%d",&n);
 tu_an(n);
 return 0;
}
void tu_an(int n){
 int i;
 int j=1; 
 for(i=1;i<=n;i++){   //实现行数; 
//  int j=1;          //第二次循环j的值又被赋予为3,所以根本没有发生改变; 
  int k;
  int m;
  m=i;
  while(n-m){
   printf(" ");
   m++;
  }
//  int m=1;         //实现每行的空格输出;出现的问题:输出的空格不是阶梯形,而是都依据第一行的格式输出;所以还需要for循环;
//  while(n-m){        
//   printf(" ");
//   m++;
//  }
for(k=1;k<=j;k++){
  printf("*");
 }
  printf("\n");
  j+=2;
 }
}

运行结果如下:

问题二:实现打印杨辉三角形
代码如下:

#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
//实现输出杨辉三角形:根据杨辉三角形的特点可以看出,
//                1,杨辉三角形的每一行的第一个数都是1; 
//                2,第几行有几个数; 
//                3,第三行的第二个数是第二行前两个数的和;第四行的第二个数是第三行前两个数的和,第三个数是第三行第二个第三个数的和,规律以此类推;
//思考:1,如果每行的元素直接有联系,个人认为应该用数组实现每行元素的存储;
//      2,定义二维数组对于每行元素的存储较有利;二维数组的行数代表杨辉三角形的行数;
//      3,依据刚刚分析特点3进行数组的赋值; 
 int m,n,i,j,k,c,b;
 printf("请输入杨辉三角形的阶数:"); 
  scanf("%d",&n);
 int a[n+1][n+1];
 for(i=0;i<=n;i++){          //定义二维数组,首末置1; 
  a[i][0]=1;
  a[i][i]=1;
 }
 for(m=2;m<=n;m++){          //杨辉三角形特点3  
  for(k=1;k<m;k++)
   a[m][k]=a[m-1][k-1]+a[m-1][k];
  }
  for(c=0;c<=n;c++){
  int g=c;
  while(n-g){              //改变三角形形状 
   printf(" ");
   g++;
  } 
  for(b=0;b<=c;b++){
   printf("%d ",a[c][b]);
  }
  printf("\n");
 }   
 return 0;
}

运行结果:

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值