栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【c++】C语言之输入行数,输出实心菱形和空心菱形

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【c++】C语言之输入行数,输出实心菱形和空心菱形

输出菱形

编程自动输出如下图形,由屏幕输入指定行数(奇数),实现后封装为函数,以行数作为参数值。

   输入一个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 
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 
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;//换行//
	}
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/935810.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号