当前位置:   article > 正文

PTA 团体程序设计天梯赛-练习集 L1-002 打印沙漏 L1-003 个位数统计_天梯赛打印沙漏

天梯赛打印沙漏

重温一下PTA团体程序设计天梯赛-练习集,有意思的题目分享下自己的思路,也希望能学到更简单的思路


L1~002

思路:

1.用数学思维,可以看出这是个数列题,沙漏所需要的符号数为1+3×2+5×2+7×2+......,这是高中数学中的Sn也就是数列和,而An的式子如下:

                                                An=1,n=1时

                                                An=2×( 2n-1 )=4n-2,n>=1时

所以等差数列Sn=2n²-1,接下来我们要判断输入的数字应该停在“n等于几”,即2n²-1>“输入的数字”时,打印一个这样的沙漏需要2(n-1)²-1个符号,而 “输入的数字”-(2(n-1)²-1)就是要输出在沙漏下面的“多出的符号的数量”。

2.要打印沙漏,很容易看出来这是个二重循环,外循环是行用下标i(因为),内循环是列用下标j,每行打印的符号数为An=2n-1个,只不过每打印一行n就减一。单独打印上面的三角形的代码:

  1. for(j=number=--i;j>0;j--)//上面的三角形
  2. { //其中i即n,number为i-1,j为变化的n
  3. for(i=number-j;i>0;i--)//打印空格
  4. printf(" ");
  5. for(i=1;i<=2*j-1;i++)//打印符号
  6. printf("%c",ch);
  7. printf("\n");
  8. }

同理,下面的三角形的代码:

  1. for(j=2;j<=number;j++)//下面
  2. {
  3. for(i=number-j;i>0;i--)
  4. printf(" ");
  5. for(i=1;i<=2*j-1;i++)
  6. printf("%c",ch);
  7. printf("\n");
  8. }

完整代码:

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int n,number,i,j;
  5. char ch;
  6. scanf("%d %c",&n,&ch);
  7. for(i=1;;i++)
  8. if(n<2*i*i-1) break;
  9. for(j=number=--i;j>0;j--)//上面
  10. {
  11. for(i=number-j;i>0;i--)
  12. printf(" ");
  13. for(i=1;i<=2*j-1;i++)
  14. printf("%c",ch);
  15. printf("\n");
  16. }
  17. for(j=2;j<=number;j++)//下面
  18. {
  19. for(i=number-j;i>0;i--)
  20. printf(" ");
  21. for(i=1;i<=2*j-1;i++)
  22. printf("%c",ch);
  23. printf("\n");
  24. }
  25. printf("%d",n-2*number*number+1);
  26. return 0;
  27. }


L1~003

 思路

先定义一个全局数组a[11],再把输入的一串数字当成char字符类型,再储存到int的命名为a[11]的数组里面,即:

  1. while(1)
  2. {
  3. ch=getchar();
  4. if(ch==10) break;//ASCII码10是回车
  5. else a[ch-'0']++;//ch-'0'就是数字
  6. } //如8的字符char类型-'0'就是数字8

之后a[n]中a[n]为几,就说明有几个“数字为n的数”,如果a[2]=3,就说明有3

个数字2,最后打印出来即可。

完整代码:

  1. #include <stdio.h>
  2. int a[11];
  3. int main()
  4. {
  5. int i;
  6. char ch;
  7. while(1)
  8. {
  9. ch=getchar();
  10. if(ch==10) break;
  11. else a[ch-'0']++;
  12. }
  13. for(i=0;i<10;i++)
  14. if(a[i]!=0) printf("%d:%d\n",i,a[i]);
  15. return 0;
  16. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/935737
推荐阅读
相关标签
  

闽ICP备14008679号