❶ c语言——将用户输入的10个元素的数组中最大的与第一个元素交换,最小的与最后一个元素交换,输出数组
#include <stdio.h>
#define max 10
void change(int* p)
{
int i,maxk=0,mink=0,temp; //maxk,mink分别记录着最大和最小值的下标
for(i=1;i<max;i++)
{
if(p[i]>p[maxk])
maxk=i;
if(p[i]<p[mink])
mink=i;
}
temp=p[maxk];p[maxk]=p[0];p[0]=temp;
temp=p[mink];p[mink]=p[max-1];p[max-1]=temp;
}
int main ()
{
int num[max],i;
for(i=0;i<max;i++)
scanf("%d",num+i);
change(num);
printf("交换后:\n");
for(i=0;i<max;i++)
printf("%d\t",num[i]);
printf("\n");
return 0;
}
❷ C语言输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组
唯一的一个问题
就是如果最大最小值本来就在第一个或者最后一个的情况.
比如, 最小值本来在a[0] 最大值在a[4]
这样循环后min=0 max=4
于是 先做了一次交换 a[max]和a[0] 也就是a[4]和a[0]
然后 又做了一次交换, a[min]和a[4] 还是a[0]和a[4] 又换回去了.
导致最小在a[0] 最大在a[4] 与要求不符.
修改方式 就是
m=array[max];
array[max]=array[0];
array[0]=m;
if(min==0)min=max;//如果min已经被换走了,那么把min赋值成被换的位置.
m=array[min];
array[min]=array[4];
array[4]=m;
❸ C语言编程,输入10个数查找最大数字并和第一个数字互换。
#include "stdio.h"
int Max(int num[]);//自定义一个求一组数据中最大数的下标
void main()
{
int num[10];//定义一个数组存放输入的10个数字
int i,temp;//i为循环变量,temp为最大数与第一个数交换时的中间变量
int n;
printf("Please input ten numbers:\n");
for(i=0;i<10;i++)
{
scanf("%d",&num[i]);
}
n=Max(num);//找出最大数的下标
//以下三行代码为最大数与第一个数交换
temp=num[0];
num[0]=num[n];
num[n]=temp;
//输入处理后的十个数
printf("ten numbers:\n ");
for(i=0;i<10;i++)
{
if(i%5==0)
printf("\n%5d",num[i]);
else
printf("%5d",num[i]);
}
}
int Max(int num[])
{
int max=0;//用于存放最大数的下标
int i;
for(i=1;i<10;i++)
{
if(num[i]>num[max])//用于比较出最大的数
max=i;//比较后的最大数的下标赋值给max变量
}
return max;//返回最大数的下标
}
❹ C语言中,定义一个数组,输入10个数,将最大值与第一个值互换,最小值与最后一个值互换,再输出这个数组
用乱七八糟评价你的代码一点不为过,不光是格式,连同逻辑!写代码要尽量往简单写,提供一个供参考——
intmain(void){
intarr[10],i,max_i,min_i;
printf("请输入10个数字:");
for(max_i=min_i=i=0;i<10;i++){
scanf("%d",&arr[i]);
if(arr[i]<arr[min_i])
min_i=i;
if(arr[i]>arr[max_i])
max_i=i;
}
i=arr[9];
arr[9]=arr[min_i];
arr[min_i]=i;
i=arr[0];
arr[0]=arr[max_i];
arr[max_i]=i;
printf("交换后的结果为:");
for(i=0;i<10;i++)
printf("%d",arr[i]);
printf(" ");
return0;
}
❺ c语言:输入10个整数,将其中最大数与第一个数交换,最小数与最后一个数交换(要求用指针方法实现)
#include <stdio.h>
#include <conio.h>
void main()
{
int i,min,max,temp,t1,t2,a[10],*p=a;
for(i=0;i<10;i++)
scanf("%d",p+i);
min = a[0];
max = a[0];
t1=0;
t2=0;
for(i=0;i<10;i++)
{
if(min>a[i])
{
min=a[i];
t1=i;
}
if(max<a[i])
{
max=a[i];
t2=i;
}
}
temp=a[0];
a[0]=min;
a[t1]=temp;
temp=a[9];
a[9]=max;
a[t2]=temp;
printf("max=%d,min=%d ",max,min);
for(i=0;i<10;i++)
printf("%d",a[i]);
}
(5)c语言数组最大值和第一个值交换扩展阅读:
使用指针来读取数据,在重复性操作的状况下,可以明显改善程序性能,例如在遍历字符串,查取表格,控制表格及树状结构上。对指针进行复制,之后再解引用指针以取出数据,无论在时间或空间上,都比直接复制及访问数据本身来的经济快速。
指针的机制比较简单,其功能可以被集中重新实现成更抽象化的引用数据形别。许多编程语言中都支持某种形式的指针,最着名的是C语言,但是有些编程语言对指针的运用采取比较严格的限制,如Java一般避免用指针,改为使用引用。
❻ C语言编程:输入n个数,将最大的与第一个数交换,最小的与最后一个数交换,输出交换后的结果
#include<stdio.h>
voidswap(int*a,int*b)
{
printf("%d,%d ",*a,*b);
intt=*a;
*a=*b;
*b=t;
}
voidmax_min(int*p,intn)
{
intl=n;
int*max=p,*min=p;
while(n--){
min=*p>*min?min:p;
p++;
}
swap(min,--p);
while(l--){
max=*p>*max?p:max;
p--;
}
swap(max,++p);
}
voidoutput(intarray[],intn)
{
int*p=array;
while(n--)
printf("%d",*p++);
printf(" ");
}
intmain(void)
{
inti;
intn;
intbuf[128];
printf("inputcountofarray:");
scanf("%d",&n);
printf("input%dnum:",n);
for(i=0;i<n;i++)
scanf("%d",&buf[i]);
max_min(buf,n);
output(buf,n);
return0;
}
❼ 编写C语言程序,输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
*min=a[n];a[n]=k;
*max=a[0];a[0]=j;
n=7,但数组的下标为0-6,出现了下标越界。
#include<stdio.h>
int main(void)
printf("请输入数组:");
a[0]=a[maxp];
a[maxp]=t;
printf("输出: ");
}
数组中的元素
数组中的所有元素都具有相同类型。数组中的元素存储在一个连续性的内存块中,并通过索引来访问(这一点也和结构和类中的字段不同,它们通过名称来访问)。数组元素并非只能是基元数据类型,还可以是结构、枚举或类。
以上内容参考:网络-数组
❽ C语言:定义一个包含10个元素的一维数组找出其中的最大值让其与第一个元素交换,找出最小值与最后一个
代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main(){
int i, a[10], max, min, pmax, pmin, tmp;
srand(time(NULL));
for(i=0; i<10; i++){
a[i] = rand()%100+0;
}
printf("这十个数分别为: ");
for (i=0; i<10; i++){
printf("%d ", a[i]);
}
max = a[0];
pmax = 0;
for(i=1; i<10; i++){
if(a[i] > max){
max = a[i];
pmax = i;
}
}
printf(" 最大值: %d", max);
min = a[0];
pmin = 0;
for(i=1; i<10; i++){
if(a[i] < min){
min = a[i];
pmin = i;
}
}
printf(" 最小值: %d", min);
tmp = a[0];
a[0] = a[pmin];
a[pmin] = tmp;
tmp = a[9];
a[9] = a[pmax];
a[pmax] = tmp;
printf(" 经过调整过后的十个数分别为: ");
for (i=0; i<10; i++){
printf("%d ", a[i]);
}
}
(8)c语言数组最大值和第一个值交换扩展阅读:
注意事项
数组位置交换的几种方法
1、引入第三个变量
var arr = ['one','two'];var item = arr[0];
arr[0] = arr[1];
arr[1] = item;
2、splice方法,splice() 方法会直接对数组进行修改,splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。
arr.splice(1,1,arr[0]) 将第二个值替换成第一个值,...arr.splice(1,1,arr[0])拿到被替换的值,即第二个值,
arr.splice(0,1,...arr.splice(1,1,arr[0]))将第一个值换成第二个值
var arr = ['one','two'];
arr.splice(0,1,...arr.splice(1,1,arr[0]))// 或者 arr.splice(0,1,arr.splice(1,1,arr[0])[0])//arr.splice(index2,1,...arr.splice(index1, 1 , arr[index2]));
3、数组解构赋值(数组长度大于2时不适用)
var arr = ['one','two'];
[arr[0],arr[1]] = [arr[1],arr[0]]// [arr[index1],arr[index2]] = [arr[index2],arr[index1]];
❾ c语言:输入a[10],将最大的元素与第一个元素交换,最小的元素与最后一个元素交换,输出数组所有元素。
intmin=0;
intminindex=0;
intmax=0;
intmaxindex=0;
inti=0;
min=a[0];
max=a[0];
for(i=0;i<10;i++)
{
if(a[i]>=max)
{
max=a[i];
maxindex=i;
}
if(a[i]<=min)
{
min=a[i];
minindex=i;
}
}
a[maxindex]=a[0];
a[minindex]=a[9];
a[0]=max;
a[9]=min;
❿ C语言作业,找出数组中最大值与第一个交换,最小值和最后一个交换,求改错
#include<stdio.h>
intmain()
{
inta[10];
inti,t1=0,t2=0,min=0,max=0;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
t1=a[0];
for(i=0;i<10;i++)
{
if(a[i]<t1)
{
min=i;
t1=a[i];
}
}
t2=a[min];
a[min]=a[0];
a[0]=t2;
t1=a[0];
for(i=0;i<10;i++)
{
if(a[i]>t1)
{
max=i;
t1=a[i];
}
}
t2=a[max];
a[max]=a[9];
a[9]=t2;
for(i=0;i<10;i++)
{
printf("%d",a[i]);
}
return0;
}
你把数组下标和数字搞混了;
你每次for循环都会将a[0]重新赋值给max(或者min);