王鹿其 发表于 2023-11-13 20:53:58

求答案

(1)阅读下列程序,写出其运行结果,并指出其功能。
<1>
        #include <iostream.h>

int hcf( int u , int v )
{
        int a,b,t,r;

        if (u > v)        {
                t = u ;
                u = v ;
                v = t ;
}
a = u ;
b = v ;
while ( ( r = b % a ) != 0 ){
        b = a ;
        a = r ;
}
return( a ) ;
}

int lcd( int u , int v , int h )
{
        return( u * v / h ) ;
}

void main()
{
        int u , v , h , l ;

        cin >> u >> v ;
        h = hcf ( u , v ) ;
        cout << “hcf=” << h << endl ;
        l = lcd ( u , v, h ) ;
        cout << “lcd=” << l << endl ;
}
输入:48,32
               
<2>
        #include <iostream.h>

        longfib ( int g )
        {
                switch ( g )
                {
                        case 0 : return 0;
                        case 1 :
case 2 : return 1;
}
return ( fib( g – 1 ) + fib( g – 2 ) ) ;
}

void main ( )
{
                long k;

                k = fib ( 7 );
                cout << “k=” << k << endl ;
}

<3>
        #include <iostream.h>

        int k = 1 ;
        void main()
        {
                int i = 4 ;
int fun (int);

                fun( i ) ;
                cout << “(1) “ << i << ‘,’ << k << endl ;
        }
       
        fun( int m )
        {
                m += k;
                k += m;
                {
                char k = ’B’;
                cout << “(2)” << char(k-‘A’) << endl ;
}
cout << “(3)” << m << ‘,’ << k << endl ;
}

<4>
        # include <iostream.h>
# include <iomanip.h>
void subp ( )
{
static int x = 0 , y = 0 ;                                         /*问题(1)*/
int a, b;

a = x – y ;
b = x + y ;
cout << setw(5) << a << setw(5) << b << endl ;
cout << setw(5) << x << setw(5) << y << endl ;
}

int x , y ;
void main()
{
int a = 9,b = 3;

x = a – b ;
y = a + b ;
subp();
cout << setw(5) << a << setw(5) << b << endl ;
cout << setw(5) << x << setw(5) << y << endl ;
}
1)运行结果是:
2)如果问题(1)处语句改为static int x,y ; ,运行结果会发生改变么?为什么?

isdkz 发表于 2023-11-13 20:54:24

(1)运行结果:

输入:48,32

输出:

hcf=16

lcd=96

功能:

该程序首先定义了一个计算两个数的最大公约数的函数hcf和一个计算两个数的最小公倍数的函数lcd。然后在主函数中输入两个整数u和v,调用hcf函数计算它们的最大公约数并输出,再调用lcd函数计算它们的最小公倍数并输出。



(2)运行结果:

输出:

k=13

功能:

该程序定义了一个计算斐波那契数列的函数fib,然后在主函数中调用fib函数计算第7个斐波那契数并输出。



(3)运行结果:

输出:

(2)1

(3)4,5

(1) 4,5

功能:

该程序定义了一个全局变量k和一个函数fun,然后在主函数中调用fun函数,fun函数对传入的参数进行处理并输出结果。



(4)运行结果:

输出:

   6    12

   9   3

   9   3

   6    12

功能:

该程序定义了一个静态函数subp和全局变量x、y,然后在主函数中对x和y进行赋值,调用subp函数并输出结果,最后输出a、b、x、y的值。



2)如果问题(1)处语句改为static int x,y;,运行结果会发生改变么?为什么?

答:

如果将问题(1)处语句改为static int x,y;,运行结果不会发生改变。因为在函数subp中,x和y是静态变量,无论是否加上static关键字,它们的生命周期都会延长到程序的整个运行期间,所以在这个程序中并没有区别。

页: [1]
查看完整版本: 求答案