黑马程序员技术交流社区

标题: 新手求救 [打印本页]

作者: fjzxx123    时间: 2015-3-25 23:07
标题: 新手求救
有1个整型数组,请自己设计算法将这个数组中的元素进行翻转(
比如: 有数组 int arr[5] = {10,11,3,45,6};
将元素的值设置为翻转        {6,45,3,11,10}

实在写不出来啊,求大神解救


作者: RaymingChan    时间: 2015-3-25 23:07
其实只要找到数组的中间坐标,然后再进行数组一头,一尾相互交换就可以。
代码如下,请看:
#include <stdio.h>
int main(void) {
    int arr[5] = {10,11,3,45,6};
    int len = sizeof(arr)/sizeof(int); //计算出数组长度
    int times = len/2;                 //计算出要翻转的次数
    int i = 0;
    int temp = 0;
    for(i = 0; i < times; i++)
    {
        temp = arr[i];
        arr[i] = arr[--len];
        arr[len] = temp;
    }
    for(i = 0; i < sizeof(arr)/sizeof(int); i++)
    {
        printf("%d ", arr[i]);
    }
    return 0;
}
作者: 铅笔头    时间: 2015-3-26 08:35

int main() {
    int arr[5] = {10,11,3,45,6};
   
    for (int i = 0; i <5/2 ; i++) {
       int temp =arr[4-i];
        arr[4-i] =arr[i];
        arr[i] = temp ;
    }
    for (int j = 0; j <5; j++) {
        printf("%d\t",arr[j]);
    }
    return 0;
}
值的交换
作者: 狂甩你十八条街    时间: 2015-3-26 11:42
#include<stdio.h>
int main(){

//定义个整形变量用来存放数组元素的个数
    int number;
    //提示输入,并保存数组元素的个数
    printf("你的数组有多少个元素: ");
    scanf("%d", &number);
   
    //定义一个数组,数组大小就是刚才输入的数字
    int array[number];
    //读取每个数组元素
    for(int i=0; i<number; i++)
        scanf("%d", &array[i]);
    //第一个和最后元素交换,这里采用直接交换(就是不借助中间变量)
    for(int i=0; i<number/2; i++)
    {
        array[i] = array[number-i-1] + array[i];
        array[number-i-1] = array[i] - array[number-i-1];
        array[i] = array[i] - array[number-i-1];
    }
    //输出调换顺序后的数组
    for(int i=0; i<number; i++)
        printf("%d  ", array[i]);
    return 0;
}
:lol
作者: 进击的华仔    时间: 2015-3-26 21:56
RaymingChan 发表于 2015-3-25 23:07
其实只要找到数组的中间坐标,然后再进行数组一头,一尾相互交换就可以。
代码如下,请看:
#include

能给说说这句么,不懂为什么这样 sizeof(arr)/sizeof(int); //计算出数组长度
作者: fjzxx123    时间: 2015-3-26 21:58
RaymingChan 发表于 2015-3-25 23:07
其实只要找到数组的中间坐标,然后再进行数组一头,一尾相互交换就可以。
代码如下,请看:
#include

不过你不是定义了长度的变量了吗?后面循环的时候怎么又写了个计算长度的
作者: RaymingChan    时间: 2015-3-26 22:54
fjzxx123 发表于 2015-3-26 21:58
不过你不是定义了长度的变量了吗?后面循环的时候怎么又写了个计算长度的 ...

你是说int len = 0;这个变量吗?因为for循环中有len--,所以len的值已经改变了。。
作者: RaymingChan    时间: 2015-3-26 22:58
进击的华仔 发表于 2015-3-26 21:56
能给说说这句么,不懂为什么这样 sizeof(arr)/sizeof(int); //计算出数组长度

sizeof(arr)是计算数组的总字节数的,而sizeof(int)则计算一个int所占的字节数,所以用总数除以单个字节数就可以知道数组中有几个元素了。
如果楼主定义为 char arr[]={1,2,3,4,5,6};的话  长度也可以为:sizeof(arr)/sizeof(char);
作者: 进击的华仔    时间: 2015-3-26 23:08
RaymingChan 发表于 2015-3-26 22:58
sizeof(arr)是计算数组的总字节数的,而sizeof(int)则计算一个int所占的字节数,所以用总数除以单个字节 ...

受教了,记到笔记里

作者: 向天笑    时间: 2015-3-27 14:36
java 编写
     import java.util.Scanner;
public class ReverseOrder {
        private static Scanner sc;

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
               
                //                创建数组并赋值
                int[] array=new int[5];
                for(int i=1;i<=array.length;i++){
                        System.out.print("请输入第"+i+"个元素并按Enter键进入下一步:");
                        sc = new Scanner(System.in);
                        array[i-1]=sc.nextInt();
                }
               
//                遍历
                 for(int i=0; i<array.length/2; i++)
                    {
                        array[i] = array[i]^array[array.length-i-1];
                        array[array.length-i-1] = array[i]^array[array.length-i-1];
                        array[i] = array[i]^array[array.length-i-1];
                    }
                System.out.println("遍历输出的结果为:");
                for(int i=0;i<array.length;i++){
                       
                        System.out.print(array[i]);
                        System.out.print("  ");
                }
               
        }

}

作者: hanqi    时间: 2016-3-7 15:17
巴啦啦,我是卖货财的小男饭呢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2