首页 > 其他分享 >【C语言】【二级】移动一维数组中的内容;若数组中有n个整数,要求把下标从0到p的数组元素平移到数组的最后

【C语言】【二级】移动一维数组中的内容;若数组中有n个整数,要求把下标从0到p的数组元素平移到数组的最后

时间:2023-12-01 14:11:56浏览次数:27  
标签:平移 下标 数组 int C语言 内容 一维

题目

请编写函数fun,函数的功能是:移动一维数组中的内容;若数组中有n个整数,要求把下标从0到p(含p, p小于等于n-1)的数组元素平移到数组的最后。
例如,一维数组中的原始内容为:1,2,3,4,5,6,7,8,9,10;p的值为3。移动后,一维数组中的内容应为:5,6,7,8,9,10,1,2,3,4。

考点

一维数组、循环

代码

#include <stdio.h>
#define    N    80
void  fun(int  *w, int  p, int  n)
{
	/*
	分析:
		* 0-p部分的内容是要移到后面去的
		* n 是所给列表的长度
	*/
	/*定义变量*/

	int i,j,temp;
	int pp = p;

	/*第一步:取出要移到后面去的内容*/
	for(i=0;i<=pp;i++){
		temp=w[0];/* 永远取出第一位数字*/
		/*第二步 所有数字往前移动一位*/
		for(j=1;j<n;j++){
			w[j-1] = w[j];
		}
		/*第三步 将最后一位设置为取出来的数*/
		w[n-1] = temp;
	}



}
main()
{  int  a[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
   int  i,p,n=15;void NONO ();
   printf("The original data:\n");
   for(i=0; i<n; i++)printf("%3d",a[i]);
   printf("\n\nEnter  p:  ");scanf("%d",&p);
   fun(a,p,n);
   printf("\nThe data after moving:\n");
   for(i=0; i<n; i++)printf("%3d",a[i]);
   printf("\n\n");
   NONO();
   getchar();
}
void NONO ()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
  FILE *rf,*wf ; int a[N], i, j, p, n ;
  rf = fopen("in.dat","r") ;
  wf = fopen("out.dat","w") ;
  for(i = 0 ; i < 5 ; i++) {
    fscanf(rf, "%d %d", &n, &p) ;
    for(j = 0 ; j < n ; j++) fscanf(rf, "%d", &a[j]) ;
    fun(a, p, n) ;
    for(j = 0 ; j < n ; j++) fprintf(wf, "%3d", a[j]) ; fprintf(wf, "\n") ;
  }
  fclose(rf) ; fclose(wf) ;
}


标签:平移,下标,数组,int,C语言,内容,一维
From: https://www.cnblogs.com/mllt/p/CYYERJI_er587er8erg78.html

相关文章

  • 通过Span实现高性能数组,实例解析
    Span<T>是C#7.2引入的一个强大的数据结构,用于表示内存中的一块连续数据。它可以用于实现高性能的数组操作,而无需额外的内存分配。在本文中,我将详细介绍如何使用Span<T>来实现高性能数组操作,并提供一些示例代码来说明其用法。什么是Span?Span<T>是System.Memory命名空间......
  • 【C语言】【二级】将所指字符串中所有下标为奇数位置上的字母转换成大写
    题目请编写一个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换成大写(若该位置上不是字母,则不转换)。例如,若输入"abc4EFG",则应输出"aBc4EFG"。考点考点:指针、ASCII码、数组和循环语句。解法:通过循环语句依次判断数组下标为奇数的元素是否为小写字母......
  • 指针数组和数组指针
    intmain(){int*p1[10];int(*p2)[10];return0;}首先要知道,[]优先级是要高于*号。int*p1[10],p1优先和数组结合,那么此时p1就是一个数组,里面存放的内容都是指针类型,所以p1是一个数组,里面存放的内容是指针的地址,叫指针数组。int(*p2)[10],在这里*号优先......
  • Java Learning Day3 数组
    System.out.print;  System.out.println;每输出一次就会换行Integer.parseInt字符串转intDouble.parseDouble字符串转double数组存储结构连续,存储元素类型相同,随机访问 JVMJVM栈:JVM栈正是java中方法执行时所占有的空间、局部变量会存于栈帧中堆:堆是JVM内存中最大......
  • 数组对比大小 vue3
    lett_data=sortByKey(pz_data.data,"yield_per_mu");//array:当前数组//key:数组中需要比较大小的值exportconstsortByKey=(array:any,key:any)=>{returnarray.sort(function(a:any,b:any){varx=b[key];vary=a[key];returnx&l......
  • [good]c语言中各种类型
    #include<stdio.h>#include<stdlib.h>#include<string.h>#include<stdarg.h>#include<assert.h>#include<math.h>#include<time.h>#include<limits.h>#include<float.h>#include<ctype.h>#i......
  • C语言小项目-通讯录
    对C语言的学习研究也有一段时间了,今天做一个小项目“通讯录”,来回顾之前所学。文件结构通讯录这个项目需要三个文件:1.test.c用于测试2.contact.c用于实现3.contact.h声明函数需求描述1.该通讯录要能存放1000个好友的信息2.信息要包含:姓名、电话、性别、住址、年龄3.增加好友信息......
  • 《初学C语言第11天》
    ////求定积分-----------已给函数接口//#include<stdio.h>//#include<stdlib.h>//#include<math.h>//doublesquare(doublex)//平方//{//  returnx*x;//x^2//}//doublecube(doublex)//立方//{//  returnx*x*x;//x^3//}///*你编写的积分函数嵌入在这里开始*//......
  • 【DFS深度优先遍历】给定一个数组,从第一个开始,正好走到数组最后,所使用的最少步骤数
    题目描述给定一个数组,从第一个开始,正好走到数组最后,所使用的最少步骤数。要求:第一步从第一元素开始,第一步小于<len/2(len为数组的长度)。从第二步开始,只能以所在成员的数字走相应的步数,不能多也不能少,如果目标不可达返回-1,输出最少的步骤数,不能往回走。输入759426835......
  • 枚举类的values()方法 枚举类有一个values()方法,这个方法可以将枚举类转换成一个枚举
    枚举类的values()方法枚举类有一个values()方法,这个方法可以将枚举类转换成一个枚举类型的数组,转换成数组之后我们就可以通过下标来访问我们的枚举类中的值枚举类中的元素是无法通过下标值来访问的,如果你想指定访问枚举类中的某个值,你只能直接写出它们的值,除此之外,别无他法。但......