不会做啊,咋办
请你查找一个数组中满足值在某一区间范围条件的数中的最小数进行输出。输入格式:
输入数据为多组,每组数据有两行组成,第一行有三个整数,第一个整数表示数组中元素个数n(n<50),第二个
和第三个整数分别为a,b,其中a
输出格式:
输出n个数组元素中满足值在范围内的数中的最小值,每组数据的输出占一行,如果没有元素在该区间,则输
出n个数组元素中的最小值。
【求助帖】请及时确认最佳答案,下次提问时可以得到更多关注,问题可以更快解决
请你查找一个数组中满足值在某一区间范围条件的数中的最小数进行输出。
输入格式:
输入数据为多组,每组数据有两行组成,第一行有三个整数,第一个整数表示数组中元素个数n(n<50),第二个
和第三个整数分别为a,b,其中a,b
输出格式:
输出n个数组元素中满足值在范围内的数中的最小值,每组数据的输出占一行,如果没有元素在该区间,则输
出n个数组元素中的最小值。 本帖最后由 jhq999 于 2022-10-13 22:12 编辑
int min=0x7fffffff,min1=0x7fffffff;
for(int i=0;i<n;i+=1)
{
min1=min1<num?min1:num;
if(a<num&&b>num)
{
min=min<num?min:num;
}
}
if(min==0x7fffffff)printf("%d",min1);
else printf("%d",min); 本帖最后由 两手空空儿 于 2022-10-14 14:29 编辑
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
int min = INT_MAX;//存放所有数的最小值
int little = INT_MAX;//存放范围内的最小值
int flag = 0;//标记
int a,b;
void Search(int *ptr, int num);
int main(void)
{
int num,group = 0;
int *ptr = NULL;
do{
printf("您要输入几组数据?(请输入大于0的数)");
scanf("%d", &group);
}while(group <= 0);
for(int i = 0; i < group; i++){
printf("请输入第%d组数据第一行:",i+1);
scanf("%d %d %d", &num, &a, &b);
ptr = (int *)calloc(num, sizeof(int));
if(ptr == NULL){
printf("内存不足,按任意键退出!");
system("pause");
return 0;
}
printf("分配内存成功\n请输入第%d组数据的第二行:",i+1);
for(int j = 0; j < num; j++){
scanf("%d", ptr+j);
}
Search(ptr,num);
if(ptr != NULL){
free(ptr);
ptr = NULL;
}
}
if(flag){
printf("范围内的最小值是%d\n", little);
}else{
printf("范围内没有找到,所有数的最小值是%d", min);
}
return 0;
}
void Search(int *ptr, int num)
{
int i;
for(i = 0; i< num; i++){
min = min>ptr?ptr:min;
if(ptr >= a && ptr <=b){
if(ptr < little){
little = ptr;
flag = 1;
}
}
}
}
页:
[1]