黑马程序员技术交流社区
标题: 新手求救 [打印本页]
作者: 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
能给说说这句么,不懂为什么这样 sizeof(arr)/sizeof(int); //计算出数组长度
作者: fjzxx123 时间: 2015-3-26 21:58
不过你不是定义了长度的变量了吗?后面循环的时候怎么又写了个计算长度的
作者: RaymingChan 时间: 2015-3-26 22:54
你是说int len = 0;这个变量吗?因为for循环中有len--,所以len的值已经改变了。。
作者: RaymingChan 时间: 2015-3-26 22:58
sizeof(arr)是计算数组的总字节数的,而sizeof(int)则计算一个int所占的字节数,所以用总数除以单个字节数就可以知道数组中有几个元素了。
如果楼主定义为 char arr[]={1,2,3,4,5,6};的话 长度也可以为:sizeof(arr)/sizeof(char);
作者: 进击的华仔 时间: 2015-3-26 23:08
受教了,记到笔记里
作者: 向天笑 时间: 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 |