使用指针打印结构中的最小值和最大值 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); } }
这是我代码的一部分,我必须打印最小和最大的“avaloo”,但当我执行此代码时,它会显示第一个值和最大值,但不是最小值。使用指针打印结构中的最小值和最大值 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
我不知道它为什么不执行“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);