阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。 【说明】 有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数。 【函数】 main() { int number[20],n

admin2010-01-15  61

问题 阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。
    【说明】
   有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数。
   【函数】
   main()
   {
     int number[20],n,m,i;
     printf("the total numbers is:");
     scanf("%d",&n);
     printf("back m:");
     scanf("%d",&m);
     for(i=0;i<=n-1;i)
         scanf("%d,",&number);
           (1);
     for(i=0;i<=n-1;i)
       printf("%d,",number);
   }
   move(array,n,m)
   int n,m,array[20];
   {
     int *p,array_end;
     array_end=(2);
     for(p=array[n-1];(3);p--)
       *p=(4);
     *array=array_end;
     m--;
     if(m>0) (5);
   }

选项

答案(1)move(number,n,m) (2)*(array[n-1]) (3)p>array (4)*(p-1) (5)move(array,n,m)

解析 本题考查数字顺序移动和数组的相关知识。
   从数据结构的角度出发,数字在数组中顺序移动,就是将数字一个一个往后搬,例如,将n-1位置的数字移到n位置,然后再把n-2位置的数字移到n-1位置,其实这是一个简单的数字移动。我们只需要取出第n个位置的数字并保存在一个临时变量中,然后,其他的就按顺序依次移动即可,直到一次整体移动完成,我们再从临时变量中取回数字并将其放在数组的第一个位置中。重复这个过程m次,整个数组就往后移动了m个位置。
   首先,我们来看一下主函数,在主函数里面声明了一个容量为20的整型数组 number[20]和其余3个整型变量,数组用来存储我们输入的待处理的数,而变量m、n分别用于存放我们要移动位置的个数和输入整数的个数。第一个循环语句用于n个整数的输入,第二个循环语句用于n个整数的输出,在这中间应该还有一个处理来完成将n个整数顺序向后移m个位置,并让最后m个数变成最前面的m个数这个功能,从下面的程序段我们知道,这里是调用函数muve(number,n,m)来完成的。因此,第(1)空填 move(nurnber,n,m),在调用时我们需要注意参数的传递。
   再来看move(array,n,m)函数,在此函数中,同样声明了一个容量为20的整型数组和 2个整型变量,另外还声明了一个指针变量p。由*array=array_end,结合第(2)空来看,这里是把数组中最后位置的数取出存放在array_end变量当中。因此,第(2)空应填 *(array[n-1])。
   第(3)空是常见的在循环语句中表示判断的语句,由于“p=array[n-1]”把数组最末的地址赋给了指针p,只要p的值大于数组的起始地址循环就可以继续,因此,第(3)空应填p>array。
   第(4)空要完成的任务是将数字后移,因此,第(4)空为*p-1。从程序来分析,数组每移动完成一次,m的值就减一,而现在只有移动m次的功能没有实现,因此,只要m值大于0,就调用函数自身来实现再次移动。因此,第(5)空填写move(array,n,m)进行递归调用。
转载请注明原文地址:https://jikaoti.com/ti/2kW7FFFM
0

最新回复(0)