C++第12周项目1——重温星号图

简介: 课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565【项目1-调用函数输出星号图】  这一组的练习意在通过调用函数输出星号图,体会与理解函数的工作过程,并为其后编制自定义函数实现特定功能,打下基础。  任务1:补充完下面的程序,使程序输出上面的两个星号图,要求在main()函数中调用自定义函数printstars(

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565


【项目1-调用函数输出星号图】

  这一组的练习意在通过调用函数输出星号图,体会与理解函数的工作过程,并为其后编制自定义函数实现特定功能,打下基础。


  任务1:补充完下面的程序,使程序输出上面的两个星号图,要求在main()函数中调用自定义函数printstars()。

  要求:左图必需实现,右图尝试实现。

  输出左图的参考解答:

//for循环中调用函数printstars的程序
#include <iostream>
using namespace std;
void printstars(int m) //定义能输出一行m个星号的函数
{  
  for (int j=1; j<=m; ++j)
    cout<<'*';
}
int main( )
{ 
  int i,n=6; //n代表要输出的行数
  //请在下面构造循环,调用printstars()输出每一行的星号
  for(i=1;i<=6;++i)
  {
	  printstars(2*i-1); //对第i行,输出2*i-1个星号
	  cout<<endl;        //换行
  }
  return 0;
} 

  回答:实现右图遇到了什么困难?如何解决,有何办法?用你想到的办法尝试一下。

  进一步提示:如果要输出的不是星号(*)图,而是井号(#)图,该如何改上面的程序?试着实施一下。

  仔细思考上述问题发现,printstars()函数只能输出星号(*),当要输出空格、井号时,不好实现了,希望有个能输出任意符号的函数。


  任务2:请先阅读已经定义好的函数printchs(),然后利用这个函数输出星号图:

  要求:分别编程序,输出左右两个星号图;
  输出左图的参考代码:

//for循环中调用函数printchs的程序
#include <iostream>
using namespace std;
void printchs(char c, int m)  //定义能输出一行m个字符c的函数
{  
  for (int j=1; j<=m; ++j)
     cout<< c;
  cout<<endl;
}

int main( )
{ 
  int i,n=6; //n代表要输出的行数
  //请在下面构造循环,调用printchs()输出每一行的星号
  for(i=1;i<=6;++i)
  {
	  printchs('*',2*i-1); //对第i行,输出2*i-1个星号,调用需要两个实参
  }
  return 0;
} 

  输出右图,需要在每一行中,先输出若干空格,再输出若干星号,调用两次printchs()。由于cout<<endl;被执行两次,将其放到main函数的循环中,而不是函数中。参考代码如下:

//for循环中调用函数printchs的程序
#include <iostream>
using namespace std;
void printchs(char c, int m)  //定义能输出一行m个字符c的函数
{  
	for (int j=1; j<=m; ++j)
		cout<< c;
	
}

int main( )
{ 
	int i,n=6; //n代表要输出的行数
	for(i=1;i<=n;++i)
	{
		printchs(' ',n-i);  //第i行要先输出些空格
		printchs('*',2*i-1); //对第i行,输出2*i-1个星号,调用需要两个实参
		cout<<endl;
	}
	return 0;
} 

  进一步要求:有了printchs()函数,这儿的处理比任务1要方便了很多。如果要输出的不是星号(*)图,而是井号(#)图,该如何改上面的程序?试着实施一下。



  任务3:在由多个函数构成的程序中,程序员常用的做法是,main()函数先定义,其他自定义函数后定义,这时必须在main()函数前声明自定义的函数(请详读教材4.4.3小节)。按这个要求,重写上面任务2中的程序。

//for循环中调用函数printchs的程序
#include <iostream>
using namespace std;
void printchs(char c, int m);//函数的声明,函数原型
int main( )
{ 
	int i,n=6; 
	for(i=1;i<=n;++i)
	{
		printchs(' ',n-i);
		printchs('*',2*i-1); //对第i行,输出2*i-1个星号,调用需要两个实参
		cout<<endl;
	}
	return 0;
} 

void printchs(char c, int m)  //函数的定义
{  
	for (int j=1; j<=m; ++j)
		cout<< c;
}




目录
相关文章
|
7月前
|
编译器 C++ 开发者
【Conan 入门教程 】使用Conan 2.X和Autotools高效构建C/C++项目
【Conan 入门教程 】使用Conan 2.X和Autotools高效构建C/C++项目
379 1
|
7月前
|
算法 测试技术 数据处理
【C/C++ 面试技巧】如何在简单的项目里突出自己的价值?
【C/C++ 面试技巧】如何在简单的项目里突出自己的价值?
187 1
|
7月前
|
算法 测试技术 开发工具
编写高效技术文档的艺术:C++项目实践指南
编写高效技术文档的艺术:C++项目实践指南
180 0
|
7月前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
255 7
WK
|
1月前
|
机器学习/深度学习 人工智能 算法
那C++适合开发哪些项目
C++ 是一种功能强大、应用广泛的编程语言,适合开发多种类型的项目。它在游戏开发、操作系统、嵌入式系统、科学计算、金融、图形图像处理、数据库管理、网络通信、人工智能、虚拟现实、航空航天等领域都有广泛应用。C++ 以其高性能、内存管理和跨平台兼容性等优势,成为众多开发者的选择。
WK
89 1
|
2月前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
604 3
|
3月前
|
C++
【C++案例】一个项目掌握C++基础-通讯录管理系统
这篇文章通过一个通讯录管理系统的C++项目案例,详细介绍了如何使用C++实现添加、显示、删除、查找、修改和清空联系人等功能。
57 3
|
5月前
|
Rust 测试技术 编译器
Rust与C++的区别及使用问题之Rust项目中组织目录结构的问题如何解决
Rust与C++的区别及使用问题之Rust项目中组织目录结构的问题如何解决
|
4月前
|
编译器 C++ 开发者
Visual Studio属性表:在新项目中加入已配置好的C++库
通过以上步骤可以确保Visual Studio中新项目成功地加入了之前已配置好的C++库。这个过程帮助开发者有效地管理多个项目中共享的库文件,提升开发效率。
128 0
|
5月前
|
Java C++ 开发者
如何根据项目需求选择使用C++还是Python进行内存管理?
【7月更文挑战第2天】如何根据项目需求选择使用C++还是Python进行内存管理?
49 0