C 程序从数组元素标记为"Min"和"Max",并在控制台上的最小/最大相应位置列上打印



我正在尝试标记将对应于int Min&最大数量,例如:

Serial No.     Min/Max  
1                Min
2
3
4
5                Max

在控制台上,其他列正在按照我的要求打印,但无法获得此";"最小/最大";列打印如上。

我对此部分的代码如下:

int max = userArray[0];
int min = userArray[0];
for(i=1; i<=10; i++){
//excluded codes to print other columns  
//code for my concerned column print
if(userArray[i]>max){
max = userArray[i];
}
if(userArray[i]==max){
printf("%49sn","Max");  
}
if(min > userArray[i]){
min = userArray[i];
}
if(userArray[i]==min){
printf("%49sn","Min");  
}
}

在打印其他列时,无法找到并打印最小值和最大值。仅仅是因为在你看了所有元素之后,你才知道最小值和最大值是什么。

在开始打印循环之前,您需要找到最小值和最大值。所以你需要一个额外的循环。

// Find index of min and max values
int max_idx = 0;
int min_idx = 0;
int max = userArray[max_idx];
int min = userArray[min_idx];
for(int i=0; i<10; i++)
{
if (userArray[i]>max)
{
max_idx = i;
max = userArray[max_idx];
}
else if (userArray[i] < min)
{
min_idx = i;
min = userArray[min_idx];
}
}
// Now do the print
for(i=0; i<10; i++)
{
//excluded codes to print other columns  
if(i == max_index && i == min_index)
{
printf("%49sn","Min/Max");  
}
else if(i == max_index)
{
printf("%49sn","Max");  
}
else if(i == min_index){
printf("%49sn","Min");  
}
}

请注意,使用min_indexmax_index可确保例如,即使最大值出现多次,也只打印一次Max。

在打印minmax之前,您需要完成一次循环,以识别minmax的值。

int main()
{
int userArray[10] = {3, 2, 1, 4, 6, 5, 7, 8, 10, 9};
int max = userArray[0];
int min = userArray[0];
for(int i=0; i<10; i++){
//excluded codes to print other columns
//code for my concerned column print
if(userArray[i]>max){
max = userArray[i];
}
if(userArray[i] < min){
min = userArray[i];
}
}
printf("Serial No.tMin/Maxn");
for(int i=0;i<10;i++)
{
printf("%dt", userArray[i]);
if(userArray[i] == min)
printf("tMin");
if(userArray[i] == max)
printf("tMax");
printf("n");
}
printf("n");
return 0;
}

打印所需的列

Serial No.      Min/Max
3
2
1               Min
4
6
5
7
8
10              Max
9

最新更新