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;
}




目录
相关文章
|
2月前
|
编译器 C++ 开发者
【Conan 入门教程 】使用Conan 2.X和Autotools高效构建C/C++项目
【Conan 入门教程 】使用Conan 2.X和Autotools高效构建C/C++项目
83 1
|
2月前
|
算法 测试技术 数据处理
【C/C++ 面试技巧】如何在简单的项目里突出自己的价值?
【C/C++ 面试技巧】如何在简单的项目里突出自己的价值?
53 1
|
2月前
|
算法 测试技术 开发工具
编写高效技术文档的艺术:C++项目实践指南
编写高效技术文档的艺术:C++项目实践指南
80 0
|
2月前
|
开发工具 C语言 C++
CMake构建大型C/C++项目:跨平台设计与高级应用(二)
CMake构建大型C/C++项目:跨平台设计与高级应用
46 0
|
1月前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
64 7
|
3天前
|
存储 C++ UED
【C++】飞机大战项目记录
通过上面的设计,我们实现来看飞机大战的主要功能
18 4
|
3天前
|
存储 安全 测试技术
【C++】string学习 — 手搓string类项目
C++ 的 string 类是 C++ 标准库中提供的一个用于处理字符串的类。它在 C++ 的历史中扮演了重要的角色,为字符串处理提供了更加方便、高效的方法。
12 0
【C++】string学习 — 手搓string类项目
|
13天前
|
C++
C++入门项目——通讯管理系统
C++入门项目——通讯管理系统
|
18天前
|
设计模式 存储 算法
C++从入门到精通:3.7阅读和理解开源项目——在实际项目中应用C++编程技巧和规范
C++从入门到精通:3.7阅读和理解开源项目——在实际项目中应用C++编程技巧和规范
|
1月前
C/C++test两步完成CMake项目静态分析
通过将C/C++test集成到CMake项目中,并根据项目的需要进行配置,可以在两步内完成CMake项目的静态分析。这样可以帮助开发人员及时发现并修复潜在的代码问题,提高代码质量和可靠性。
8 0