c语言-C语言数组倒序排列问题

问题描述

C语言数组倒序排列问题

#include

int main(){
void inv(int x[],int n);
int i,a[10]={1,2,3,4,5,6,7,8,9,0};
for(i=0;i<10;i++)printf("%d
",a[i]);

  inv(a,10);
  printf("after change:
");
  for(i=0;i<10;i++)printf("%d
",a[i]);

  return 0;

}

void inv(int x[],int n){
int temp,i,j,m = n-1/2;
for(i=0;i<=m;i++){
j = n-1-i;
temp = x[i];
x[i] = x[j];
x[j] = temp;
}
return;
}

代码如图,想要把数组倒序排列,可是没有实现。还有想请问在INV的for循环里可不可以换成,for(i=0,j=n-1;i<=m;i++,j--)?如果不可以是为什么噢?

万分感谢!

解决方案

第一: 将 #include 改为 #include
第二:将 m = n-1/2 改为 m = (n-1)/2
只要将第一个和倒数第一个
第二个和倒数第二个
第三个和倒数第三个
。。。。
进行交换就行
当正数n和倒数的n相同时,就不能在继续交换了,否则就会得到没有交换的结果。
例如:有三个数据要交换
你只要交换第一个和倒数第一个就可以了,中间一个可以不交换
即可!!!!!!

解决方案二:

数组的倒序排列
数组倒序排列

解决方案三:

倒序输出哦,直接for(i=9;i>=0;i--)printf(“%d”,a[i])不行么

解决方案四:

你写的函数都定义成void了,你还return什么

解决方案五:

还有你下面个j--,都没有范围,你减到什么时候结束啊?

解决方案六:

直接用qsort得了。。。效率还高

解决方案七:

lz的问题出现在这样两个地方:
1、m = n-1/2;这句要改成(n-1)/2,不然m的值就比n小1
2、按照lz你的写法int a[10]; void inv(int x[],int n);要写在main之前

#include<iostream>
using namespace std;
int a[10];
void inv(int x[],int n);
int main(){
int i;
for(i=0;i<10;i++)
    a[i] = i;
//a[10]={1,2,3,4,5,6,7,8,9,0};
for(i=0;i<10;i++)printf("%d
",a[i]);
  inv(a,10);
  printf("after change:
");
  for(i=0;i<10;i++)printf("%d
",a[i]);

  return 0;
}
void inv(int x[],int n){
int temp,i,j,m = (n-1)/2;
for(i=0;i<=m;i++){
j = n-1-i;
temp = x[i];
x[i] = x[j];
x[j] = temp;
}
return;
}

还有lz你想改的地方是可以的,并不会有错,但不建议这么写
以上,望采纳

时间: 2024-12-02 05:33:53

c语言-C语言数组倒序排列问题的相关文章

JavaScript实现数字数组按照倒序排列的方法_javascript技巧

本文实例讲述了JavaScript实现数字数组按照倒序排列的方法.分享给大家供大家参考.具体如下: 下面的代码演示了JS数组如何通过sort对数字类型的数组进行倒序排序 <!DOCTYPE html> <html> <body> <p id="demo"> Click the button to sort the array. </p> <button onclick="myFunction()"&g

利用java实现单词倒序排列_java

本文就是会将数组里面的单词进行倒序排列 例如 how old are you -> you are old how 示例程序输出结果: the first: How old are you !? I don't understand the second: understand don't I ?! you are old How 示例代码     public static void main(String[] args) { char[] chars= new String("How

c语言 数组-请教如何用c语言去除一个数组中所有值为零的元素,而且这些零元素中有连续排列的?

问题描述 请教如何用c语言去除一个数组中所有值为零的元素,而且这些零元素中有连续排列的? 能否给一个示例程序?感激不尽! 比如以下这个数组中有连续的0元素,如何去除所有的零元素? double a[64]={4.63866e+020,1.456e+027,-7.67487e+017,9.86481e+016,0,0,-3.1101e+014,-9.38282e+010, 1.456e+027,4.60249e+033,-2.3969e+024,3.36857e+023,0,0,-9.64264e

帮忙看一下c语言这个关于数组的错误~

问题描述 帮忙看一下c语言这个关于数组的错误~ 输入 10 个整数用选择排序法将它们按照升序排列好 原理说明:把一个数组从小到大排列,不停的扫描整个数组,第一次扫描把最小的数找出来并放在第一位,第二次扫描,把其余的数中最小的数找到放在第二位,以此类推,这样经过N-1次扫描之后就可以把N个数的顺序排列好了 #define A 10#include <stdio.h>int main(){ int a[A]ijkt; for(i=0;i<A;i++) scanf(""%d

指针-c语言中字符数组初始化问题

问题描述 c语言中字符数组初始化问题 字符数组初始化1: char str[]=""123"";//不报错2: char str[4]; str=""123"";//不能将const char[4] to char[4]字符指针初始化1: char *str=""123"";//不报错2: char *str; str=""123"";//不报错求

Java语言入门教程(十一):Java语言中的数组

在教程(十)中,我们学习了Java类之间常见的两种关系,即关联和依赖. 如果A关联或依赖B,如果仅从A到B这个方向看,从数量上,可能有1对1和1对多 两种可能.面向对象的应用,都是映射现实世界的对象以及对象之间的关系的, 仔细考察一下我们身边的情况,对象与对象之间如果存在关联或依赖,其实1对 多的关系更为常见.如,一个部门有多个员工,一个学员有多个院系,一个人有 多张毕业证书- 上篇文章中的例子,学生只能选择一门免费课程学习,如果培训中心加大优 惠力度,每个学生最多可以选择3门课程学习,应该如何

C语言中全局数组和局部数组的问题

 今天同学遇到一个在C语言中全局数组和局部数组的问题,卡了许久,我也没有第一时间看出问题,现在把问题梳理一下,并给出解决方案. 问题描述: 在全局声明的数组与在局部声明的数组有着不同的效果. 首先来看一个程序: 代码如下: #include <stdio.h> #include <stdlib.h> #define MAX 10 char a[MAX]; int main() { int i; char b[MAX]; char *c=(char *)malloc(MAX * si

C语言中的数组和指针汇编代码分析实例

  这篇文章主要介绍了C语言中的数组和指针汇编代码分析实例,本文用一则C语言例子来得到对应的汇编代码,并一一注解每句汇编代码的含义,需要的朋友可以参考下 今天看<程序员面试宝典>时偶然看到讲数组和指针的存取效率,闲着无聊,就自己写了段小代码,简单分析一下C语言背后的汇编,可能很多人只注重C语言,但在实际应用当中,当出现问题时,有时候还是通过分析汇编代码能够解决问题.本文只是为初学者,大牛可以飘过~ C源代码如下: 代码如下: #include "stdafx.h" int

c语言-C语言二维数组下标越界--却能给越界的下标赋值 和输出

问题描述 C语言二维数组下标越界--却能给越界的下标赋值 和输出 编译器:dev-c++ int iArray[3][4]; iArray[3][4]=1000; printf("%d",iArray[3][4]); 改变 iArray[3][4]的值为1000 输出的结果仍然为1000 请问这个是什么原因呢? 我是直接给越界的下标进行了赋值 以前以为只要是下标越界了 输出的都是无意义的数字 其实那是因为没有给越界的下标赋值 对吗 越界的下标为什么还能正常使用呀 解决方案 使用越界的数