【c++】C语言之输入行数,输出实心菱形和空心菱形
【摘要】 输出菱形编程自动输出如下图形,由屏幕输入指定行数(奇数),实现后封装为函数,以行数作为参数值。 输入一个n,表示左边两个菱形图形(实心和空心)的行数(或者一半行数) 利用循环语句实现输出。说明:此题相当于两个题,要打印出两个图。 提示:第一个菱形分析*号个数和规律;第二题分析*出现位置及变化规律 做题思路先输出上半部分,再输出下部分这样就相当于输出一个正三角形和一个倒三角形。...
输出菱形
编程自动输出如下图形,由屏幕输入指定行数(奇数),实现后封装为函数,以行数作为参数值。
输入一个n,表示左边两个菱形图形(实心和空心)的行数(或者一半行数)
利用循环语句实现输出。说明:此题相当于两个题,要打印出两个图。
提示:第一个菱形分析*号个数和规律;第二题分析*出现位置及变化规律
做题思路
先输出上半部分,再输出下部分
这样就相当于输出一个正三角形和一个倒三角形。
并且正三角形的行数比倒三角形的行数多一行,多出的一行是两个三角形的线。
正三角形
for(i=1; i<=n; i++)//上半部分
{
for(j=1; j<=n-i; j++)//"n-i"当前行第一个星号左边的空格数//
cout << ' ';
for(j=1; j<=2*i-1; j++)//"2*i-1"为当前行的星号数//
cout << '*';
cout << endl;//换行//
}
倒三角形
for(i=n; i>=1; i--)//下半部分
{
for(j=1; j<=n-i+1; j++)//"n-i"当前行第一个星号左边的空格数//
cout << ' ';
for(j=1; j<=2*i-1; j++)//"2*i-1"为当前行的星号数//
cout << '*';
cout << endl;//换行//
}
改变两者的n
n_u=n/2+1;//上半部分行数
n_l=n/2;//下半部分行数
代码:
#include <iostream>
using namespace std;
int main()
{
int n,i,j,n_u,n_l;
cout << "输入行数一个奇数:";
cin >> n;
n_u=n/2+1;//上半部分行数
n_l=n/2;//下半部分行数
for(i=1; i<=n_u; i++)//上半部分
{
for(j=1; j<=n_u-i; j++)//"n_u-i"当前行第一个星号左边的空格数//
cout << ' ';
for(j=1; j<=2*i-1; j++)//"2*i-1"为当前行的星号数//
cout << '*';
cout << endl;//换行//
}
for(i=n_l; i>=1; i--)//下半部分
{
for(j=1; j<=n_l-i+1; j++)//"n_l-i"当前行第一个星号左边的空格数//
cout << ' ';
for(j=1; j<=2*i-1; j++)//"2*i-1"为当前行的星号数//
cout << '*';
cout << endl;//换行//
}
}
空心菱形
做题思路
先输出上半部分,再输出下部分
这样就相当于输出一个正三角形和一个倒三角形。
并且正三角形的行数比倒三角形的行数多一行,多出的一行是两个三角形的线。
在实心的基础上改进
不同点在于*的输出
if(i==1)
cout << '*';
else{
cout << '*';
for(j=1; j<=2*(i-1)-1; j++)//"2*i-1"为当前行的星号数//
cout << ' ';
cout << '*';
}
结果
代码
#include <iostream>
using namespace std;
int main()
{
int n,i,j,n_u,n_l;
cout << "输入行数一个奇数:";
cin >> n;
n_u=n/2+1;//上半部分行数
n_l=n/2;//下半部分行数
for(i=1; i<=n_u; i++)//上半部分
{
for(j=1; j<=n_u-i; j++)//"n_u-i"当前行第一个星号左边的空格数//
cout << ' ';
if(i==1)
cout << '*';
else{
cout << '*';
for(j=1; j<=2*(i-1)-1; j++)//"2*i-1"为当前行的星号数//
cout << ' ';
cout << '*';
}
cout << endl;//换行//
}
for(i=n_l; i>=1; i--)//下半部分
{
for(j=1; j<=n_l-i+1; j++)//"n_l-i"当前行第一个星号左边的空格数//
cout << ' ';
if(i==1)
cout << '*';
else{
cout << '*';
for(j=1; j<=2*(i-1)-1; j++)//"2*i-1"为当前行的星号数//
cout << ' ';
cout << '*';
}
cout << endl;//换行//
}
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)