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

简答题

阅读以下说明和C代码,填补代码中的空缺,将解答填入答题纸的对应栏内。
[说明]
下面的代码运行时,从键盘输入一个四位数(各位数字互不相同,可以有0),取出组成该四位数的每一位数,重组成由这四个数字构成的最大四位数max4和最小四位数min4(有0时为三位数),计算max4与min4的差值,得到一个新的四位数。若该数不等于6174,则重复以上过程,直到得到6174为止。
例如,输入1234,则首先由4321-1234,得到3087;然后由8730-378,得到8352;最后由8532-2358,得到6174。

[C代码]

    #include<stdio.h>

    int difference(int
a[])

    (  int
t,i,j,max4,min4;

    for(i=0; i<3; i++){/*用简单选择排序法将a[0]~a[3]按照从大到小的顺序排列*/

    t=i;

    for(j=i+1; ______;
j++)

    if(a[j]>a[t]) ______;

    if(t!=i){

    int temp=a[t];
 a[t]=a[i];  a[i]=temp;

    }

    }

    max4=______;

    min4=______;

    return max4-min4;

    }

    int main()

    {    int
n,a[4];

    printf("input
a positive four-digit number:");

  
 scanf("%d",&n);

    while(n!=6174){

    a[0]= ______;
   /*取n的千位数字*/

    a[1]=n/100%10;
   /*取n的百位数字*/

    a[2]=n/10%10;
   /*取n的十位数字*/

    a[3]= ______;
   //取n的个位数字*/

    n=difference(a);

    }

    return 0;

    }

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

答案:

j<4或等价形式
t=j
a[0]*1000+a[1]*100+a[2]*10+a[3]  或等价形式
a[3]*1000+a[2]*100+a[1]*10+a[0]  或等价形式
n/1000  或等价形式
n%10

解析:

本题考查C程序设计中的数组操作、选择排序算法以及位运算。

首先,从主函数main开始,需要输入一个四位数,并通过数组a存储每一位数字。空5和空6分别用于获取这个四位数的千位和个位数字,通过除以10的幂次和模运算可以得到。例如,空5处填写的表达式“n/1000”可以获取千位数字。同理,空6处填写的表达式“n%10”可以获取个位数字。这两个表达式都是获取数组中每个元素(代表数字的每一位)的标准方法。

接下来是函数difference的实现。该函数的主要目的是对一个包含四个数字的数组进行排序,然后计算最大数和最小数的差值。空1和空2是关于选择排序的填充部分。在选择排序中,我们需要遍历整个数组以找到最大值的索引。因此,空1处应填写“j<4”或任何确保循环在数组长度内的等价条件。当找到更大的数字时,我们需要更新最大值的索引,所以空2处填写“t=j”。

最后,计算最大数和最小数的和,即max4和min4。由于数组已经排序,最大数在a[0],最小数在a[3](如果最小数前有零,则为a[2])。因此,空3和空4分别表示max4和min4的计算方式。将排序后的数组元素按照位数相乘并相加,即可得到最大数和最小数。例如,“a[0]*1000+a[1]*100+a[2]*10+a[3]”表示将排好序的数组元素组合成最大的四位数。同理,“a[3]*1000+a[2]*100+a[1]*10+a[0]”表示组合成最小的四位数(如果有前导零则为三位数)。

创作类型:
原创

本文链接:阅读以下说明和C代码,填补代码中的空缺,将解答填入答题纸的对应栏内。[说明]下面的代码运行时,从键盘

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

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

分享考题
share