C语言从键盘任意输入10个整数,编程实现将其中最大数与最小数的位置对换后,再输出调整后的数组。

#include <stdio.h>
void main()
{
int a[10];
int i,j,max,min,temp,m,n;
printf("请输入十个整数\n");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}

for(i=0;i<10;i++)
{
printf("%d",a[i]);
}
max=a[0];min=a[0];

for(i=0;i<10;i++)
{
if(a[i]>max)
{
max=a[i];
m=i;
}
if(a[i]<min)
{
min=a[i];
n=i;
}
}
a[n]=max;
a[m]=min;
for(i=0;i<10;i++)
{
printf("%d",a[i]);
}

}

请问哪里出错了??每次调试都会出现已停止工作

#include<stdio.h>

#define MAXSIZE 10

void Fun(int a[])

{

int i;

int temp;

int MaxNum=a[0];

int maxIndex = 0;

int minIndex = 0;

int MinNum=a[0];

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

{

if(a[i]>MaxNum)

{

MaxNum=a[i];

maxIndex = i;

}else if(a[i]<MinNum)

{

MinNum=a[i];

minIndex = i;

}

}

temp = a[maxIndex];

a[maxIndex] = a[minIndex];

a[minIndex] = temp;

}

main()

{

int a[MAXSIZE];

int k;

printf("please inter ten number:\n");

for(k=0;k<MAXSIZE;k++)

{

scanf("%d",&a[k]);

}

printf("\n");

Fun(a);

printf("调换后:\n");

for(k=0;k<MAXSIZE;k++)

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

}

扩展资料:

数组使用规则:

1.可以只给部分元素赋初值。当{ }中值的个数少于元素个数时,只给前面部分元素赋值。例如:static int a[10]={0,1,2,3,4};表示只给a[0]~a[4]5个元素赋值,而后5个元素自动赋0值。

2.只能给元素逐个赋值,不能给数组整体赋值。例如给十个元素全部赋1值,只能写为:static int a[10]={1,1,1,1,1,1,1,1,1,1};而不能写为:static int a[10]=1;请注意:在C、C#语言中是这样,但并非在所有涉及数组的地方都这样,数据库是从1开始。

3.如不给可初始化的数组赋初值,则全部元素均为0值。

4.如给全部元素赋值,则在数组说明中, 可以不给出数组元素的个数。例如:static int a[5]={1,2,3,4,5};可写为:static int a[]={1,2,3,4,5};动态赋值可以在程序执行过程中,对数组作动态赋值。这时可用循环语句配合scanf函数逐个对数组元素赋值。

参考资料:

百度百科-数组

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-11-10

#include <stdio.h>

void main()

{

  int a[10];

  int i,j,max,min,temp,m,n;

  printf("请输入十个整数\n");

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

  {

scanf("%d",&a[i]);

  }

   

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

  {

printf("%d ",a[i]);        //要加空格

  }

  printf("\n");        //换行

  max=a[0];min=a[0];

  m=0; n=0;            //m,n也要有初值,否则最大最小数在a[0]就出错

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

  {

if(a[i]>max)

{

max=a[i];

m=i;

}

       if(a[i]<min)

{

min=a[i];

n=i;

}

  }

  a[n]=max;

  a[m]=min;

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

  {

printf("%d ",a[i]);        //输出也要有空格

  }

}

本回答被提问者和网友采纳
第2个回答  2020-03-09
#include <stdio.h>
#define ARR_SIZE 10
void MaxMinExchang(int a[], int n);
int main(void)
{
int a[ARR_SIZE], i, n;
printf("Input n(n<=10):");
scanf("%d", &n) ;
printf("Input %d Numbers:\n", n);
/************Begin************/
for(i=0;i<n;i++)
scanf("%d",&a[i]);

MaxMinExchang(a,n);

printf("After MaxMinExchange:\n");
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");

/************End**************/
return 0;
}

void MaxMinExchang(int a[], int n)
{
/************Begin************/
int maxValue=0, minValue, maxPos=0, minPos;
int i, temp,m;
for(i=0;i<n;i++)
if(a[i]>maxValue)
{
maxValue=a[i];
maxPos=i;
}
temp=a[n-i];
a[n-1]=a[maxPos];
a[maxPos]=temp;

minValue=maxValue;
for(m=0;m<n;m++)
if(a[m]<minValue)
{
minValue=a[m];
minPos=m;
}

temp=a[0];
a[0]=a[minPos];
a[minPos]=temp;
/************End**************/
}
第3个回答  2015-11-10
漏写 初始 值 m=0,n=0;
补上即好。
相似回答