黑马程序员技术交流社区
标题: 用*打印金字塔, 打印沙漏, 用数组打印金字塔的问题综合 [打印本页]
作者: zhuanshu1458 时间: 2015-11-7 23:10
标题: 用*打印金字塔, 打印沙漏, 用数组打印金字塔的问题综合
最近课堂上总是碰到用*关于打印三角图形之类的, 今天又学了数组, 用数组赋值再打印金字塔,
对于这方面的问题我写过好多次, 写写改改, 想到了新的方法又会写一遍, 今天把最近这几天写的
关于打印三角图形和沙漏的问题整理了下, 大家有兴趣的可以看看.
以下:
//倒三角的for循环.
// Created by rain on 15/11/2.
// Copyright © 2015年 rain. All rights reserved.
/*
打印倒三角图形
*******
*****
***
*
*/
#include <stdio.h>
int main(){
for (int j=0; j<4; j++) {
for (int k=7; k>j; k--) {
if (7-k<j) {
printf(" ");
}
else{
printf("*");
}
}printf("\n");
}
return 0;
}
//打印沙漏图形/*打印沙漏图形
*******
*****
***
*
*
***
*****
*******
*/
#include<stdio.h>
#include<stdlib.h> //注:abs是绝对值操作符, 要先调用系统头文件stdlib.h(应该是叫操作符把...*^__^*说错轻喷)
int main()
{
for (int i=0; i<9; i++) {
for (int j=0; j<abs(i-4)+3; j++) {
if (j<abs(4-abs(4-i))) {
printf(" ");
}
else{
printf("*");}
}printf("\n");
}
return 0;
}
下午看了下姚姚老师的课程目录,看到有用二位数组打印*三角图形的内容,于是想了下,可以写写这个当成作业,写完了才看到原来老师讲的不是这个...上课讲还要自己赋值,真麻烦...
这个可以define行数, 赋值行数M, 就打印多少行.
//用数组打印三角图形
//打印三角图形
/*
* \
*** |
***** > 一共有M行
******* |
********* /
*/
#include <stdio.h>
#define M 16
char arr[M][M*2-1];
void xingxing(int len);
int main(){
xingxing(M);
return 0;
}
void xingxing(int len){
for(int m=0;m<len;m++){
for(int n=0;n<m+len;n++){
if(n<len-m-1){
arr[m][n]=' ';
}
else{
arr[m][n]='*';
}
}
}
for(int i=0;i<M;i++){
for(int j=0;j<M*2-1;j++){
printf("%c",arr[j]);
}printf("\n");
}
}
还是打印沙漏的问题, 因为之前自己弄得不是很明白, 今天自己又鼓捣了下, 请教了同学, 终于把这东西弄懂了. (这里谢谢我们第五组的技术助长.)
// 打印沙漏
#include<stdio.h>
#include<stdlib.h>
int main()
{
printf("沙漏-9行7列\n");
/*
*******
*****
***
*
*
***
*****
*******
*/
for (int a=0; a<9; a++)
{
for (int b=0; b<7; b++){
if (abs(a-4)<=abs(b-3)){
printf(" ");
}
else{
printf("*");
}
}
printf("\n");
}
return 0;
}
附上思考过程, 数学问题, 大学没学高数都忘光了, 想了半天 %>_<%
同为入学者不懂得同学可以看看..^_^
今天也写整理了一下打印三角形的问题, #define 行数,可以任意打印多少行.//打印M行*三角形
//打印M行
#include<stdio.h>#include<stdlib.h>#define M 13
int len=M;int main(){ for (int a=0; a<len; a++) { for (int b=0; b<len*2+1; b++) { if (a<abs(b-len+1)) { printf(" "); } else { printf("*"); } }printf("\n"); } return 0;}
正三角大家应该都编写过, 我自己貌似没写...好像没有了...应该还可以用数组打印沙漏, 任意define多少行, 但是觉得麻烦了点..有兴趣的同学可以自己写看看. 另外给大家提点建议, 有问题可以多请教我们各组的技术组长, 他们都是内功深厚平时找不到对手的, 所以我们应该多骚扰他们, 他们也是很乐意帮我们解决的. 哈哈
以上.
个人签名:年轻就是永不放弃!
作者: flairamyz 时间: 2015-11-7 23:26
写的不错,点赞
作者: liuchuan_alex 时间: 2015-11-7 23:27
3个for实现倒三角打印,{:2_30:}
#include <stdio.h>
int main(){
for (int i=0; i<4; i++) {
for (int j=0; j<i; j++) {
printf(" ");
}
for (int l=0; l<7-2*i; l++) {
printf("*");
}
printf("\n");
}
return 0;
}
作者: zhuanshu1458 时间: 2015-11-7 23:33
嗯嗯,不错,也是数学问题, 刚开始接触没想那么多...
作者: 陌忆 时间: 2015-11-7 23:50
没看出来有什么改的只是算法的问题
作者: zhuanshu1458 时间: 2015-11-7 23:59
嗯嗯,新手水平,这点小问题研究半天
作者: zhuanshu1458 时间: 2015-11-8 00:00
嗯嗯,新手水平,这点小问题研究半天
作者: 郭嘉 时间: 2015-11-8 00:07
挺好的,有钻研精神
作者: hngdlll 时间: 2015-11-8 00:07
写的挺好的,赞一个!!!
作者: Makeit 时间: 2015-11-8 00:12
赞一个,牛牛牛!
作者: wh8817221 时间: 2015-11-8 00:13
屌爆了!!!!
作者: 865393462 时间: 2015-11-8 00:28
叼叼叼!!在下佩服!
作者: 任子杰 时间: 2015-11-8 00:55
这有什么用 ,,,,
作者: 张学峰 时间: 2015-11-8 09:21
'''''''先顶一下再说
作者: zhuanshu1458 时间: 2015-11-8 10:23
哈哈哈,其实没什么用,就一个知识点,但是写这个可以体现了我学习C基础的过程..给刚入学的学员看的.
| 欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |