C语言的循环输入

时间:2024-04-05 11:38:21

例题:电梯在城市的高层建筑中广泛应用。输入电梯停靠楼层的列表,以0结束输入,计算电梯到达最后楼层需要花费的时间。列表中的数字表示电梯将在哪一层停靠,电梯按照列表顺序依次停靠。假设电梯每上行一层需要花6秒时间,每下行一层需要花费4秒时间,电梯每停一次需要5秒。

方法一:

#include<stdio.h> 
int main(void)
{
int i,number,n=0,tm;
int *p,ft[100];

printf("Please input floors(Ends with 0):\n");

scanf("%d",&number);

//输入楼层列表,以0结束。
while(number != 0)
{
ft[n]=number;
n++;

scanf("%d",&number);//循环输入

}
tm=0;
p=ft;
for(i=0;i<n-1;i++)
{
if(*p<*(p+1))
tm=tm+(*(p+1)-*p)*6+5;
else
tm=tm+(*p-*(p+1))*4+5;
p++;
}
printf("The time is%d\n",tm);
return 0;
}

此种方法在开始先给循环输入的变量一个初值,用来满足下面开始的循环输入。

C语言的循环输入

方法二:

#include<stdio.h> 
int main(void)
{
int i,number,n=0,tm;
int *p,ft[100];

printf("Please input floors(Ends with 0):\n");
while(1)//使用死循环输入
{
scanf("%d",&number);
if(number==0)
break;
ft[n]=number;
n++;
}
tm=0;
p=ft;
for(i=0;i<n-1;i++)
{
if(*p<*(p+1))
tm=tm+(*(p+1)-*p)*6+5;
else
tm=tm+(*p-*(p+1))*4+5;
p++;
}
printf("The time is%d\n",tm);
return 0;
}

此种方法先是进入死循环,开始输入,当输入满足题目所需条件时,可以退出循环。但是必须要在每次读入下一个值之前先判断是否满足退出条件,否则会多读入一个值。

C语言的循环输入

这是正确的结果,当判断语句放到最后时,结果便会出错,下面是出错代码和结果。

C语言的循环输入

C语言的循环输入

这个结果是把0当作一层楼给读入了,然后把2层到0层的时间计入,导致错误。