c语言:将数组中n个整数按相反顺序存放。

将数组中n个整数按相反顺序存放。

解:程序1:

#include<stdio.h>

int 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;

}

int main()

{

int i, a[10] = { 1,2,3,4,5,6,7,8,9,10 };

printf("The original array:\n");

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

{

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

}

printf("\n");

inv(a, 10);

printf("The array has been inverted:\n");//inverted:反向的

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

{

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

}

printf("\n");

return 0;

}

程序2:用指针变量作实参

#include<stdio.h>

int inv(int *x, int n)

{

int *p, temp, *i, *j, m = (n - 1) / 2;

//形参数组名x接收了实参数组首元素a[0]的地址

i = x; j = x + n - 1; p = x + m;

for (; i <= p; i++, j--)

{

temp = *i;

*i = *j;

*j = temp;

}

return;

}

int main()

{

int i, a[10] = { 1,2,3,4,5,6,7,8,9,10 };

printf("The original array:\n");

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

{

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

}

printf("\n");

inv(a, 10);

printf("The array has been inverted:\n");//inverted:反向的

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

{

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

}

printf("\n");

return 0;

}

结果:

he original array:

1 2 3 4 5 6 7 8 9 10

The array has been inverted:

10 9 8 7 6 5 4 3 2 1

请按任意键继续. . .

时间: 2024-10-19 05:31:30

c语言:将数组中n个整数按相反顺序存放。的相关文章

C语言去除数组中重复的字符简单例子

#include <stdio.h> int main(void){ int a[10]={1,2,3,3,4,5,1,3,5,6}; int i,j; int zieo=0; for(i=0;i<10;i++) for(j=i+1;j<10;j++) { if(a[i]==a[j]) { a[j]=0; } } for(i=0;i<10;i++) { if(a[i]!=zieo) { printf("%d\t",a[i]); } } printf(&qu

C语言之数组中你所不在意的重要知识

#include<stdio.h> void simpleArray(); void main() { simpleArray(); } //数组的简单操作 void simpleArray() { //数组的声明并赋值 int c[5] = { 1, 2, 3, 4, 5 }; printf("\nC数组内存中占%d个字节",sizeof(c));// /0在内存中会占一个字节,但是只针对于字符串 printf("\nC数组中有%d个元素",sizeo

在一个每一行从左到右递增每一列从上到下递增的二维数组中查找一个整数是否存在——3

给定一个二维数组,数组的特点是:每一行从左到右数据大小依次递增,每一列数据从上到下依次递增,要求判断一个整数是否在这个二维数组中: 设计二维数组如下: 首先,毋庸置疑的的是,遍历一遍数组肯定能判断出来,这也是最笨的方法了,因此,要想提高程序的运行效率就得找出一种高效的方法来查找: 一开始的想法大概都能想到从数组第一行第一列的数开始沿着对角线判断,如果是对角线数据就可以直接返回,比如我们要想查找17这个数,这时候17比0.9.16都要大,因此以0.9.16为对角线的矩形数据就可以排除了,接下来判断

java语言插入数组中一个数,仍然能够实现排序

package com.llh.demo; import java.util.Scanner; /** * * @author llh * */ public class Demo16 { /* * 插入数组中一个数,仍能排序 */ public static void main(String[] args) { int []arr={100,70,50,30,10,0}; int []bb=new int[arr.length+1]; System.out.print("请输入你要插入的数字:

寻找数组中缺少的整数(Find the missing integer)

数组a中含有N个元素,其元素属于[0,N]之间,且不存在重复的元素,请你找出数组中缺失的元素(因为[0,N]之间有N+1个元素,而数组只能存储N个元素,所以必然缺少一个元素).其中对数组的操作满足下列的条件:不能在常数时间内读取数组中的元素,但是可以读取数组中元素的某一个bit值,能够在常数时间内交换数组的两个元素的位置.请设计一种算法使其能够在线性时间内找出数组中缺失的元素.(N=2^k) An array a[] contains all of the integers from 0 to

C语言编译数组中有的加code有的不加,有什么区别

像uchar code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};和uchar ds1302[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};都能运行,两者有什么区别 C在定义数组时是占用内存空间的,而code是编码的意思,在定义编码时是直接分配到程序空间的,编译后编码占用的事程序存储空间而非内存空间. 在有些时候,定义的数组中包含的元素比较多的时候,数组的所占的存储空间就会大一些,而不希望其影响内

C语言--查询数组中出现次数最多的元素

查询数组中出现次数最多的元素 #include <stdio.h> #include <malloc.h> #include <stdlib.h> int max_count_num(int * arr, int len); int main() { int arr[5] = {1, 1, 1, 3, 1 }; max_count_num(arr, 5); return 0; } int max_count_num(int * arr, int len) { int i

C语言:一个数组中只有两个数字是出现一次

1 //1.一个数组中只有两个数字是出现一次, 2 //其他所有数字都出现了两次. 3 //找出这两个数字,编程实现.a 4 5 //^=单独两个数的^结果 6 //单独出现的两个数不同位的标记 7 //position: ^结果中第一个出现1的位置 8 //position位两个数肯定有一个为0 ,一个为1 9 //把数组分成两部分 10 //1:position为1 11 //2:position为0 12 //每一部分都有一个只出现一次的数字,其他的都是成对出现 13 //每一部分^结果为

C语言 &#183; 寻找数组中的最大值

问题描述 对于给定整数数组a[],寻找其中最大值,并返回下标. 输入格式 整数数组a[],数组元素个数小于1等于100.输出数据分作两行:第一行只有一个数,表示数组元素个数:第二行为数组的各个元素. 输出格式 输出最大值,及其下标 样例输入 3 3 2 1 样例输出 3 0 代码如下: /*对于给定整数数组a[],寻找其中最大值,并返回下标*/ #include<stdio.h>int maxfun(int a,int b);int main(){ int i,j,N; int sum = 0