调用函数输出星号图:
方法一:
#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()函数只能输出星号(*),当要输出空格、井号时,不好实现了,希望有个能输出任意符号的函数。
#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代表要输出的行数
//请在下面构造循环,调用printstars()输出每一行的星号
for(i=1;i<=6;++i)
{
printchs('*',2*i-1); //对第i行,输出2*i-1个星号,调用需要两个实参
}
return 0;
}
输出以下星号图:
需要在每一行中,先输出若干空格,再输出若干星号,调用两次printchs()。由于cout<<endl;被执行两次,将其放到main函数的循环中,而不是函数中。参考代码如下:
#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;
}
在由多个函数构成的程序中,程序员常用的做法是,main()函数先定义,其他自定义函数后定义,这时必须在main()函数前声明自定义的函数,按这个要求,重写程序
#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;
}