函数并不是没有执行,而是执行了你没有看到它的输出。cinget()会提取回车。所以当你调用第一个函数时会要求输入,假设你输入为a 5然后回车,输出了你想要的图形,然后调用第二个函数,假设输入b 9回车。问题来了cin重载的>>运算符并不会提取回车,但是cinget()会提取回车。所以你上一次输入的回车被cinget()提取,然后cin>>n提取到的就是b,但是n是int,所以出错,就变成你的默认值0。所以没有满足循环条件,没有图形输出,你感觉没有执行。
你可以在第二次输入时只输入一个数字然后回车,就会发现中间多了几个空行,就是fillchar是回车造成的。如果想更加直观,你可以把后一个调用的函数的fillchar定义成int型。就会发现输出的是10。
呵呵!楼主的程序的写法让人看了蛋疼,先帮你美化美化!
#include <stdioh>
long f1(int p)
{
int k;
long r;
long f2(int);
k=pp;
r=f2(k);
return r;
}
long f2(int q)
{
long c=1;
int i;
for(i=1;i<=q;i++)
c=ci;
return c;
}
main()
{
int i;
long s=0;
for (i=2;i<=3;i++)
s=s+f1(i);
printf("\ns=%ld\n",s);
}
看一个代码肯定是从main函数看起的。首先main调用了f1,然后f1又调用了f2;
观察f2发现,其实f2(q)就是用来求q的阶乘q!的!所以可进一步观察出f1(p)是用来求(pp)的阶乘的!
返回到main函数,所以s=4!+9!;
呐,这就是调用函数的过程。
以上就是关于关于c++程序运行的问题(程序运行时只有代码中第一个被执行的函数能正常运行)全部的内容,包括:关于c++程序运行的问题(程序运行时只有代码中第一个被执行的函数能正常运行)、函数的调用(程序是怎么运行的)、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)