阅读以下说明和 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;(1); j++ )
if (a[j] >a[t]) (2);
if ( t !=i ) {
int temp = a[t];a[t]= a[i];a[i]= temp;
}
}
max4=(3);
min4=(4);
return max4-min4;
}
int main ()
{ int n,a[4];
printf("input a positive four-digit number: ") ;
scanf("%d" ,&n);
while (n!=6174) {
a [0] =(5); /*取n的千位数字*/
a[1] = n/100%10; /*取n的百位数字*/
a[2] = n/10%10; /*取n的十位数字*/
a[3] =(6); /*取n的个位数字*/
n = difference(a);
}
return 0;
}
正确答案及解析
正确答案
解析
(1) j<4 或等价形式
(2) t=j
(3) a[0]*1000+a[1]*100+a[2]*10+a[3] 或等价形式
(4) a[3]* 1000+a[2]* 100+a[ 1]*10+a[0] 或等价形式
(5) n/1000 或等价形式
(6) n%10
本题考查 C 程序设计基本技能及应用。
题目要求在阅读理解代码说明的前提下完善代码。
由于C程序的执行是从main函数开始的,因此首先理解main函数的代码结构 。显然,调用函数difference时实参为数组a,并且从注释中可以确定空(5)的内容为"n/1000"或其等价形式,空(6)处填写"n%10" 或其等价形式。这样,数组元素a[0] ~a[3]就依次保存了 n 值从左至右的各位数字。
接下来分析函数 difference的代码结构。双重 for 循环是对数组 a 进行简单选择排序,目的是将数组中最大数字放入 a[0],最小的数字放入 a[3]。处理思路是通过比较找出最大数字并用 t 记下最大数字所在数组元素的下标,第一趟需在 a[0] ~a[3]中进行选择,通过比较记下最大数字的下标,最后将最大数字交换至 a[0] ,第二趟需在a[1] ~a[3]中进行选择,通过比较记下这三个数中最大者的下标,并最大者交换至 a[1],依次类推。因此,空(1)处应填入 "j<4" 或其等价形式,以限定选择范围,空 (2) 处应填入 "t=j",以记下选择范围内最大者的下标 。
根据题目的说明部分,显然空(3)处应填入 "a[0]*1000+a[1]*100+a[2]* 10+a[3]"、空 (4) 处应填入 "a[3]*1000+a[2]* 100+a[1]*10+a[0]",或其等价形式。
你可能感兴趣的试题
一台主机的IP地址为202.123.25.36,掩码为255.255.254.0。如果该主机需要在该网络进行直接广播,那么它应该使用的目的地址为( )
-
- A.202.123.25.0
- B.202.123.25.255
- C.202.123.24.0
- D.202.123.24.255
- 查看答案
在计算机系统的日常维护工作中,应当注意硬盘工作时不能__(2)__。另外,需要防范病毒,而__(3)__是不会被病毒感觉的。
-
- A.电子邮件
- B.硬盘
- C.U盘
- D.ROM
- 查看答案
有 4 个 IP 地址:201.117.15.254、201.117.17.01、201.117.24.5 和 201.117.29.3,如果子网掩码为 255.255.248.0,则这 4 个地址分别属于3个子网;其中属于同一个子网的是()
-
- A.201.117.15.254 和 201.117.17.01
- B.201.117.17.01 和 201.117.24.5
- C.201.117.15.254 和 201.117.29.3
- D.201.117.24.5 和 201.117.29.3
- 查看答案
在异步通信中,每个字符包含1位起始位、7位数据位、1位奇偶位和1位终止位,每秒钟传送200个字符,采用4相位调制,则码元速率为()。
-
- A.50波特
- B.500波特
- C.550波特
- D.1000波特
- 查看答案
在 Windows 中,运行( )命令得到下图所示结果。以下关于该结果的叙述中,错误的是( )。
Pinging 59.74.111.8 with 32 bytes of data:
Reply from 59.74.111.8: bytes=32 time=3ms TTL=60
Reply from 59.74.111.8: bytes=32 time=5ms TTL=60
Reply from 59.74.111.8: bytes=32 time=3ms TTL=60
Reply from 59.74.111.8: bytes=32 time=5ms TTL=60
Ping statistics for 59.74.111.8:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 3ms, Maximum = 5ms, Average = 4ms
-
- A.该命令使得本地主机向目标主机发送了 4 个数据包
- B.本地主机成功收到了目标主机返回的 4 个数据包
- C.本地主机与目标主机连接正常
- D.该命令用于查看目标主机的 IP 地址
- 查看答案