问题描述:
在北大校园里,没有自行车,上课办事很不方便,但实际上,并非去办任何事情都是骑车快,因为骑车总是要找车,开锁,停车,锁车,这要耽误一些时间;假设找到自行车的时间27秒,停车锁车的时间为23秒;步行每秒1.2米,骑车每秒3.0米,请判断坐不同的距离去办事,是骑车快还是走路快。
关于输入:
第一行为待处理的数据的数量n
其后每一行整数为一次办事要行走的距离,单位为m;
关于输出:
对应每个整数,如果骑车快,输出一行“bike ”;如果走路快,输出一行“walk”,一样快输出“all”;
例子输入:
4
50
90
120
180
输出:
walk
walk
bike
bike
分析:此题是典型的未知数组的元素个数,很容易想到动态数组;对于本题,在被调函数中实现输出。
使用动态数组应注意几点:
1:头文件 #include<malloc.h>
2:使用指针,自己申请内存。
3:malloc函数返回一个void*类型的地址,必须通过强制类型转换,才能赋值给特定的指针变量
4:分配的内存不再使用时一定要释放
代码:
#include<stdio.h>
#include<malloc.h>
void compute(int distance);
int main()
{
int n;
int i;
scanf("%d",&n);
int *distance=(int *)malloc(sizeof(int)*n);
for(i=0;i<n;i++)
{
scanf("%d",&(distance[i]));
}
for(i=0;i<n;i++)
compute(distance[i]);
free(distance); //!!!
return 0;
}
void compute(int distance)
{
int timebike=27+23+distance/3;
int timewalk=(int)(distance/1.2);
if(timebike<timewalk)
printf("bike\n");
else if(timebike>timewalk)
printf("walk\n");
else printf("all\n");
}