第7章程序结构7.9练习7(Exercises7)1.指出下列程序中的错误。(1)//=====================================//file1.cpp//=====================================intx=1;intfun(){//…}//------------------------------------//=====================================//file2.cpp//=====================================externintx;intfunc();//-------------------------------------voidg(){x=func();}//------------------------------------//=====================================//file3.cpp//=====================================externintx=2;intg();//-------------------------------------intmain(){x=g();//…}//------------------------------------(2)//=====================================//file1.cpp//=====================================intx=5;inty=8;externintz;//-------------------------------------//=====================================//file2.cpp//=====================================intx;externdoubley;externintz;//-------------------------------------解答:(1)file3.cpp文件中,引用变量x时,对其进行了初始化,在空间定义上引发了矛盾,建议不要进行赋值。除此之外,file1.cpp中函数func的fan回类型是整型,但是函数中没有显示的return语句,这是函数设计的忌讳,需要引起警惕。(2)两个文件都定义了全局变量x,这是不允许的,而且liangge文件都声明了整型变量z,却没有一处地方对其进行定义,也是不可取的,最为致命的是,file1中定义的是整型变量y,而file2文件确是以double类型引用的,编译检查不出来,会使结果出错,使得调试工作复杂化。2.注意下列程序中的静态局部变量,写出运行结果。//=====================================//e0702.cpp//静态局部变量//=====================================#includeiostreamusingnamespacestd;//-------------------------------------voidfunc();intn=1;//-------------------------------------intmain(){staticintx=5;inty;y=n;coutMain--x=x,y=y,n=n\n;func();coutMain--x=x,y=y,n=n\n;func();}//------------------------------------voidfunc(){staticintx=4;inty=10;x+=2;n+=10;y+=n;coutFunc--x=x,y=y,n=n\n;}//=====================================解答:Main--x=5,y=1,n=1Func--x=6,y=21,n=11Main--x=5,y=1,n=11Func--x=8,y=31,n=213.将练习2中的第13题拆分成两个程序文件实现,使得一个含有main函数,并实现其中的一个九九表,同时调用另一个输出九九表的函数。而另一个程序文件则实现该九九表的打印。解答:File1#include7.9.3(2).cppintmain(){cout*;for(inti=1;i=8;i++)couti;cout9endl;cout-------;for(inti=1;i=8;i++)cout-----;cout---endl;for(inti=1;i=9;i++){for(intj=1;j=i;j++)if(j==1)coutisetw(7)setfill('')i*j;elsecoutsetw(5)setfill('')i*j;coutendl;}func();return0;}File2#includeiostream#includeiomanipusingnamespacestd;voidfunc(){cout*;for(inti=1;i=8;i++)couti;cout9endl;cout-------;for(inti=1;i=8;i++)cout-----;cout---endl;for(inti=1;i=9;i++){for(intj=i;j=9;j++)if(j==i)coutisetw(2+5*i)setfill('')i*j;elsecoutsetw(5)setfill('')i*j;coutendl;}}