6_14.cpp
上传用户:cdrcdr123
上传日期:2021-04-10
资源大小:713k
文件大小:1k
源码类别:

控制台编程

开发平台:

C/C++

  1. // 6_14.cpp : 定义控制台应用程序的入口点。
  2. //
  3. #include "stdafx.h"
  4. #define MAXLINE 80
  5. int _tmain(int argc, _TCHAR* argv[])
  6. {
  7. char ch;    //图形中的字符
  8. int blanks; //字符间的空格数
  9. int layer;  //层数
  10. printf("请输入图案中的字符,字符间的空格数及图案的层数n");
  11. scanf("%c%d%d", &ch, &blanks, &layer);
  12. if(layer%2==0)
  13. {
  14. printf("层数必须为奇数n");
  15. return 1;
  16. }
  17. if(layer*(blanks+1)+1>MAXLINE)
  18. {
  19. printf("图像太大了!n");
  20. return 2;
  21. }
  22. int j, k; 
  23. int initBlank = (blanks+1)*(layer/2); //每行开头空格数
  24. int num = 1;  //每行字符个数,初值为1;
  25. for(k=0; k<=layer/2; k++)
  26. {
  27. for(j=0; j<initBlank; j++)
  28. printf(" ");
  29. //打印num个ch,中间用n个空格隔开
  30. for(j=0; j<num-1; j++)
  31. {
  32. printf("%c", ch);
  33. for(int i=0; i<blanks; i++) 
  34. printf(" ");
  35. }
  36. printf("%cn", ch); //最后一个字符后面不需要空格
  37. num += 2;  //下一行字符数增加2个
  38. initBlank -= (blanks+1); //计算下一行开头空格的个数
  39. }
  40. initBlank += 2*(blanks+1);
  41. num -= 4;
  42. for(; k<layer; k++)
  43. {
  44. for(j=0; j<initBlank; j++)
  45. printf(" ");
  46. //打印num个ch,中间用n个空格隔开
  47. for(j=0; j<num-1; j++)
  48. {
  49. printf("%c", ch);
  50. for(int i=0; i<blanks; i++)
  51. printf(" ");
  52. }
  53. num -= 2;
  54. printf("%cn", ch);
  55. initBlank += (blanks+1);
  56. }
  57. return 0;
  58. }