C语言最大值最小值交换

作者&投稿:东何 (若有异议请与网页底部的电邮联系)
C语言 查找一个一维数组中最大值和最小值的位置,并交换最大值和最~

1、打开visual studio,创建一个控制台应用程序,在Main方法中,定义一个整型数组,用于演示数组的最大值、最小值,以及交换他们的位置。

2、在Main方法中,定义四个变量,用于暂存最大、最小值,以及他们的序号。

3、通过for循环,找出数组中,最大的值和序号、最小的值和序号,存入上面定义的四个变量中。

4、最终通过数组的下标给最大、最小值重新赋值,就将他们交换位置了。在原来最小值的下标位置赋值找出来的最大值。原来最大值得下标位置赋值找出来的最小值。

5、在交换完成值之后,使用循环输出数组的值,从结果可以看出,这两个位置的值已经交换了位置。

#include
#define MAX 10
int main()
{
int max,min,i,n,a[MAX],tmp,x,y;
printf("输入数字N:");
scanf("%d",&n);
if(n<=MAX){
for(i=0;i<n;i++){
printf("输入第%d个数字:",i+1);
scanf("%d",&a[i]);
}
min=a[0];
max=a[0];
for(i=0;i<n;i++){
if(a[i]<=min){
min=a[i];
x=i;
}
if(max<=a[i]){
max=a[i];
y=i;
}
}
printf("最大数是 %d:
",max);
tmp=a[x];
a[x]=a[0];
a[0]=tmp;
tmp=a[y];
a[y]=a[n-1];
a[n-1]=tmp;
printf("交换后的结果是:
");
for(i=0;i<n;i++){
printf("%d ",a[i]);
}
}else{
printf("输入的数字太大,请输入小于%d的数字
",MAX);
}
return 0;

}

#include <stdio.h> 

int main(void) {
int arr[3][4];
int max,min; /*记录最大值与最小值*/
int mini=0,minj=0,maxi=0,maxj=0; /*记录最大值与最小值的坐标*/
int i,j,temp;

printf ("请输入矩阵内容(3行4列):
");
    for (i=0;i<3;i++)
     for (j=0;j<4;j++)
scanf ("%d",&arr[i][j]);

max=arr[0][0];
min=arr[0][0];
    for (i=0;i<3;i++) {
     for (j=0;j<4;j++)
     if(arr[i][j]>max) {
             maxi = i;
maxj = j;
    }
     if(arr[i][j]<min) {
             mini = i;
minj = j;
    }
}
    
printf ("原矩阵最小值为arr[%d][%d]=%d;最大值为arr[%d][%d]=%d。
",mini,minj,arr[mini][minj],maxi,maxj,arr[maxi][maxj]);
    temp = arr[mini][minj]; /*交换最小值与最大值*/
    arr[mini][minj] = arr[maxi][maxj];
    arr[maxi][maxj] = temp;
    printf ("最小值与最大值交换后矩阵:
");
    for (i=0;i<3;i++) {
     for (j=0;j<4;j++)
     printf ("%d",arr[i][j]);
    printf ("
");
    }

    return 0;
}

运行结果



/**
 * 问题描述
 * 有一个 3 × 4 的矩阵(即定义一个 3 行 4 列的数组),
 * 从键盘输入其值。然后交换该矩阵(数组)中最大元素和最小元素,最后输出该数组。
 * 输入: 共3行,每一行4个整数(用一个空格分隔)
 * 输出: 共3行,每一行4个整数(用一个空格分隔)
 */
#include <stdio.h>

#define ROW     3    //行
#define COLUMNN 4    //列

int main(int argc, const char *argv[])
{
int src[ROW][COLUMNN] = {0};
int i = 0, j = 0;
int max_value = 0, max_row = 0, max_col = 0;
int min_value = 0, min_row = 0, min_col = 0;

printf("请依次输入矩阵的值: 
");

for(i=0; i<ROW; i++)
{
scanf("%d %d %d %d",&(src[i][0]), &(src[i][1]), &(src[i][2]), &(src[i][3]));
}
printf("
");

/* 对矩阵中的最大最小元素进行交换 */
max_value = src[0][0];
min_value = src[0][0];
for(i=0; i<ROW; i++)
{
for (j=0; j<COLUMNN; j++)
{
if (src[i][j] > max_value)
{
max_value = src[i][j];
max_row = i;
max_col = j;
}
if (src[i][j] < min_value)
{
min_value = src[i][j];
min_row = i;
min_col = j;
}
}
}
src[max_row][max_col] = min_value;
src[min_row][min_col] = max_value;

printf("交换最大最小元素后输出如下: 
");
for(i=0; i<ROW; i++)
{
for (j=0; j<COLUMNN; j++)
{
printf("%3d ",src[i][j]);
}
printf("
");
}

return 0;
}



#include <stdio.h>
int main()
{
int array[3][4],max,min,i,j,flag=1,a,b,c,d,temp;
printf("请输入3行4列的数值:
");
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{
scanf("%d",&array[i][j]);   //数组的输入
if(flag)
{
max=min=array[i][j];     //初始化一次max和min的值
flag=0;
}
else {
if(max<array[i][j])
{
max=array[i][j];
a=i;
b=j;             //找最大值并且记录最大值所在位置
}
if(min>array[i][j])
{
min=array[i][j];
c=i;
d=j;              //找最小值并且记录最大值所在位置
}
}
}
printf("交换后的数组:
"); 
temp=array[a][b];
array[a][b]=array[c][d];
array[c][d]=temp;                  //交换最大值和最小值的位置
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
printf("%d ",array[i][j]); 
printf("
"); 
}
return 0;
}




C语言程序:

#include "stdio.h"

#define ROW 3
#define COL 4

void display(int a[][COL], int row, int col);

void main()
{
int a[ROW][COL];
int i, j;
int maxI, maxJ, minI, minJ;
int temp;

printf("输入%d行%d列的二维数组:
", ROW, COL);
for(i=0; i<ROW; i++)
for(j=0; j<COL; j++)
scanf("%d", &a[i][j]);

printf("交换前:
");
display(a, ROW, COL);

maxI = maxJ = minI = minJ = 0;

for(i=0; i<ROW; i++)
for(j=0; j<COL; j++)
{
if(a[i][j] > a[maxI][maxJ])
{
maxI = i;
maxJ = j;
}
if(a[i][j] < a[minI][minJ])
{
minI = i;
minJ = j;
}
}

temp = a[maxI][maxJ];
a[maxI][maxJ] = a[minI][minJ];
a[minI][minJ] = temp;


printf("交换后:
");
display(a, ROW, COL);
}

void display(int a[][COL], int row, int col)
{
int i, j;

for(i=0; i<row; i++)
{
for(j=0; j<col; j++)
printf("%d ", a[i][j]);
printf("
");
}
}


运行测试:



#include<stdio.h>
int main()
{
int maxp=0,minp=0;
int data[12];
for (int i = 0; i < 12; i++)
{
scanf("%d", &data[i]);
if (data[i] < data[minp])
minp = i;
if (data[i]>data[maxp])
maxp = i;
}
swap(data[maxp], data[minp]);
printf("
The output is:
");
for (int i = 0; i < 12; i++)
printf("%d%c", data[i], " 
"[(i + 1) % 4==0]);
return 0;
}

为了简单起见,我把数组定义成一维的了。好吧,定义成二维的有点麻烦,是这样的:(恕我太懒了,实在不愿意把循环改成二维的)

#include<stdio.h>
int main()
{
int maxp=0,minp=0;
int data[3][4];
for (int i = 0; i < 12; i++)
{
scanf_s("%d", &data[i/4][i%4]);
if (data[i / 4][i % 4] < data[minp/4][minp%4])
minp = i;
if (data[i / 4][i % 4]>data[maxp/4][maxp%4])
maxp = i;
}
swap(data[maxp / 4][maxp % 4], data[minp / 4][minp % 4]);
printf("
The output is:
");
for (int i = 0; i < 12; i++)
printf("%d%c", data[i / 4][i % 4], " 
"[(i + 1) % 4 == 0]);
}

测试例子:




C语言最大值最小值交换
a, i, j, m, max, min, t, maxp, minp;int ch[40] = { 0 };printf("input n:");scanf("%d", &n);for (i = 0; i40)\/\/break;\/\/elsech[i] = m;}min = ch[0], minp = 0;for (a = 0; a max){max = ch[j];max...

在c语言中如何将数组的最大值与最小值互换位置,求大神解答!!!_百度...
找到最大和最小值的下标,交换,例如:include <stdio.h> main(){ int a[10]={10,2,3,4,5,6,7,8,9,10},n=10;int i1,i2,i;i1=0;for (i=0;i<n;i++)if (a[i]<a[i1]) i1=i;i2=0;for (i=0;i<n;i++)if (a[i]>a[i2]) i2=i;i=a[i1]; a[i1]=a...

c语言怎样求一个整数最大值和最小值?
1、首先建立一个工程和.c文件。2、然后输入头文件和主函数。3、定义变量类型并初始化。4、输入一个正整数n(1<n《10),再输入n个整数。5、将最小值与第一个数交换,最大值与最后一个数交换。6、剔除整数的个位数。7、最后得到输出的结果。8、编译,运行,得到最后的结果。

C语言 最大值、最小值及其交换
{ if(max<n1){ max=n1;temp++;} } printf(max,temp);即可得到最大数和最大数的位置 最大最小排序,使用冒泡排序法即可得到。

c语言输出最大最小值
C语言中求最大值和最小值,一般都是使用假设法,即先假设某个数是最大值和最小值,然后遍历比较即可。下面实例,求一个数组中的最大值和最小值,先假设a[0]是最大值,同时也是最小值,然后遍历数组进行比较,得出结果。include<stdio.h>int main() { int a[] = {1,2,3,4,5,6,7,8,...

...c语言编程 在整型数组a[10]中找出最大值和最小值,并将最大值与数组...
这个很简单 就是一个交换过程 和 找最大值 最小值过程 void main(){ int a[10];int i=0;for(i=0;i<10;i++)scanf("%d",&a[i]);\/\/输入10个 int max=a[0];int min=a[9];for(i=0;i<10;i++)\/\/找最大和最小 { if(a[i]>max)max=a[i];if(min<a[i])min=a[i];...

c语言如何求最大值和最小值?
a = 3, b = 4, c = 5,假定 a,b,c 为 int。真值为1,假值为0。计算步骤如下:1、计算 a + b,结果为 a + b = 7 2、计算 !( a + b) 结果为 0,也可以认为是false(假)。3、计算 c\/2,假定c为int时,结果为 2(取整),为float或者double时为2.5,但不影响最终结果...

C语言,输入n个整数的数组,将最小值与第一个书交换,最大值与最后一个数...
问题是你举的例子是最特殊的,数组4321,最大值4的位置max=0,最小值1的位置min=3。交换时,先是第一个元素a[0](4)跟最小的元素位置a[min](a[3]=1)进行交换,交换的结果是数组1324;接下来是a[3]跟a[max]交换,这时a[3]=4,而a[max]=a[0]=1,就是1与4交换,结果就成了1234。...

怎样使用C语言输入十个数计算最大值和最小值。
printf("最小值是:%d\\n", min);return 0;} ```上述程序首先包含了`stdio.h`和`limits.h`头文件,`stdio.h`是为了使用输入输出函数,`limits.h`是为了使用`INT_MAX`和`INT_MIN`这两个宏,它们分别代表C语言中可表示的最大和最小整数值。程序定义了一个十个元素的整数数组`numbers`来存储...

C语言 交换最小值和最大值 帮忙看看我哪错了?
找最小值和最大值都是单层循环,双层循环是错误的。你这个整个算法有问题。正确的如下图所示:

浦口区13350832886: C语言找出二维数组中的最大值与最小值并交换位置 -
东郭许海甘: 给你思路吧.1. 找出最大值,记录该下标值 2. 找出最小值,记录该下标值 3. 交换两下标值对应的数即可. 找最值的算法很你应该会吧.

浦口区13350832886: c语言构造一个n*n的矩阵,将最大值与第一个元素交换,最小值与最后一个元素交换 -
东郭许海甘: #define n 100; int * getArray(int num) {return (int*)malloc(num*num*sizeof(int)); }void work(int* p,int num) {int i = 0;int j = 0;int m;for(;i<num;i++)for(;j<num;j++){if(*(p+i*num+j)>*p){m = *p;*p = *(p+i*num+j);*(p+i*num+j) = m;}if(*(p+i*num...

浦口区13350832886: 使用C语言编写程序,输入10个整数,将其中最小的数与第一个数交换,最大的数与最后一个数交换. -
东郭许海甘: #include<stdio.h> void input(int a[10]) { int i; for(i=0;i<10;i++) { scanf("%d",&a<i>); } } void exchange(int a[10]) { int i,min,max,temp,big,small; min=max=a[0]; for(i=0;i<10;i++) { if(max<a<i>) { max=a<i>; big=i; } if(min>a<i>) { min=a<i>; small=i; } } ...

浦口区13350832886: C语言编程:找出一个数列中的最大值和最小值,然后将最大值和最小值位置交换 -
东郭许海甘: int main() { int marks[10]={78,88,86,89,94,97,83,98,79,87}; int i, temp, posmax = 0, posmin = 0; int maxi = marks[0]; int mini = marks[0]; for (i = 1; i != 10; ++i) { if(mini > marks[i]) { mini = marks[i]; posmin = i; } if(maxi < marks[i]) { maxi = marks[i]; ...

浦口区13350832886: C语言.由键盘输入10个整数存入数组,输出最大值、最小值及它们的位置信息.并将最大、最小值位置互换后,再 -
东郭许海甘: /* 输入10个整数(空格隔开) : 45 67 71 23 19 87 62 33 91 24 67 71 23 19 87 62 33 91 24 最大值是 : 91,索引是 : 8 最小值是 : 19,索引是 : 4 最大值和最小值交换位置后 : 45 67 71 23 91 87 62 33 19 24 请按任意键继续. . . */ #include ...

浦口区13350832886: C语言 输入10个整数,用函数编程将其中最大数与最小数的位置互换然后输出
东郭许海甘: #include <stdio.h> int main() {int i,t,n,maxi=0,mini=0,a[10]; n=10; for(i=0;i<n;i++) {scanf("%d",&a[i]);if(a[i]>a[maxi])maxi=i; else if(a[i]<a[mini])mini=i; } printf("最大的数是%d,是第%d个数\n",a[maxi],maxi+1); printf("最小的数是%d,是第%...

浦口区13350832886: C语言编程,要用指针.输入十个数,将最小值与第一个互换,最大值与最后一个互换,输出十个数. -
东郭许海甘: 1234567891011121314151617181920212223242526 intnum[10] = { 2, 3, 4, 5, 6, 7, 8, 9, 0, 1 }; inttemp; int*begin = num; int*end = num + 9;for(int*pointer = begin; pointer <= end; pointer ++) { if(*pointer < *begin) { temp = *pointer; *pointer = *...

浦口区13350832886: 用c语言编写:从键盘输入10个数,找出最大以及最小的数字,并将两个数字交换 -
东郭许海甘: /*从键盘输入10个数,找出最大以及最小的数字,并将两个数字交换*/#include #include #include /*使用宏定义LENGTH长度为10*/#define LENGTH 10 main () { int elements[LENGTH]; int i, max=0, min=0,temp; printf("Please input %d numbers\n",...

浦口区13350832886: C语言编程:输入一维数组的10个元素,并将最小值与第一个数交换,最大值与最后一个数交换. -
东郭许海甘: 定义一个数组 遍历一遍 记录最大值下标 最小值下标 交换 输出 算法就是这样

浦口区13350832886: C语言输入N个数输出最大值和最小值 -
东郭许海甘: #include<stdio.h>void main(){ int i,j,temp,count; printf("请输入你需要输入的个数:"); scanf("%d",&count); while(count<=0||count>10000){ printf("个数必须在1到10000之间!\n\n"); printf("请输入你需要输入的个数:"); scanf(...

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