gpt4 book ai didi

c - 如何在C中打印一个范围内的数组?

转载 作者:太空宇宙 更新时间:2023-11-04 03:21:58 25 4
gpt4 key购买 nike

我尝试为数组制作一个菜单,但是当我创建一个函数来打印出一个范围内的数组时,例如,我向数组输入 45、65、78、87、98,当我选择 4 和min是45,max是87,输出是45、65、78、87、43。我真的不知道43是从哪里来的,每次测试,43总是在输出的最后,可以请有人帮助我。

#include<stdio.h>
#include<stdlib.h>
#define MAXN 100
int isFull(int*a, int n)
{ return n==MAXN;
}
int add(int value, int*a, int*pn)
{ a[*pn]=value;
(*pn)++;
}
int isEmpty(int*a, int n)
{ return n==0;
}
int search(int x, int*a, int n)
{ int i;
for(i=0; i<n; i++) if(a[i]==x) return i;
return -1;
}
void print(int*a, int n)
{ int i;
for(i=0; i<n; i++)
printf("%d,", a[i]);
}
void printvalueinrange(int*a, int n)
{ int i, min, max;
printf("Enter minimum value:");
scanf("%d", &min);
printf("Enter maximum value:");
scanf("%d", &max);
for(i=0; i<=sizeof(a); i++)
if(a[i]>=min&&a[i]<=max) printf("%d,", a[i]);
}
void ascSort(int*a, int n)
{ int minIndex;
int i, j;
for(i=0;i<n-1;i++)
{ minIndex=i;
for(j=i+1;j<n;j++)
if(a[minIndex]>a[j]) minIndex=j;
if(minIndex>i)
{ int t=a[minIndex];
a[minIndex]=a[i];
a[i]=t;
}
}
for(i=0;i<n;i++) printf("%d,", a[i]);
}
int main()
{ int n=0, i, choice, a[MAXN], value, pos, min, max;
do
{
printf("\n1-Add a value\n");
printf("2-Search a value\n");
printf("3-Print out the array\n");
printf("4-Print out values in a range\n");
printf("5-Print out the array in ascending order\n");
printf("6-Quit\n");
printf("Select an operation\n=====================\n");
scanf("%d", &choice);
switch(choice)
{ case 1:
if(isFull(a,n)) printf("Sorry, there is no more space for you to add more value.\n");
else
{ printf("Input an added value:");
scanf("%d", &value);
add(value, a, &n);
printf("Added\n");
}
break;
case 2:
if(isEmpty(a,n)) printf("Sorry, the array is empty.\n");
else
{ printf("Input the value you want to search:");
scanf("%d", &value);
int pos=search(value, a, n);
if(pos<0) printf("Not found!\n");
else printf("Position is found:%d\n", pos);
}
break;
case 3:
if(isEmpty(a,n)) printf("Sorry, the array is empty.\n");
else print(a,n);
break;
case 4:
if(isEmpty(a,n)) printf("Sorry, the array is empty.\n");
else printvalueinrange(a,n);
break;
case 5:
if(isEmpty(a,n)) printf("Sorry, the array is empty.\n");
else ascSort(a,n);
break;
default : printf("Have a nice day!\n");
}
}
while(choice>0 && choice<6);
getchar();
return 0;
}

最佳答案

在你的printvalueinrange您使用的功能 sizeof(a)这是错误的,因为 a是一个指针,获取它的大小将为您提供指针 的大小,而不是它指向的内容。使用 n相反,就像您在其他职能中所做的那样。

当然,将循环终止条件从 <= 更改为至 < ,所以你不会越界。 就像您在其他职能中所做的那样。

关于c - 如何在C中打印一个范围内的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44753954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com