说起来这几道题说难不难,但遇到了一时做不出也情有可原
/*
斜三角打印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;
}