C语言编写程序,将一个一维数组的值按逆序重新存放。

用C语言编写一个程序,将一个一维数组的值逆序存放,主要问题是这个数组的个数是不确定的,就是说你可以输入5个数字来组成这个一维数组,也可以输入10个数字来组成这个一维数组,,由人为随机决定这个数组的长度,,,
这个是数组后面的习题,,而指针这章在数组后面,,也就是说不用指针,当然如果各位用指针作出来了,也没关系,我想我自己应该也能慢慢的看懂的,,,

#include<stdio.h>

int  main()

{

    int a[5]={8,6,5,4,1},i,n=5,temp;

    for(i=0;i<n/2;i++)

    {

        temp=a[i];

        a[i]=a[n-i-1];

        a[n-i-1]=temp;          

    }                 

   for(i=0;i<n;i++)

   {

      printf("%d\t",a[i]);        

   }               

    system("pause");

    return 0;

}

扩展资料:   

选择排序

主要思想就是,基本上默认数组中第一个元素为最大(最小)值,之后将这个元素和后面的每个元素都进行比较,以由大到小排序为例,当第一个值遇到比其大的,就进行交换。这样第一轮过后,第一位就是最大的。

接着进行第二轮,由第二个数开始逐个比较,遇到比第二个数大的进行交换,这样第二轮之后第二个数就是第二大的了,以此类推,不断进行选择,最后完成排序。

void selectSort(int numbers[], int length) {

  for (int i = 0; i < length; i++) {

    for (int j = i + 1; j < length; j++) {

      if (numbers[i] < numbers[j]) {

        int temp = numbers[i];

        numbers[i] = numbers[j];

        numbers[j] = temp;

      }

    }

  }

}

 int main(int argc, const char * argv[]) {

  int myArray[] = {42, 7, 1, -3, 88};

  int length = sizeof(myArray) / sizeof(myArray[0]);

  selectSort(myArray, length);

  for (int i = 0; i < length; i++) {

    printf("%i ", myArray[i]);

  }

  return 0;

}

当第一个数来比较的时候,i = 0,那么j应该等于i + 1,因为第一个数要和第二个数开始比,并且比较length - 1次;当i = 1时,j = 2,并且比较length - 2次,以此类推;上面写的是由大到小排序。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-03-07

方法:采用for循环,交换len/2次既可。不采用冒泡的原因是因为此数组中的数据无序。

代码如下:

#include<stdio.h>

int main()

{

char arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };

int i = 0;

int len = sizeof(arr) / sizeof(arr[0]);

int tmp = 0;  

for (i = 0; i < (len/2); ++i)    //进行len/2次交换

{

tmp = arr[9 - i];    

arr[9 - i] = arr[i];

arr[i] = tmp;

}

for (i = 0; i < len; ++i)

{

printf(" %d ", arr[i]);     //输出

}

return 0;

}

扩展资料

for 循环语句首先要强调两点:

1、表达式1、表达式2和表达式3之间是用分号;隔开的,千万不要写成逗号。

2、for(表达式1;表达式2;表达式3)的后面千万不要加分号,很多新手都会犯这种错误——会情不自禁地在后面加分号。

下面来看看for 循环语句的执行过程:

1、求解表达式1。

2、求解表达式2。若其值为真,则执行 for 语句中指定的内嵌语句,然后执行第3步;若表达式2值为假,则结束循环,转到第5步。

3、求解表达式3。

4、转回上面第2步继续执行。

5、循环结束,执行 for 语句下面的语句。


本回答被网友采纳
第2个回答  推荐于2017-12-15
#include"stdio.h"
main()
{
int a[10],i,temp;/*定义数组的长度为10,你也可以换成其他的,当然,这个换了下面的也要换*/
for(i=0;i<10;i++)
scanf(%d),&a[i];
putchar('\n');
for(i=0;i<10/2;i++)
{temp=a[i];
a[i]=a[10-i-1];/*第一个和最后一个交换,第二个和倒数第二个交换,......一直到10/2的时候,也就是数组的一半的时候*/
a[10-i-1]=temp;
}
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
}

祝你好运!!!觉得好的话分数给我!!!本回答被网友采纳
第3个回答  2009-06-09
只要把输入的数逆序就可以了么?不用按大小排列吧?

、、、、、、、、、、、、、、、、、、、、、、、、、、
上机的时候写过。下午下课回来写给你。如果你没关闭问题的话

C语言在C99标准里,支持了动态数组了咯
=====================
第4个回答  2009-06-09
长度可以根据输入的时候记录下来
有了长度即可简单排序了(推荐冒泡)
咯咯

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网