dj是單價,zh是上下班總和,a為上班時間,b為下班時間,c為公里數。這么做可以嗎
#include <stdio.h>
float dj=2.3;
float num(int a,int b,int c);
int main()
{
? ? printf("%f",num(9,6,12));
? ? return 0;
}
float num(int a,int b,int c){
? ? float zh=0;
? ? if((a>=23&&a<=24)||(a>=0&&a<5)){
? ? ? ? if(c<=3){
? ? ? ? ? ? zh+= 13;
? ? ? ? }else{
? ? ? ? ? ? zh+= c*(dj*1.2)+1;
? ? ? ? }
? ? }else{
? ? ? ? ?if(c<=3){
? ? ? ? ? ? zh+= 13;
? ? ? ? }else{
? ? ? ? ? ? zh+= c*dj+1;
? ? ? ? }
? ? }
? ??
? ? if((b>=23&&b<=24)||(b>=0&&b<5)){
? ? ? ? if(c<=3){
? ? ? ? ? ? zh+= 13;
? ? ? ? }else{
? ? ? ? ? ? zh+= c*(dj*1.2)+1;
? ? ? ? }
? ? }else{
? ? ? ? ?if(c<=3){
? ? ? ? ? ? zh+= 13;
? ? ? ? }else{
? ? ? ? ? ? zh+= c*dj+1;
? ? ? ? }
? ? }
? ? return zh;
? ??
};
2018-08-28
if((a>=23&&a<=24)||(a>=0&&a<5)){
? ? ? ? if(c<=3){
? ? ? ? ? ? zh+= 13;
? ? ? ? }else{
? ? ? ? ? ? zh+= c*(dj*1.2)+1;
? ? ? ? }
? ? }else{
? ? ? ? ?if(c<=3){
? ? ? ? ? ? zh+= 13;
? ? ? ? }else{
? ? ? ? ? ? zh+= c*dj+1;
? ? ? ? }
? ? }
? ??
? ? if((b>=23&&b<=24)||(b>=0&&b<5)){
? ? ? ? if(c<=3){
? ? ? ? ? ? zh+= 13;
? ? ? ? }else{
? ? ? ? ? ? zh+= c*(dj*1.2)+1;
? ? ? ? }
? ? }else{
? ? ? ? ?if(c<=3){
? ? ? ? ? ? zh+= 13;
? ? ? ? }else{
? ? ? ? ? ? zh+= c*dj+1;
? ? ? ? }
? ? }
單純從你的代碼看 ,?
排除特殊計費情況(比如你4:58上車, 5點多下車 ,跨臨界值情況)。
這2段可以優化一下。
?if(((a>=23&&a<=24)||(a>=0&&a<5)) or ((b>=23&&b<=24)||(b>=0&&b<5))){
? ? ? ? if(c<=3){
? ? ? ? ? ? zh+= 13;
? ? ? ? }else{
? ? ? ? ? ? zh+= c*(dj*1.2)+1;
? ? ? ? }
? ? }else{
? ? ? ? ?if(c<=3){
? ? ? ? ? ? zh+= 13;
? ? ? ? }else{
? ? ? ? ? ? zh+= c*dj+1;
? ? ? ? }
? ? }
就可以了,跟你的是一樣的。?