本关任务:练习-输入n(0<n≤100)个互不相同的整数并存在数组中,找出最大元素,并删除。
测试输入: 10
49
1
42
32
96
57
6
33
2
88
输入说明: 第一行为n
,表示输入数组的n
个整数。 第二行为数组的n
个整数。
预期输出: 49
1
42
32
57
6
33
2
88
输出说明: 删除了最大值的数组所有元素。
#include<stdio.h>
int main() {
int p = 1,sum;//p值为把第一次输入的值,赋值给max和min。
int n = 0, x = 0;
int max = 0, min = 0;
printf("请输入要比较数字的个数:");
scanf("%d", &n);
sum = n;//sum为数字的总个数
while (n--)
{
scanf("%d", &x);
while (p)//将输入的第一个值赋给max和min。
{
max = x;
min = x;
p = 0;
}
if (x > max)//如果输入的值比max要大,将x赋值给max。
{
max = x;
}
if (x < min)//如果输入的值比min要大,将x赋值给min。
{
min = x;
}
}
printf("%d个数的最大值是:%d,最小值是:%d", sum, max, min);
return 0;
}
#include <stdio.h>
void printArray(int arr[],int length){
for(int i = 0;i<length;i++){
printf("%d ",arr[i]);
}
printf("\n");
}
void deleteMax(int arr[],int length){
int pos =0;
int temp = arr[0];
for( int i = 0;i<length-2;i++){
if(arr[i]<=arr[i+1])
temp = arr[i+1];
}
for(int i = 0;i<length;i++){
if(arr[i]==temp)
pos = i;
}
printf("被删除的元素是:%d",temp);
for(int j = pos;j<length-1;j++){
arr[j] = arr[j+1];
}
printf("\n");
}
int main(){
int length;
printf("请输入数组长度:");
scanf("%d",&length);
int arr[length];
for(int i = 0;i<length;i++){
printf("请输入第%d个元素:",i+1);
scanf("%d",&arr[i]);
}
printf("初始数据为:");
printArray(arr,length);
deleteMax(arr,length);
printf("删除最大值后数据为:");
printArray(arr,length-1);
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y
#include "stdio.h"
void main()
{
int a[10];
int i,max,min;
int len;
printf("请输入数组长度:");
scanf("%d",&len);
int a[len];
for(i=0;i<len;i++)
{
scanf("%d",&a[i]);
}
//max,min赋初值
max=min=a[0];
//求最值
for(i=1;i<len;i++)
{
//求最大值
if(max<a[i])
{
max=a[i];
}
if(min>a[i])
{
min=a[i];
}
}
printf("最大值是:%d,最小值是:%d\n",max,min);
}