1.利用指针,将整型数组a中的n个整数循环移动一个位置,

1.利用指针,将整型数组a中的n个整数循环移动一个位置,即a[0]的内容放入a[1],a[1]的内容放入a[2],…,a[-1]的内容放入a[]:n和数组a的内容均由用户输入,n不超过10。

一个实现,供参考:

#include <stdio.h>

int main(void){
    
    
    int a[10]; //因为数组的长度不超过10,所以定义数组a为11个整数长度就可以了。 
    int i;
    int n;
    printf("请输入数组a的长度:");
    scanf("%d",&n);
    
    if(n>10){
        printf("数组a的长度不能超过10.\n");
        return 0;
    }
    
    //获取输入到数组a 
    for(i=0;i<n;i++){
        printf("请输入第%d个数组的元素:",i+1);
        scanf("%d",&a[i]);
    } 
    

    
    int *p=a;
    int j;
    int temp = *(p+i-1); //保存最后一个元素的值 
    //利用指针将数组a的元素往后移动一个位置 
    for(j=i;j>0;j--){  //从后往前逐个复制其值,达到数组元素往后移动一个位置的目的 
        *(p+j)=*(p+j-1);
    }
    *(p+j)=temp;//把最后一个元素移动到第一个元素 
    
    printf("\n经过移动后的数组a元素如下:\n");
    int k; 
    for(k=0;k<n;k++){
        printf("%d ",a[k]);
    
    }
    
    return 0;
} 

img


#include <iostream>
using namespace std;

int main()
{
    int t,n,i;

    cin >> n;
    int *a=new int[n];
    for(i=0;i<n;i++)
        cin >> *a++;
    --a;

    t=*a;
    for(i=0;i<n-1;i++,a--)
        *a=*(a-1);
    *a=t;
    
    for(i=0;i<n;i++)
        cout << *a++ << " ";
    cout << endl;

    return 0;
}