c++ 输出图形
来源:互联网 发布:知乎注册设备id不匹配 编辑:程序博客网 时间:2024/05/17 22:40
// output_new.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <math.h>
/*
* 输出图案
*/
//限制条件:只能用两句输出(一共两句)
// cout<<"#" cout<<"\n"
//思路,一共有多少行,每一行要输出多少个,行与列的关系式
/*
* 1.半个倒三角
* 问题分解:
*/
//1.1 输出一行
void print_oneline(int n){
for(int i=0;i<n;i++){cout<<"#";}
}
//1.2 输出方形
void print_square(int n){
for(int row=0;row<n;row++){
for(int column=0;column<n;column++){
cout<<"#";
}
cout<<"\n";
}
}
//1.3 输出半方形
/*
* ####
* ###
* ##
* #
*/
//行数0-n r
//列数n-0 c=n-r
void half_triangle(int n){
int R=n;//行数 //注意编号,这里我们从第一行开始(适合人类)
int C=0;
for(int row=1;row<=R;row++){ //行数0-n
C=R-(row-1); //每一行有多少个输出位
for(int column=1;column<=C;column++){//列数n-0
cout<<"#";
}
cout<<"\n";
}
}
//2 侧三角
/*
* #
* ##
* ###
* ####
* ###
* ##
* #
*/
//2.1
//行数: 0---(2n-1)
//列数: 0---n--0
// 0 1 2 3 4 5 6
// 0 1 2 3 2 1 0
//===》转换,利用绝对值
// 1 2 3 4 5 6 7
// 1 2 3 4 3 2 1
//===>
// 1 2 3 4 5 6 7 r
// 3 2 1 0 -1 -2 -3 4-r
// 3 2 1 0 1 2 3 abs(4-r)
// 1 2 3 4 3 2 1 4-abs(4-r)
void double_half_triangle(int n){
int R=n*2-1;//行数 //注意编号,这里我们从第一行开始(适合人类)
int C=0;
for(int row=1;row<=R;row++){
C=n-abs(n-row); //每一行有多少个输出位,(这里C与n=R/2+1有关)
for(int column=1;column<=C;column++){
cout<<"#";
}
cout<<"\n";
}
}
//3 倒三角变
/*
* ######
* ####
* ##
*/
//3.1 分解:半三角变种
//r: 1 2 3 r
//c: 6 3 2 c=2*(n-r)
//每行起始位置:1 2 3
void anti_half_triangle(int n){
int R=n;//行数 //注意编号,这里我们从第一行开始(适合人类)
int C=0;
for(int row=1;row<=n;row++){
for(int i=0;i<row-1;i++){ //空格是0,1,2,3...
cout<<' ';
}
C=2*(n-(row-1)); //每一行有多少个输出位
for(int column=1;column<=C;column++){
cout<<"#";
}
cout<<"\n";
}
}
//3 侧三角变种
/*
* ##
* ####
* ######
* ######
* ####
* ##
*/
//行数: 1 - 2n
//列数: 2---n--n--2
//===》转换,利用绝对值
// 1 2 3 4 5
// 2 4 6 4 2
//===>
// 1 2 3 4 5 r
// 4 2 0 -2 -4 2*(3-r)
// 4 2 0 2 4 2*abs(3-r)
// 2 4 6 4 2 2*3-2abs(3-r)
// =======>注意输出偶数的绝对值转换方式是+0.5
void double_double_half_triangle(int n){
int R=n*2;//行数 //注意编号,这里我们从第一行开始(适合人类)
int C0=0;//前缀空格
int C=0;
for(int row=1;row<=R;row++){
C0=(abs(n+0.5-row)+0.5);
for(int i=0;i<C0;i++){
cout<<' ';
}
C=2*(abs(n-(abs(n+0.5-row)+0.5))+1);
for(int column=0;column<C;column++){
cout<<"#";
}
cout<<"\n";
}
}
//4 扩展
/*
* # #
* ## ##
* ### ###
* ########
* ########
* ### ###
* ## ##
* # #
*
*/
//4.2 再分解
/*
* #
* ##
* ###
* ####
*/
void f4_2(int n){
int R=n;//行数
int C0=0;//前缀空格
int C=0;//#个数
for(int row=1;row<=n;row++){
C0=row-1;
for(int i=0;i<C0;i++){
cout<<' ';
}
C=row;
for(int column=0;column<C;column++){
cout<<"#";
}
cout<<"\n";
}
}
//4.1分解
/*
* # #
* ## ##
* ### ###
* ########
*/
void f4_1(int n){
int R=n;//行数
int C0=0;//前缀空格
int C1=0;//中间空格
int C=0;//#个数(前后各一半)
for(int row=1;row<=n;row++){
//开始位置
C0=row-1;
for(int i=0;i<C0;i++){
cout<<' ';
}
C=row;
for(int column=0;column<C;column++){
cout<<"#";
}
//后面开始位置
C1=(n-row)*4;
for(int j=0;j<C1;j++){
cout<<' ';
}
for(int column1=0;column1<C;column1++){
cout<<"#";
}
cout<<"\n";
}
}
//4 扩展
/*
* # #
* ## ##
* ### ###
* ########
* ########
* ### ###
* ## ##
* # #
*
*/
//单
void f4a(int n){
int R=n*2-1;//行数
int C0=0;//前缀空格
int C1=0;//中间空格
int C=0;//#个数(前后各一半)
for(int row=1;row<=R;row++){
//开始位置
C0=n-abs(n-row)-1;
for(int i=0;i<C0;i++){
cout<<' ';
}
C=n-abs(n-row);
for(int column=0;column<C;column++){
cout<<"#";
}
//后面开始位置
C1=abs(n-row)*4;
for(int j=0;j<C1;j++){
cout<<' ';
}
for(int column1=0;column1<C;column1++){
cout<<"#";
}
cout<<"\n";
}
}
//双
void f4(int n){
int R=n*2;//行数
int C0=0;//前缀空格
int C1=0;//中间空格
int C=0;//#个数(前后各一半)
for(int row=1;row<=R;row++){
//开始位置
C0=(n-(abs(n+0.5-row)-0.5))-1;
for(int i=0;i<C0;i++){
cout<<' ';
}
C=(n-((abs(n+0.5-row)+0.5)))+1;
for(int column=0;column<C;column++){
cout<<"#";
}
//后面开始位置
C1=abs(abs(n+0.5-row)+0.5)*4;
for(int j=0;j<C1;j++){
cout<<' ';
}
for(int column1=0;column1<C;column1++){
cout<<"#";
}
cout<<"\n";
}
}
int main(int argc, char* argv[])
{
print_oneline(5);
printf("\n\n");
print_square(5);
printf("\n\n");
half_triangle(6);
printf("\n\n");
double_half_triangle(3);
printf("\n\n");
anti_half_triangle(3);
double_double_half_triangle(4);
f4_2(3);
f4_1(4);
f4a(4);
f4(4);
return 0;
}
- 【c语言】输出一个图形
- C语言输出星号图形
- C语言输出菱形图形
- 输出“心” 图形的C语言代码
- C++:使用循环输出各种图形
- 空心三角形(图形的输出)c语言
- c语言之打印输出图形
- 【C语言】输出好看的星星图形
- 输出图形
- 输出图形
- 输出图形
- 图形输出
- 输出图形
- C语言对于轴对称图形输出的分析
- C语言数组应用之图形数字的输出
- 【C入门向】输出指定图形:循环与逻辑运算练习
- 关于for(输出图形)
- 菱形图形输出
- jQuery ajax 解析
- Exception in thread "main" org.hibernate.MappingException: Unknown entity: com.hibernate.domain.User
- 带环单链表的问题
- Objective-C 对象进阶:自定义对象的归档
- (2)入门指南——(2)jQuery可以做什么(What jQuery does)
- c++ 输出图形
- Java的Map集合的三种遍历方法
- iOS NSInteger/NSUInteger与int/unsigned int、long/unsigned long之间的区别!
- 自定义UISearchBar
- iOS开发之滑动视图
- SCRUM中如何处理sprint期间的需求变更和一些不确定性的任务
- fedora 18格式化磁盘报“/dev/sdb is apparently in use by the system; will not make a filesystem here!”解决办法
- S3C6410学习——Nand flash陷阱
- Java 中正确使用 hashCode 和 equals 方法