c程序设计(求助)

来源:百度知道 编辑:UC知道 时间:2024/06/23 19:50:20
设有一数列,包括10个数。已按升序排好(程序中按升序读入数组)。要求编程:它能够把从指定位置开始的n个数按逆序重新排列并输出新的完整数列。进行逆序处理时要求使用指针方法。(例如:原数列为2,4,6,8,10,12,14,16,18,20,如果求把从第四个数开始的5个数按逆序重新排列,则新数列为2,4,6,16,14,13,10,8,18,20)。保存文件名为“学号_2.c”)

你自己不努力,让别人帮忙,连文件名都不改。真是过分!
我会把答案发给你的。

/*改程序在Visual C++ 6.0下调试通过,我没有测试TC2.0,但我是按照C语言的语法写的,你应当看的懂得*/
#include <stdio.h>

void Sort(int* s,int k,int m);
int main()
{
int s[10]={2,4,6,8,10,12,14,16,18,20};
int start=0,number=0;
for(int i=0;i<10;i++) //输出交换前的
printf("%d\t",*(s+i));
printf("\n");
printf("输入您要交换的开始位置和您要交换的个数:");
scanf("%d%d",&start,&number); //start坐标值,比如第四个数等于start=3;
Sort(s,start,number); //不用函数也可以的
for(i=0;i<10;i++)
printf("%d\t",*(s+i)); //输出交换后的
return 0;
}
//用以完成交换的函数
void Sort(int* s,int k,int m)
{
int i=0,temp;
while(i<m/2) //这里主要是交换数据,即将要交换的第一个数与最后一个数交换,m/2是要交换的次数
{
temp=*(s+k+i); //相信你看的懂得
*(s+k+i)=*(s+k+m-1-i);
*(s+k+m-1-i)=temp;
i++;

}
}