刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

阅读以下C代码,回答问题1至问题3,将解答填入答题纸的对应栏内。

【C代码1】

 

float adjustSalary(int service_year,int age,float salary) {

      if( service_year <=5 ) {

          if( age > 30 )

              salary *= 1.2;

      }

      else

              salary *= 2.0;

      return salary;

}

 

【C代码2】

 

void foo(int coin) {

     switch (coin) {

           case 1:   printf("Cent\n");

           case 5:   printf("Nicke1\n");break;

           case 10:  printf("Dime\n");

           case 25:  printf("Quarter\n");

     }

}

 

【C代码3】

 

int getSum(int n)

{

          int t, i = 0, sum = 0;

          while ( i < n ) {

                scanf("%d", &t);

                 if( t<0 )

                     continue;

                 sum += t;

                 i++;

          }

          return sum;

}

 

 

问题:3.1   【问题1】(3分)

对于【C代码1】,写出下面的函数调用后x1、x2和x3的值。

x1 = adjustSalary(1,25,9000.0);

x2 = adjustSalary(8,32,7000.0);

x3 = adjustSalary(5,41,5000.0);

 

问题:3.2   【问题2】(6分)

(1)写出函数调用为foo(1)的输出结果;

(2)写出函数调用为foo(5)的输出结果;

(3)写出函数调用为foo(10)的输出结果;

(4)写出函数调用为foo(25)的输出结果。

 

问题:3.3   【问题3】(6分)

(1)简要说明【C代码3】中的函数getSum()的功能;

(2)程序员小王将函数getSum改写后得到下面的函数getSum_v2(即用for语句来描述循环)。请问,getSum_v2的功能是否与【C代码3】的getSum完全相同,若不同,请说明原因。

int get Sum_v2(int n)

{

int t,i=0,sum=0;

for(i=0;1           scanf("%d",&t);

if(t<0)

continue;

sum+=t;

}

return sum;

}


使用微信搜索喵呜刷题,轻松应对考试!

答案:

【参考答案】

(1)x1=9000.000000

(2)x2=14000.000000

(3)x3=6000.000000

【参考答案】

(1)foo(1):Cent

            Nickel

(2)foo(5):Nickel

(3)foo(10):Dime

             Quarter

(4)foo(25):Quarter

【参考答案】

(1)函数getSum()是求n个不小于0的整数之和。

(2)函数getSum_v2的功能与函数getSum不同,getSum()是求n个不小于0的整数之和,计算和的数目总数是n个,而getSum_v2是总共输入了n个数,这n个数种有大于等于0,也有小于0的数,最终只把大于等于0的数进行求和,因此最终计算的和的个数有可能是小于n的。

解析:

对于问题 3.1,根据C代码1中的函数adjustSalary的逻辑,我们可以得出以下结果:

对于x1,service_year为1,age为25,由于service_year <= 5成立且age > 30不成立,所以不进行任何调整,因此x1的值仍为初始的salary值,即9000.0。
对于x2,service_year为8,age为32,由于service_year > 5成立,所以执行else部分的代码,将salary乘以2.0,得到的结果是14000.0。
对于x3,service_year为5,age为41,由于service_year <= 5成立且age > 30成立,所以将salary乘以1.2,得到的结果是6000.0。
因此,(1)x1的值是9000.0,(2)x2的值是14000.0,(3)x3的值是6000.0。

问题 3.2:
(1)输出结果为:Cent
(2)输出结果为:Nickel
(3)输出结果为:Dime和Quarter(连续输出)
(4)输出结果为:Quarter

创作类型:
原创

本文链接:阅读以下C代码,回答问题1至问题3,将解答填入答题纸的对应栏内。【C代码1】 float adjus

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share