使用指针打印结构中的最小值和最大值 for(inti=0;idireccion); 看跌期权(“电话号码进入”); scanf(“%i”和(双关+i)->telefono); 看跌期权(“安格尔阿瓦洛”); scanf(“%i”和(pun+i)->avaloo); } 对于(int j=0;jdirecion,(pun+j)->telefono,(pun+j)->avaloo); } 对于(int k=0;卡瓦卢>最大值) { max=(双关+k)->avaloo; printf(“El mayor Avaloo es:\n建议:\t%s\nTelefono:\t\%i\nValuo:\t%i\n”,(pun+k)->direccion,(pun+k)->telefono,max); } 如果((双关+k)->阿瓦洛阿瓦洛; printf(“El menor avaloo es:\n建议:\t%s\n电信:\t\%i\nAvaluo:\t%i\n”,(pun+k)->direccion,(pun+k)->telefono,min); } }

使用指针打印结构中的最小值和最大值 for(inti=0;idireccion); 看跌期权(“电话号码进入”); scanf(“%i”和(双关+i)->telefono); 看跌期权(“安格尔阿瓦洛”); scanf(“%i”和(pun+i)->avaloo); } 对于(int j=0;jdirecion,(pun+j)->telefono,(pun+j)->avaloo); } 对于(int k=0;卡瓦卢>最大值) { max=(双关+k)->avaloo; printf(“El mayor Avaloo es:\n建议:\t%s\nTelefono:\t\%i\nValuo:\t%i\n”,(pun+k)->direccion,(pun+k)->telefono,max); } 如果((双关+k)->阿瓦洛阿瓦洛; printf(“El menor avaloo es:\n建议:\t%s\n电信:\t\%i\nAvaluo:\t%i\n”,(pun+k)->direccion,(pun+k)->telefono,min); } },c,C,这是我代码的一部分,我必须打印最小和最大的“avaloo”,但当我执行此代码时,它会显示第一个值和最大值,但不是最小值。 我不知道它为什么不执行“value问题在于min的初始化 改变 for(int i=0;i<n;i++) { printf("Ingrese datos del predio[%i]\n",i); puts("Ingrese direccion"); scanf("%s",&(pun+i)->di

这是我代码的一部分,我必须打印最小和最大的“avaloo”,但当我执行此代码时,它会显示第一个值和最大值,但不是最小值。
我不知道它为什么不执行“value问题在于
min
的初始化

改变

for(int i=0;i<n;i++)
{
          printf("Ingrese datos del predio[%i]\n",i);
          puts("Ingrese direccion");
          scanf("%s",&(pun+i)->direccion);
          puts("Ingrese numero de telefono");
          scanf("%i",&(pun+i)->telefono);
          puts("Ingrese avaluo");
          scanf("%i",&(pun+i)->avaluo);
}
for(int j=0;j<n;j++)
{
         printf("Predio [%i]\nDireccion:\t%s\nTelefono:\t\%i\nAvaluo: \t%i\n",j,(pun+j)->direccion,(pun+j)->telefono,(pun+j)->avaluo);
}
for(int k=0;k<n;k++)
{
    if ((pun+k)->avaluo>max)
    {
        max=(pun+k)->avaluo;
        printf("El mayor avaluo es:\nDireccion:\t%s\nTelefono:\t\%i\nAvaluo: \t%i\n",(pun+k)->direccion,(pun+k)->telefono,max);
    }   
    if ((pun+k)->avaluo<min)
    {
        min=(pun+k)->avaluo;
        printf("El menor avaluo es:\nDireccion:\t%s\nTelefono:\t\%i\nAvaluo: \t%i\n",(pun+k)->direccion,(pun+k)->telefono,min);
    }   
}

建议


我们希望将
max
初始化为一个大值(假设理论上为无穷大),因此,当我们与第一个实际值进行比较时,
value>max
的比较总是会实现的,因为如果在for循环中应该找到最大值,我们只会检查一个值,这个值应该是最大的,而不是-无穷大

min
相同,但具有+infinity。
INT\u MAX
,from可以扮演此角色(而
INT\u min
具有-infinity)。检查此示例:

int max = INT_MIN; 
int最小值=1000;
int max=-1000;
int数组[3],i;
数组[0]=10;//而不是从用户处获取输入
数组[1]=20;
数组[2]=30;
对于(i=0;i<3;++i){
if(数组[i]max){
max=数组[i];
}
}
//将更新最小值和最大值
printf(“最小=%d和最大=%d”,最小,最大);
如果你在一张纸上运行这个例子,你会看到这个想法是如何运作的。然后你应该能够理解为什么我们可以使用第一个值而不是无穷大(在这个例子中,无穷大应该是1000)

正如Chux所建议的:

更改:

scanf(“%i”…);

scanf(“%d”…);


避免扫描八进制数。

pun
是一个结构数组,对吗?为什么不使用[]运算符访问它?所有这些外语都让我困惑。max和
min
在哪里初始化?非常感谢您的翻译,但我建议您用英语编写代码。:)请安德烈斯,至少回答我的第二个问题。
(pun+k)->avaloo取什么值?正的值?是的,将%i改为%u1)将
scanf(“%i”…
改为
scanf(“%d”
以避免扫描八进制数。2)用
min=INT\u MAX
初始化,
MAX=INT\u min
[错误]“->”的基操作数具有非指针类型“predio”。我收到此错误。但为什么我的程序要打印第一个和最大值?@andrespm请尝试我的编辑并返回报告。由于初始化。控制台正在关闭,没有打印任何内容。显示
pun
结构。我们要将
min
初始化为
aval第一项的uo
pun
!struct home pun;int n,max=0;int min=(pun+0)->value;put(“房屋投入量”);scanf(“%i”,&n);pun=(struct house*)malloc(nsizeof(struct house));
#include <limits.h>
int min = INT_MAX; // or (pun)->avaluo;
int max = INT_MIN; 
int min = 1000;
int max = -1000;
int array[3], i;

array[0] = 10; // instead of getting input from user
array[1] = 20;
array[2] = 30;

for(i = 0; i < 3; ++i) {
  if(array[i] < min) {
    min = array[i];
  }
  if(array[i] > max) {
    max = array[i];
  }
}

// min and max are updated
printf("min = %d and max = %d", min,  max);