求助 明天要考的 c语言的哦题目 我 做了 不知到是不是对的
设有一数列,包含10个数,已按升序排好(程序中按升序读入数组)。要求编程;它能够把从指定位置开始的N个数按照逆序重新排列并输出新的完整数列。进行逆序处理是要求使用指针方法。下面是我做的 不知道对不对 请哪位高手 指点一下
#include<stdio.h>
void sort (int *p);
int main(void)
{int *p;
int a[10]={2,4,6,8,10,12,14,16,18,20};p=a;
int i,n;
printf("please enter n:");
scanf("%d",&n);
sort(*p+n-1);
for(p=a;p<a+n;p++)
printf("%d",*p);
getch();
}
void sort (lint *p)
{
int i,j,temp;
for(i=0;i<5;i++)
for(j=i+1;j<5;j++)
if(a[i]<a[j])
{
temp=*p++;
*p+i=*p+j;
*p+j=temp;
}
----------------解决方案--------------------------------------------------------
指针指向最后的位置 p--输出 ;何必那么 麻烦
要不就 麻烦下排序
for(p=a;p<a+N;p++)
{
for(p1=p;p1<a+N;p1++)
{ if(*p1>*(p1-1))
{
temp=*p1;
*p1=*(p1-1);
*(p1-1)=temp;
}
}
}
指针冒泡 虽然冒泡 不是很好的方法 但是很经典 能让你更了解数组
----------------解决方案--------------------------------------------------------
谢谢指点啊
----------------解决方案--------------------------------------------------------
题目是要求排序````
但是我比较懒````如果只检查输出结果来判断你程序对错``
那么我根本就不去排序```
既然原始数列有顺序```我就把N和它后面指定的数逆序输出``其他数原样输出``
这可方便多了吧``
----------------解决方案--------------------------------------------------------
谢谢 斑竹指点 啊
----------------解决方案--------------------------------------------------------