关于数列位移的C语言程序设计问题

来源:百度知道 编辑:UC知道 时间:2024/07/03 05:15:55
请问各位高手,我想实现在输入一列数后,这列数向左一格一格的移动,并将最后一位数补到第一位,直到转完一圈,并且每次移动后都将结果输出。比如:
输入:1,2,3。
输出:3,1,2.
2,3,1.
1,2,3。
请尽量不要用到指针,谢谢。

不用指针很麻烦的 这是不用指针的
不好意思 刚才没测试出了死循环了 已修改
#include"stdio.h"
void main()
{
int a[9];/*储存输入的数*/
int n;/*输入数的个数*/
int i,j;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=n-1;i>=0;i--)
{
j=i;
do{
printf("%d,",a[j]);
j++;
if(j>=n)
j=j%n;
}while(j!=i);
printf("\n");
}
}

用数组

// 楼主看看我的程序吧,有时,不按套路出牌也是一种优雅.即高效又不易出错.两个函数很灵活,还可以用在别的程序里.
#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>
#include <memory.h>

void OutputOnly(int* pNumArray, int nCount, int nStart)
{
int nIndex = 0;
for (nIndex = nStart; nIndex < nCount; nIndex++)
{
printf("%d ", pNumArray[nIndex]);
}

for (nIndex = 0; nIndex < nStart; nIndex++)
{
printf("%d ", pNumArray[nIndex]);
}