新手面试常遇到的三角打印

说起来这几道题说难不难,但遇到了一时做不出也情有可原

/*
斜三角打印5行范例
#
##
###
##
#
*/
void TrianglePrinting()
{
	int line = 0;
	cout << "请输入行数: ";
	cin >> line;

	int up =  line % 2 == 0 ? line / 2 : line / 2 + 1;
	int down = line / 2 - 1;
	//上半部分
	for (int i = 0; i < up; ++i)
	{
		for (int j = 0; j <= i; ++j)
		{
			cout << "#";
			if (i == j)
				cout << "\n";
		}
	}
	//下半部分
	for (int i = down; i >= 0; --i)
	{
		for (int j = 0; j <= i; ++j)
		{
			cout << "#";
			if (i == j)
				cout << "\n";
		}
	}

}

c++做的,控制台可以跑

 

 

/*
菱形打印5行
  #0 012
 ###1 0123
#####2 01234
 ###
  #
*/
void DiamondPrinting()
{
	int line = 0;
	cout << "请输入行数(奇数): ";
	do
	{
		cin >> line;
	} while (line < 1 || line % 2 == 0);
	
	for (int i = 0; i < line; ++i)
	{
		//得到本行#数量
		int jin = i <= line / 2 ? i * 2 + 1 : (line - i) * 2 - 1;
		//本行空格数
		int kong = (line - jin) / 2;
		for (int j = 0; j < kong; ++j)
			std::cout << " ";
		for (int j = 0; j < jin; ++j)
			std::cout << "#";
		std::cout << std::endl;

	}
}

截图:

 

 

这一个第二种方法用C#应该可以实现,没有去具体操作

/*
字符串处理
##25#KN#变成####25KN并记录#个数
*/
string StringHandle_1()
{
	string strHandle = "##25#KN#";
	int count = 0;
	//方法一:通过排序交换
	for (int i = 0; i < strHandle.length() - 1; ++i)
	{
		for (int j = 0; j < strHandle.length() - i - 1; ++j)
		{
			if (strHandle[j] != '#' && strHandle[j + 1] == '#')
			{
				char temp = strHandle[j];
				strHandle[j] = strHandle[j + 1];
				strHandle[j + 1] = temp;
			}
		}
		if (strHandle[i] == '#')
			count++;
	}

	//方法2:不排序方法,通过string处理,不过c++替换replace要传位置,不像C#可以直接替换,strHandle.replace('#', "");
	//      大致方法是:先得到#个数,再把#都换为"",再根据个数拼接结果,这里就不写了
	

	//printf("#有%d个,排序后为:\n", count);

	return strHandle;
}
 
 
 
 
 
 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值