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

简答题

阅读以下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,关于函数adjustSalary的调用,我们按照给定的参数进行计算:

对于x1,service_year为1,所以执行第一个if条件块内的代码,因为age为25小于30,所以不对salary进行任何调整,所以x1的值仍为初始的salary值,即9000.0。
对于x2,service_year为8,满足else的条件,所以执行else块内的代码,salary乘以2.0,得到14000.0。
对于x3,service_year为5且age为41(大于30),所以执行第一个if条件块内的代码,salary乘以1.2,得到6000.0。
因此,x1、x2和x3的值分别为9000.0、14000.0和6000.0。

问题 3.2:
(1)输出结果为:“Cent”,接着输出:“Nickel”。总共两行输出。
(2)输出结果为:“Nickel”。只有一行输出。
(3)输出结果为:“Dime”,接着输出:“Quarter”。总共两行输出。
(4)输出结果为:“Quarter”。只有一行输出。

创作类型:
原创

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

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

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

分享考题
share