打印沙漏,仅仅只用十八行,这是什么高级操作!(附好友更新小鱼航程)

2020-12-16 14:28:51 浏览数 (1)

最近重新看了以前写的一些代码,总是感觉还不够简单,也有朋友向我反映沙漏的代码可以改进,经过我突破九九八十一道关卡,终于弄出来了沙漏的最终版本,仅用十八行代码,在这里向大家公布啦。(附:朋友更新的小鱼航程代码)

题目要求:

所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。

给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。

输入格式:

输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。

输出格式:

首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。

输入样例:

代码语言:javascript复制
19 *

输出样例:

代码语言:javascript复制
*****
 ***
  *
 ***
*****
2

源代码如下:

代码语言:javascript复制
#include<stdio.h>
#include<math.h>
void p(char f,int count){
while(count-->0)putchar(f);//f为打印的字符
}
int main()
{ int n, f,h,i;
scanf("%d %c",&n,&f);
 h= (int)sqrt((n   1)/2);
 for (i = 1-h; i < h; i  ){
 int j=abs(i);//abs为打印i的绝对值
 p(' ',h-1-j);
 p(f,2*j 1);
 putchar('n');
 }
 printf("%d",n-(2*h*h-1));
 return 0;
 }

运行结果如下:

好友推荐:

点击下面即可进入查看题目:

C语言解题之小鱼的航程

由于朋友要求匿名哈,这里就不@了。(看到第七行,小编果断要求上榜)

代码展示如下:

代码语言:javascript复制
#include<stdio.h>
int main()
{
    int week,n,sum;
    sum=0;
    scanf("%d %d",&week,&n);//week为小鱼游泳的第一天,n为游泳总天数
    while(1){//小编认为这里处理得非常巧妙哦
        if(week!=6&&week!=7){
            sum=sum 250;
        }
        if(week==7){
            week=1;
        }
        else{
            week  ;
        }
        n--;
        if(n==0){
            break;
        }
    }
    printf("%d",sum);
return 0;
}

感谢大佬带来更简洁更让人易懂的代码。

也欢迎更多的伙伴在公众号后台留下你们的code,小编会为你们一一检查的哦。

0 人点赞