hhh.Danko 2021-05-18 16:50 采纳率: 100%
浏览 303
已采纳

c语言循环移动数组元素

【问题描述】

定义一个长度为10的一维整型数组,并编写三个函数分别实现如下功能:

(1)函数input:对数组的各元素实现从键盘输入赋值。

(2)函数output:将数组的所有元素向屏幕打印输出。

(3)函数moveToRight:向右循环移动数组元素

(4)函数moveToLeft:向左循环移动数组元素

(5)函数move:将数组元素向左或向右循环移动m个位置。移动规则为:

● 若m>0,调用moveToRight函数,执行向右循环移动;

● 若m=0,不做任何移动;

● 若m<0,调用moveToLeft函数,执行向左循环移动。

目前已编写完成main函数和move函数,请编程实现input函数、output函数、moveToRight函数和moveToLeft函数。

/*

@Filename: ex605.c

@Author: 

@Version: 1.0

@Date: 2021-03-18

@Description: Loopy Moving of Array Element

*/

#include <stdio.h>

#include <stdlib.h>

#define LENGTH 10

/*主函数*/

int main(void){

/*声明函数*/

void input(int *p, int n);

void output(int *p, int n);

void move(int *p, int length, int m);

 

/*定义数据结构*/

int a[LENGTH], m;//m表示数组元素循环移动的位置个数

int *p = a;

 

/*调用input函数,通过键盘输入为数组a赋值*/

input(p, LENGTH);

 

/*从键盘输入为循环移动位置个数m赋值*/

scanf("%d", &m);

/*调用move函数,完成数组元素的循环移动*/

move(p, LENGTH, m);

 

/*调用output函数,输出移动后的数组元素*/

output(p, LENGTH);

return 0;

}

/*

 * 函数名称:input

 * 函数功能:通过键盘输入为一维数组元素赋值

 * 输入格式:各输入数据之间以空格分隔

 * 形式参数:p,int型指针变量,一维整型数组首地址

 * 形式参数:n,int型,一维数组长度

 * 返回值:无

 */

void input(int *p, int n){

// 请编程实现本函数

 

}

/*

 * 函数名称:output

 * 函数功能:向屏幕打印输出一维数组元素值

 * 输出格式:各输出数据之间以空格分隔

 * 形式参数:p,int型指针变量,一维整型数组首地址

 * 形式参数:n,int型,一维数组长度

 * 返回值:无

 */

void output(int *p, int n){

// 请编程实现本函数

 

}

 

/*

 * 函数名称:moveToRight

 * 函数功能:使一维数组各元素向右循环移动m个位置

 * 形式参数:p,int型指针变量,一维整型数组首地址

 * 形式参数:length,int型,一维数组长度

 * 形式参数:m,int型,循环移动的位置数

 * 返 回 值:无

 */

void moveToRight(int *p, int length, int m){

// 请编程实现本函数

 

}

 

/*

 * 函数名称:moveToLeft

 * 函数功能:使一维数组各元素向左循环移动m个位置

 * 形式参数:p,int型指针变量,一维整型数组首地址

 * 形式参数:length,int型,一维数组长度

 * 形式参数:m,int型,循环移动的位置数

 * 返 回 值:无

 */

void moveToLeft(int *p, int length, int m){

// 请编程实现本函数

 

}

 

/*

 * 函数名称:move

 * 函数功能:使一维数组元素循环向左或向右移动m个位置

 * 形式参数:p,int型指针变量,一维整型数组首地址

 * 形式参数:length,int型,一维数组长度

 * 形式参数:m,int型,表示循环移动的方向和移动的位置个数

 *          当m>0时,执行向右循环移动(水平方向从左向右循环移动)

 *          当m=0时,不做任何移动

 *          当m<0时,执行向左循环移动(水平方向从右向左循环移动)

 * 返 回 值:无

 */

void move(int *p, int length, int m){

if(m > 0){

/*向右循环移动*/

moveToRight(p, length, m);

 

}else if(m == 0){

/*不移动*/

; //空语句,什么都不做

 

}else{

/*向左循环移动*/

moveToLeft(p, length, m);

 

}

}

注:不得使用全局变量。

【输入形式】

有两行输入,第1行输入为数组元素赋值,第2行输入为m赋值

【输出形式】

有一行输出,输出循环移动后的数组各元素值

【样例输入】

1 2 3 4 5 6 7 8 9 10

3

【样例输出】

8 9 10 1 2 3 4 5 6 7

【样例输入】

1 2 3 4 5 6 7 8 9 10

-3

【样例输出】

4 5 6 7 8 9 10 1 2 3

【样例说明】

【评分标准】

正确性

/*
@Filename:  ex605.c
@Author:  
@Version:  1.0
@Date:  2021-03-18
@Description:  Loopy  Moving  of  Array  Element
*/
#include  <stdio.h>
#include  <stdlib.h>
#define  LENGTH  10
/*主函数*/
int  main(void){
        /*声明函数*/
        void  input(int  *p,  int  n);
        void  output(int  *p,  int  n);
        void  move(int  *p,  int  length,  int  m);
        
        /*定义数据结构*/
        int  a[LENGTH],  m;//m表示数组元素循环移动的位置个数  
        int  *p  =  a;
        
        /*调用input函数,通过键盘输入为数组a赋值*/
        input(p,  LENGTH);
        
        /*从键盘输入为循环移动位置个数m赋值*/
        scanf("%d",  &m);
        /*调用move函数,完成数组元素的循环移动*/
        move(p,  LENGTH,  m);
        
        /*调用output函数,输出移动后的数组元素*/
        output(p,  LENGTH);
        return  0;
}
/*
  *  函数名称:input
  *  函数功能:通过键盘输入为一维数组元素赋值
  *  输入格式:各输入数据之间以空格分隔  
  *  形式参数:p,int型指针变量,一维整型数组首地址
  *  形式参数:n,int型,一维数组长度  
  *  返回值:无  
  */
void  input(int  *p,  int  n){
        //  请编程实现本函数
        
}
/*
  *  函数名称:output
  *  函数功能:向屏幕打印输出一维数组元素值
  *  输出格式:各输出数据之间以空格分隔  
  *  形式参数:p,int型指针变量,一维整型数组首地址
  *  形式参数:n,int型,一维数组长度
  *  返回值:无  
  */
void  output(int  *p,  int  n){
        //  请编程实现本函数
        
}

/*
  *  函数名称:moveToRight
  *  函数功能:使一维数组各元素向右循环移动m个位置
  *  形式参数:p,int型指针变量,一维整型数组首地址
  *  形式参数:length,int型,一维数组长度
  *  形式参数:m,int型,循环移动的位置数
  *  返  回  值:无  
  */
void  moveToRight(int  *p,  int  length,  int  m){
        //  请编程实现本函数
        
}

/*
  *  函数名称:moveToLeft
  *  函数功能:使一维数组各元素向左循环移动m个位置
  *  形式参数:p,int型指针变量,一维整型数组首地址
  *  形式参数:length,int型,一维数组长度
  *  形式参数:m,int型,循环移动的位置数
  *  返  回  值:无  
  */
void  moveToLeft(int  *p,  int  length,  int  m){
        //  请编程实现本函数
        

}

/*
  *  函数名称:move
  *  函数功能:使一维数组元素循环向左或向右移动m个位置
  *  形式参数:p,int型指针变量,一维整型数组首地址
  *  形式参数:length,int型,一维数组长度
  *  形式参数:m,int型,表示循环移动的方向和移动的位置个数
  *                    当m>0时,执行向右循环移动(水平方向从左向右循环移动)  
  *                    当m=0时,不做任何移动  
  *                    当m<0时,执行向左循环移动(水平方向从右向左循环移动)
  *  返  回  值:无  
  */
void  move(int  *p,  int  length,  int  m){
        if(m  >  0){
                /*向右循环移动*/
                moveToRight(p,  length,  m);
                
        }else  if(m  ==  0){
                /*不移动*/
                ;  //空语句,什么都不做  
                
        }else{
                /*向左循环移动*/
                moveToLeft(p,  length,  m);
                
        }
}

  • 写回答

3条回答 默认 最新

      报告相同问题?

      相关推荐 更多相似问题

      悬赏问题

      • ¥15 hdfs在idea上传文件运行错误
      • ¥15 关于selenium网页闪退
      • ¥15 怎么用PYTHON解类似于x = y+zx + cy = x+zy + v的方程
      • ¥300 FLASH AS2.0制作一个类似手机上下滑动一样的效果
      • ¥15 为什么使用openFoam 中的icoFoam计算圆柱扰流时出现浮点数例外(核心已转储)
      • ¥15 51单片机外部中断控制数码管
      • ¥15 创建网页里面的图片显示不出来
      • ¥15 语音控制的编写?(语言-c#)
      • ¥15 matlab输入书上的代码运行错误
      • ¥15 matlab怎么做三维曲面