【发布时间】:2021-03-23 03:10:34
【问题描述】:
我做了一个程序,以数组结构的形式计算和存储数据,在代码的最后,我会找到速度最慢和速度最大的车牌。但是我遇到了一个奇怪的“find”输出最慢的车段”。
它显示了这样的东西 最慢速度 = 0.000000 汽车 = 6954000
最快速度 = 300.000000 汽车 = 13 进程返回 9 (0x9) 执行时间:24.881 s 按任意键继续。
//这很奇怪,因为“最快的”可以工作,但最慢的却不能//
#include <stdio.h>
struct Car
{
int plate;
float time,distance,speed;
};
int main ()
{
int n;
struct Car car[10];
int fcar,scar;
for (n=1;n<=10;n++){
printf ("\nPlate = ");
scanf("%d",&car[n].plate);
printf ("Distance = ");
scanf("%f",&car[n].distance);
printf ("Time = ");
scanf("%f",&car[n].time);
(car[n].speed) = (car[n].distance)/(car[n].time);
printf ("Speed = %f",car[n].speed);
//-----------------------------------------------------------------//
if (car[n].speed< 70){
printf("\nSlow\n");
}else if (car[n].speed>=70 && car[n].speed<110){
printf("\nNormal\n");
}else{
printf("\nFast\n");
}
printf("-----------------------------------------------------");
}
float minn = car[0].speed;
for (n=1;n<=10;n++){
if ( car[n].speed < minn){
minn = car[n].speed;
scar = car[n].plate;
}
}
printf("\n\nSlowest speed = %f",minn);
printf("\nCar = %d",scar);
float maxx = car[0].speed;
for (n=1;n<=10;n++){
if ( car[n].speed > maxx){
maxx = car[n].speed;
fcar = car[n].plate;
}
}
printf("\n\nFastest speed = %f",maxx);
printf("\nCar = %d",fcar);
}
//-------------------------------
【问题讨论】:
-
for (n=1;n<=10;n++){应该从 0 开始 -
你在循环中做所有事情,而不是先读取条目,然后编写算法以找到慢速和快速
-
使用
for (n=1;n<10;n++){(<=--><) -
OT:关于:
if (car[n].speed< 70){和}else if (car[n].speed>=70 && car[n].speed<110){变量speed是float,这些语句将float值与int值进行比较。建议:if (car[n].speed< 70.0f){和}else if (car[n].speed>=70.0f && car[n].speed<110.0f){将文字声明为具有类型float
标签: arrays c if-statement structure