如何在C中打印范围内的数组?
我尝试为数组创建一个菜单,但当我创建一个函数来打印一个范围内的数组时,例如,我向数组输入45、65、78、87、98,当我选择4时,最小值是45,最大值是87,输出值是45、65、78、87、43。我真的不知道43是从哪里来的,每次我测试它,43总是在输出的末尾,有人能帮我吗如何在C中打印范围内的数组?,c,C,我尝试为数组创建一个菜单,但当我创建一个函数来打印一个范围内的数组时,例如,我向数组输入45、65、78、87、98,当我选择4时,最小值是45,最大值是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;
#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;
}
#包括
#包括
#定义最大值100
整数已满(整数*a,整数n)
{返回n==MAXN;
}
整数相加(整数值,整数*a,整数*pn)
{a[*pn]=值;
(*pn)+;
}
int-isEmpty(int*a,int-n)
{返回n==0;
}
整数搜索(整数x,整数*a,整数n)
{int i;
对于(i=0;i在printvalueinrange
函数中,您使用sizeof(a)
这是错误的,因为a
是一个指针,获取其大小将给出指针的大小,而不是它所指向的大小。请使用n
,就像在其他函数中一样
当然,将循环终止条件从更改为将for循环条件更正为:for(i=0;i