最近重新看了以前写的一些代码,总是感觉还不够简单,也有朋友向我反映沙漏的代码可以改进,经过我突破九九八十一道关卡,终于弄出来了沙漏的最终版本,仅用十八行代码,在这里向大家公布啦。(附:朋友更新的小鱼航程代码)
题目要求:
所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差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,小编会为你们一一检查的哦。