乘法九九表的拆分有关问题

乘法九九表的拆分问题
这是一道练习题,答案已经有了,可是不能正常运行。想请会的人帮忙看看哪个地方出错了?
这是两个程序文件,一个实现九九表的打印,一个实现输出九九表。
//=====================================
// 乘法九九表
//=====================================
#include<iostream>
using namespace std;
//-------------------------------------
void f2();
//-------------------------------------
void f1(){
  cout<<"  * ";
  string s="   1";
  for(int i=1; i<=9; i++,s[3]++)
    cout<<s;
  cout<<"\n"+string(42, '-')+"\n";
  s = "  1 ";
  for(int i=1; i<=9; i++,s[2]++)
  {
    cout<<s;
    string t = "    ";
    for(int j=1,a; j<=i&& (a=i*j); j++)
    {
      if(a>9){ t[2]=a/10+'0'; a%=10; }
      t[3]=a+'0';
      cout<<t;
    }
    cout<<"\n";
  }
}//------------------------------------
int main(){
  f1();
  cout<<"\n";
  f2();
}//====================================
// 乘法九九表
//=====================================
#include<iostream>
#include<iomanip>
using namespace std;
//-------------------------------------
int f2(){
  cout<<"  * ";
  for(int i=1; i<=9; i++)
    cout<<setw(4)<<i;
  cout<<"\n"+string(42, '-')+"\n";
  for(int i=1; i<=9; i++){
    cout<<setw(3)<<i<<setw(4*i-4+1)<<" ";
    for(int j=i; j<=9; j++)
      cout<<setw(4)<<i*j;
    cout<<"\n";
  }
}//====================================

 
 
C++  乘法九九表

------解决方案--------------------
int f2(){//用int又没有return的?应该用void吧
  cout<<"  * ";
  for(int i=1; i<=9; i++)
    cout<<setw(4)<<i;
  cout<<"\n"+string(42, '-')+"\n";
  for(int i=1; i<=9; i++){
    cout<<setw(3)<<i<<setw(4*i-4+1)<<" ";
    for(int j=i; j<=9; j++)
      cout<<setw(4)<<i*j;
    cout<<"\n";
  }
}//====================================//多了}吧?

------解决方案--------------------
***程序有两个问题
1. 少了#include <string> 语句。因为 f1() 函数中string s="   1";  其中s是string类型的变量,string类中生载了输出操作符 <<,所以需要包含string文件。
2. f2() 函数的声明与定义不一致。
***修改后的代码如下(结构还是按你原来的结构,没有动):

//=====================================
// 乘法九九表
//=====================================
/* 修改01 包含string文件 */ #include <string>
#include<iostream>