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;
}
#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;
}