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

课程首页地址: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;
}
时间: 2024-09-19 17:00:38

C++第12周项目1——重温星号图的相关文章

2013级C++第12周项目——函数应用

课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759 [项目1-当年第几天] 定义一个函数,其参数为年.月.日的值,返回这一天为该年的第几天.要求在main函数中输入年月日,然后调用这个函数求值,并在main函数中输出结果. [项目2-太乐了]先听故事,再编程序. 故事是这样的:话说sin和cos是一对夫妇.一天,sin去听相声了,cos在家.过了一会,有人敲门,cos开门一看,是一个不认识的多项式函数.cos问:你是谁啊?

C++第7周任务3-输出星号图详解示例

任务要求见http://blog.csdn.net/sxhelijian/article/details/8045279,本文以输出下面的星号图为例,再次体会"自顶向下,逐步求精"的设计过程. 要输出的星号图是: 将一个图,看作为6行,完成了第一级的分解,提到的算法框架为: i=1; While(i<=6) //需要输出6行 { 输出第i行; 换行: ++i: } 对于"输出第i行"的任务,可以进行细化: 先输出若干空格(多少个空格?第1行0个,第2行1个,第

C++第7周任务3-输出星号图全解

求解思路请参考http://blog.csdn.net/sxhelijian/article/details/8059505. 下面是任务http://blog.csdn.net/sxhelijian/article/details/8045279中所有星号图的参考解答.分别只给出一种参考,读者可以写出更多的其他解答. (1) 要输出的是: 代码: #include <iostream> using namespace std; int main( ) { int i,j,n=6; for(i

2014秋C++ 第12周项目 C++函数新特征与递归函数

课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课程主页中查看.  [项目1- 阅读程序]阅读下列程序,写出程序的运行结果.上机时运行程序,与你的预期进行对照.理解.如果对运行结果和其背后的原理仍不理解,请通过单步执行的手段跟踪理解.(1)阅读下面两个有静态局部变量的程序,阅读中画出其中各变量的变化过程,以掌握静态变量的存储特征,对照实际运行结果检验学习成果

C++第12周项目1——某年的第几天

课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759 [项目1-当年第几天] 定义一个函数,其参数为年.月.日的值,返回这一天为该年的第几天.要求在main函数中输入年月日,然后调用这个函数求值,并在main函数中输出结果.  参考解答1: #include<iostream> using namespace std; int days(int y, int m, int d); int main() { int year

2014秋C++第12周项目2参考-OJ平台题目中多种输入形式的处理

课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课程主页中查看.  [项目2-OJ平台题目中多种输入形式的处理]看教学视频或"OJ平台题目中不同形式输入的处理",完成平台中的一组题目,分别对应不同输入的形式的问题. A: 求N组数的最大公约数 Description 计算一组数的最大公约数 Input 第一行是数据的组数N,从第二行是N组

C++第12周项目4——用函数解决素数、回文数等

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 [项目4-回文.素数]  编制一个返回值为bool型的函数isPrimer(),用于判断参数是否为素数,isPalindrome()用于判断参数是否是回文数,调用函数回答以下问题(可以分别编制几个程序完成,也可以在一个main()函数中完成,输出时,用明显的提示语,说明正在完成哪个任务.) (1)输出10000以内的所有素数.(2)输出10000以内的所有回文数.(3)输

2014秋C++第12周项目4参考- 银行系统

课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课程主页中查看.  [项目4 - 银行系统]这是我们要做的一个真正的项目!涉及到的技术都用过了,只不过,程序真的要长得多了. 在学习中,总是想要些成就感的.当你没有做过一些事情的时候,总是不能知道所学知识究竟能干些什么.在学习过程中,完成一个像样的项目,那是一件很酷的事情,也让我们更有激情.做好思想准备,中间可

C++第12周项目5.1——银行系统框架

课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759 [项目5-银行系统] 这是我们要做的一个真正的项目!涉及到的技术都用过了,只不过,程序真的要长得多了. 在学习中,总是想要些成就感的.当你没有做过一些事情的时候,总是不能知道所学知识究竟能干些什么.在学习过程中,完成一个像样的项目,那是一件很酷的事情,也让我们更有激情.做好思想准备,中间可能会有些困难,但相信沉下心来还是可以完成的. 要做项目的需求最好能和大家的生活实践联