10.4 有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数,见图。写一函数:实现以上功能,在主函数中输入n个数和输出调整后的n个数。

有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数,见图。写一函数:实现以上功能,在主函数中输入n个数和输出调整后的n个数。

看了下上机指导上的答案,感觉自己写的这段代码有点low。

//一个数组一个指针
#include <stdio.h>
#define N 10
#define M 3
int b[N];
int * p=b;
int main(){
    void change(int a[N],int m);
    int a[N]={1,2,3,4,5,6,7,8,9,0};
    change(a,M);

    for(int j=0;j<N; j++){
        printf("%3d",*(p+j));
    }
    printf("\n");
 return 0;
}

void change(int a[N],int m){
    int i,j;
    for(i=0; i<m; i++){
        *(p+i)=a[N-m+i];
    }
    for(j=m;j<N;j++){
        *(p+j)=a[j-m];
    }
}

结果:

时间: 2024-12-21 14:29:56

10.4 有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数,见图。写一函数:实现以上功能,在主函数中输入n个数和输出调整后的n个数。的相关文章

有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数。编写一个函数实现上述功能,在主函数中输入n个整数,并输出调整后的n个数

第一种方法:指针法 #include<stdio.h> #include<stdlib.h> int  w(int *d,int e,int g) { int i,j,t; int *r; j=0; for(i=0;i<g;i++) { t=*(d+i); *(d+i)=*(d+e-g+j); *(d+e-g+j)=t; j++; } return *d; } int main() { int a[100]; int i,j,k,n,m; scanf("%d%d&q

输入5个整数,找出其中最大整数和最小整数所在的位置,并将二者对调,然后输出调整后的5个数。

#include<stdio.h> main() { int arr[5], max, min, i, j, k; printf("Please enter five integers:\n"); for(i=0; i<5; i++) scanf("%d", arr[i]); min = arr[0]; for(i = 0; i < 5; i++) if(arr[i] < min) { min = arr[i]; j = i; } ma

Problem C: 指针:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面m个数

#include<stdio.h> int move(int *x,int n,int m) { int t[255]; int i; //int *p;指针循环变量p for(i=0;i<n;i++) t[i]=x[i]; for(i=0;i<m;i++) x[i]=t[n-m+i]; for(i=m;i<n;i++) x[i]=t[i-m]; /*指针变量做循环变量也可以. for(i=0,p=x;p<x+m;p++) *p=t[n-m+i++]; for(i=0,

删除数组中某一项并输出删除后的数组

方法一: package delete;import java.util.Scanner;public class delete { public static void main(String[] args){ Scanner input = new Scanner(System.in); int[] num = new int[]{3,6,9,13}; System.out.print("请输入要删除的数:"); int number = input.nextInt(); bool

练习:输入一个字符,输出逆转后的字符

#include<stdio.h>#include<string.h>int main(void){ char a[256]; int len,n,i,tem; printf("请输入:\n"); gets(a); printf("%s\n",a); len = strlen(a); n=len/2; for(i=0;i<n;i++){  //把第i个字符, 和第len-1-i 个交换  tem = a[i];  a[i] = a[le

python输入一个字符串,输出翻转后的字符串(翻转字符串)

题目:输出一个字符串,输出翻转后的字符串.例如:输入字符串a123,输出321a. 方法一:使用列表的reverse方法 1 string=input('请输入一个字符串:') 2 lst=list(string) #使用列表,将列表转化为字符串 3 lst.reverse() 4 print(''.join(lst)) 运行结果: 请输入一个字符串:abc123 321cba 方法二:切片法 1 def reverse(): 2 s=input("请输入一个字符串:") 3 retu

剑指offer-调整数组内奇偶数顺序

题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 解题思路 时间换空间的: 思想可以参考插入排序.时间复杂度为o(n^2),空间复杂度为o(1) class Solution { public: void reOrderArray(vector<int> &array) { int i,j; int tmp; for(i=0;i<array.siz

有n个整数,使前面各数向后移m个位置,最后m个数变成最前面m个数

有n个整数,使前面各数向后移m个位置,最后m个数变成最前面m个数.写一函数实现以上功能,在主函数中输入n个整数,并输出调整后的n个数(要求使用指针). #include<iostream> //#include<vector> using namespace std; int n,m; int array[1000]; void input() { cout<<"请输入n的值:"<<endl; cin>>n; cout<

&lt;01&gt;主函数分析+创建一个新的Target+C语言程序执行流程

1.C语言的源程序的后缀:.c格式 2.C语言源程序: 1)由函数构成 2)在一个程序中,只有一个主函数(主函数由系统调用) 3)函数只有被调用的时候,才执行 4)如果没有主函数程序无法运行 5) C语言中语句结束一定要有分号 3.主函数的写法: int main(){ printf("hello world"); return 0; } 4.C语言程序的执行 1)command+r 2)点击左上角的 三角 符号 //Program ended with exit code: 0  程