有10个整数,编程使前面各数顺序向后移n个位置,最后的n个数变成最前面的n个数

#include "stdafx.h"

void fun(int a[], int n)
{
int *p=a, t, i;
for (i=0; i<10; i++,p++)
{
if (i< n)
*p = a [10 + i - n];
else
*p = a[i- n];
}
for (p=a; p<10+a; p++)
printf("%d ", *p);
}
int main()
{
int a[10], i, n;
printf("请输入10个整数:");
for (i = 0; i<10; i++)
scanf_s("%d", &a[i]);
printf("\n向后移多少格:");
scanf_s("%d", &n);
printf("移后:");
fun(a, n);
return 0;
}
子函数哪里有问题呀??求大神

函数只做数组元素移动n位。输出仍在主函数做。
#include <stdio.h>
void fun(int a[10], int n){
int i,j,t;
for (i=0;i<n;i++){
t=a[9];
for (j=8;j>=0;j--)a[j+1]=a[j];
a[0]=t;
}
}

int main()
{
int a[10], i, n;
printf("input 10 int data\n");
for (i = 0; i<10; i++)
scanf_s("%d", &a[i]);
printf("\n input n\n");
scanf_s("%d", &n);
printf("shift:\n");
fun(a,n);
for (i = 0; i<10; i++) printf("%d ",a[i]);
return 0;

}
温馨提示:答案为网友推荐,仅供参考
相似回答