黑马程序员技术交流社区
标题:
关于菱形打印的傻逼套路,请耻笑我
[打印本页]
作者:
綦敦涛
时间:
2015-4-9 19:56
标题:
关于菱形打印的傻逼套路,请耻笑我
昨天看到论坛里有同学打印菱形,自己尝试了下,其中也有些问题,希望理解的同学能够提示下~ 这边先说一下我问题:
#include <stdio.h>
#include <math.h>
复制代码
个人感觉思路大家一看就能明白,就是每行先打印空格,再打印*,代码也实现了要求,当前行有
abs((row+1)/2,i)多个空白(*前的空白,i从1开始)也还算好理解,但是当前行有
((row+1)/2-abs((row+1)/2,i))*2-1多个* 是不是太傻逼了?我也是利用数学方法找到得数列之间的关系,请问有没有更简单的方法来体现当前行数与*个数的方法,或者有其他思路可以提供...,谢谢!:handshake
作者:
綦敦涛
时间:
2015-4-9 20:00
#include <stdio.h>
#include <math.h>
//我要用abs函数;
int main(int argc, const char * argv[]) {
int row = 0;
printf("请输入想要打印的行数:");
// 由于输出的时菱形,所以行数恰好等于最多行的*个数;
scanf("%d",&row);
for(int i = 1;i<=row;i++) // 外循环,确定当前打印第几行
{
for(int j=0;j<abs((row+1)/2,i);j++) // 这个循环用于打印前面的空白; 当前行空白的个数与当前行的关系是abs((row+1)/2,i)
{
printf(" ");
}
int starCount =((row+1)/2-abs((row+1)/2,i))*2-1; // 当前行*的个数与行的关系是((row+1)/2-abs((row+1)/2,i))*2-1
for(int m = 0;m <starCount;m++) // 这个循环用于打印后面的*;
{
printf("*");
}
printf("\n");
}
return 0;
}
复制代码
代码没贴上,这边补一下:funk:
作者:
举举手
时间:
2015-4-9 21:16
恩还不错,注释的挺完善
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2