黑马程序员技术交流社区
标题: 初学C语言打印图形,精解.四种三角形.心得(面试用) [打印本页]
作者: sf1215225 时间: 2015-11-5 23:32
标题: 初学C语言打印图形,精解.四种三角形.心得(面试用)
本帖最后由 sf1215225 于 2015-11-5 23:46 编辑
小弟是初学者,看到很多同学在打印正三角形和倒三角形时屡不清思路.
便想看看自己能不能把自己的思路讲清,以便帮助同学们(其实也就是日常敲代码精细了备注而已
先说一下我的思路,输入1-5,打印出不同的图形..
被抽楼了,不开心了,不想说太多...
#include<stdio.h>
//定义一个函数printfPicture,使之可以接收数字打印相应地图形.
int printfPicture(int inputNum){
//用switch语句来判断每个字符对应的是什么图形.
switch(inputNum){
//case1为打印正方形,5行5列ab相等,故a和b都是各循环5次.
/*
* * *
* * *
* * *
*/
case 1:{
for (int a=0; a<5; a++) {
for (int b=0; b<5; b++) {
printf("* ");
}
printf("\n");
}
}
break;
//case2为打印正直角三角形.
/*
*
* *
* * *
*/
case 2:{
//外循环5次,a循环5次不变.
for (int a=0; a<5; a++) {
//里循环5次,但每次随a的值递增自己循环的次数.里循环随外循环的值从1次开始递增循环次数.
//故说a会越来越大,b随a的值变大且b大不过a.即b<=a.
for (int b=0; b<=a; b++) {
printf("* ");
}
printf("\n");
}
}
break;
//case3打印倒直角三角形.
/*
* * *
* *
*
*/
case 3:{
//外循环5次不变.
for (int a=0; a<5; a++) {
//里循环打出的*从多到少***** **** ***可以形成倒三角形
//里循环从循环5次然后4次3次逐渐递减可以是(b=5,b>0,b--),进行b的自减运算
//也可以b仍然是自增,用一个数减去b,b自增的越大,减b得出的值就越小,同样完成了自减运算.
for (int b=0; b<5-a; b++) {
printf("* ");
}
printf("\n");
}
}
break;
//case4打印正三角形.
/*
*
* * *
* * * * *
*/
case 4:{
//正三角形为5行不变,所以外层循环不动.
for (int a=0; a<5; a++) {
/*
先像case2一样打出正直角三角形,即b<=a
但是正三角形左边要像右边一样也要有角,我们分两步来做.
第一步先给左边充斥上列数和右边对等的矩形
* * *
* * * *
* * * * * 即b运行的次数(列数)每次都加了右边三角形的列数-1,即5-1,
再加随a外层循环的递增值,就等于里循环b要打印的列数.即5-1+a,a+4
*/
for (int b=0; b<=a+4; b++) {
/*
第二步再给多数来得那部分*打印成空格,剩下的打印*
即打印 参照case3,b<5-a时打印出五行五列的倒直角三角形
^ ^ ^ 而此时我们只需要打印4行4列的空格就OK.即b<4-a就可以了
^ ^ 剩下个都打印成*,就可以了.
^
*/
if (b<4-a) { //建立if语句判断上方打印.
printf(" ");
}else{
printf("* ");
}
}
printf("\n");
}
}
break;
case 5:{
for (int a=0; a<5; a++) {
for (int b=5; b>a-4; b--) {
if (6-b<=a) {
printf(" ");
}else{
printf("* ");
}
}
printf("\n");
}
}
break;
}
return 0;
}
int main(){
int n;
printf("输入1打印正方形\n输入2打印正直角三角形\n输入3打印倒直角三角形\n");
printf("输入4打印正三角形\n输入5打印倒直角三角形\n");
scanf("%d",&n);
printfPicture(n);
printf("\n");
}
发了好多遍才出来,心情都木有了..
不想说话了.
对了小弟初学,求轻喷(ios入学辅导班第四天)
最后一个图形没注释 因为屡思路太久,脑子容易炸 容易炸 容易炸 恩,重要的事情说三遍.
还有 ,开头说面试可能用是我猜的
作者: sf1215225 时间: 2015-11-5 23:34
为毛我打印了那么多....最后只显示了这两行!!!!!!!崩溃了!!!!!!
作者: sf1215225 时间: 2015-11-5 23:37
标题: 怎么删掉这一楼 ..啊啊啊啊
本帖最后由 sf1215225 于 2015-11-5 23:49 编辑
怎么删掉这一层..啊啊......
各种崩溃
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |