C 我无法理解为什么不能正确显示扫描的信息
我想问题当然在于地址或指针,但我找不到它。有人能描述一下这个问题吗,或者如果有人愿意修复代码的话 我的问题是,它不会在提示时打印我输入的内容C 我无法理解为什么不能正确显示扫描的信息,c,pointers,C,Pointers,我想问题当然在于地址或指针,但我找不到它。有人能描述一下这个问题吗,或者如果有人愿意修复代码的话 我的问题是,它不会在提示时打印我输入的内容 #include <stdio.h> #include <stdlib.h> void getData(int* enterhour, int* enterminute, int* exitotalhour, int* exminute); void rate(int exitotalhour, int exminute, int
#include <stdio.h>
#include <stdlib.h>
void getData(int* enterhour, int* enterminute, int* exitotalhour, int* exminute);
void rate(int exitotalhour, int exminute, int enterhour, int enterminute, int* totalhour, int* totalminute, int* round);
void charge(char* vehic, float* rate1, float* rate2, int enterhour);
void result(int* exitotalhour, int* exminute, int* enterhour, int* enterminute, int* totalhour, float* rate1, float* rate2, int* round, float* total);
int main(void)
{
char vehic;
int enterhour;
int enterminute;
int exitotalhour;
int exminute;
int totalhour;
int totalminute;
int round;
float rate1;
float rate2;
float total;
getData(&enterhour, &enterminute, &exitotalhour, &exminute);
rate(exitotalhour, exminute, enterhour, enterminute, &totalhour, &totalminute, &round);
charge(&vehic, &rate1, &rate2, enterhour);
total= rate1 + rate2;
result( &exitotalhour, &exminute, &enterhour, &enterminute, &totalhour, &rate1, &rate2, &round, &total);
return 0;
}
void getData(int* enterhour, int* enterminute, int* exitotalhour, int* exminute)
{
char v;
printf("Enter c for car, b for bus, t for truck: ");
scanf("%c", &v);
printf("\nHour vehicle entered 0-24: ");
scanf("%d", &enterhour);
printf("\nMinute vehicle entered 0-60: ");
scanf("%d", &enterminute);
printf("\nHour vehicle exited 0-24: ");
scanf("%d", &exitotalhour);
printf("\nMinute vehicle exited 0-60: ");
scanf("%d", &exminute);
return;
}
void rate(int exitotalhour, int exminute, int enterhour, int enterminute, int* totalhour, int* totalminute, int* round)
{
if(enterminute < exminute)
{
enterminute= enterminute + 60;
exitotalhour= exitotalhour - 1;
}
*totalhour = enterhour - exitotalhour;
*totalminute = enterminute - exminute;
if ((*totalminute > 0 && *totalminute <= 60))
{
*totalhour = *totalhour + 1;
*round = *totalminute * 0;
}
return;
}
void charge(char* vehic, float* rate1, float* rate2, int enterhour)
{
switch (*vehic)
{
case 'c': if (enterhour <= 3)
{
*rate1 = 0.00;
if (enterhour > 3)
*rate2 = 1.50 * (float)(enterhour - 3);
}
break;
case 't': if (enterhour <= 2)
{
*rate1 = 1.00 * (float)enterhour;
if (enterhour > 2)
*rate2 = 2.30 * (float)(enterhour - 2);
}
break;
case 'b': if (enterhour <= 1)
{
*rate1 = 2.00 * (float)enterhour;
if (enterhour > 1)
*rate2 = 3.70 * (float)(enterhour - 1);
}
break;
}
return;
}
void result(int* exitotalhour, int* exminute, int* enterhour, int* enterminute, int* totalhour, float* rate1, float* rate2, int* round, float* total)
{
printf("\n\t\t LOT CHARGE \t\t\n");
printf("\nType of vehicle: Car or Bus or Truck");
printf("\nTIME-IN\t\t %d:%d", enterhour, enterminute);
printf("\nTIME-OUT\t\t %d:%d", exitotalhour, exminute);
printf("\n\t\t\t --------");
printf("\nPARKING TIME\t\t %d:%d", totalhour, round);
printf("\n\t\t\t --------");
*total= *rate1 + *rate2;
printf("\nTOTAL CHARGE\t\t %4.2f\n\n", total);
return;
}
#包括
#包括
void getData(int*enterhour,int*enterminute,int*exitotalhour,int*exminute);
无效率(整数ExitTotalHour、整数exminute、整数enterhour、整数enterminute、整数*总小时、整数*总分钟、整数*轮);
无效费用(字符*车辆、浮动*费率1、浮动*费率2、整数小时);
作废结果(int*exitotalhour、int*exminute、int*enterhour、int*enterminute、int*totalhour、float*rate1、float*rate2、int*round、float*total);
内部主(空)
{
汽车;
整小时;
整数分钟;
整小时;
int exminute;
整小时;
整数分钟;
整数轮;
浮动汇率1;
浮动汇率2;
浮动总额;
getData(&enterhour、&enterminute、&ExitTotalHour、&exminute);
费率(ExitTotalHour、exminute、enterhour、enterminute和totalhour、totalminute和round);
收费(&车辆,&费率1,&费率2,每小时);
总计=费率1+费率2;
结果(&ExitTotalHour,&exminute,&enterhour,&enterminute,&totalhour,&rate1,&rate2,&round,&total);
返回0;
}
void getData(int*enterhour,int*enterminute,int*exitotalhour,int*exminute)
{
char v;
printf(“输入c表示汽车,输入b表示公共汽车,输入t表示卡车:”);
scanf(“%c”、&v);
printf(“\n您的车辆输入0-24:”);
scanf(“%d”、&enterhour);
printf(“\n车辆输入0-60分钟:”);
scanf(“%d”、&enterminute);
printf(“\n您的车辆退出0-24:”);
scanf(“%d”和&exitotalhour);
printf(“\n车辆退出0-60分钟:”);
扫描频率(“%d”和“exminute”);
返回;
}
无效率(整数ExitTotalHour、整数exminute、整数enterhour、整数enterminute、整数*总小时、整数*总分钟、整数*轮)
{
如果(输入分钟<输出分钟)
{
enterminute=enterminute+60;
ExitTotalHour=ExitTotalHour-1;
}
*totalhour=enterhour-ExitTotalHour;
*totalminute=输入分钟-输出分钟;
如果((*totalminute>0&&*totalminute,因为result
的参数是int*
,您不需要在printf
中取消引用它们吗
printf("\nTIME-IN\t\t %d:%d", *enterhour, *enterminute);
由于result
的参数是int*
,您不需要在printf
中取消引用它们吗
printf("\nTIME-IN\t\t %d:%d", *enterhour, *enterminute);
我认为您的问题在于此功能:
void getData(int* enterhour, int* enterminute, int* exitotalhour, int* exminute)
{
char v;
printf("Enter c for car, b for bus, t for truck: ");
scanf("%c", &v);
printf("\nHour vehicle entered 0-24: ");
scanf("%d", &enterhour);
printf("\nMinute vehicle entered 0-60: ");
scanf("%d", &enterminute);
printf("\nHour vehicle exited 0-24: ");
scanf("%d", &exitotalhour);
printf("\nMinute vehicle exited 0-60: ");
scanf("%d", &exminute);
return;
}
您正在将int指针传递到函数中,然后将这些指针的地址提供给scanf
。您应该只传递指针本身:
void getData(int* enterhour, int* enterminute, int* exitotalhour, int* exminute)
{
char v;
printf("Enter c for car, b for bus, t for truck: ");
scanf("%c", &v);
printf("\nHour vehicle entered 0-24: ");
scanf("%d", enterhour);
printf("\nMinute vehicle entered 0-60: ");
scanf("%d", enterminute);
printf("\nHour vehicle exited 0-24: ");
scanf("%d", exitotalhour);
printf("\nMinute vehicle exited 0-60: ");
scanf("%d", exminute);
return;
}
我认为您的问题在于此功能:
void getData(int* enterhour, int* enterminute, int* exitotalhour, int* exminute)
{
char v;
printf("Enter c for car, b for bus, t for truck: ");
scanf("%c", &v);
printf("\nHour vehicle entered 0-24: ");
scanf("%d", &enterhour);
printf("\nMinute vehicle entered 0-60: ");
scanf("%d", &enterminute);
printf("\nHour vehicle exited 0-24: ");
scanf("%d", &exitotalhour);
printf("\nMinute vehicle exited 0-60: ");
scanf("%d", &exminute);
return;
}
您正在将int指针传递到函数中,然后将这些指针的地址提供给scanf
。您应该只传递指针本身:
void getData(int* enterhour, int* enterminute, int* exitotalhour, int* exminute)
{
char v;
printf("Enter c for car, b for bus, t for truck: ");
scanf("%c", &v);
printf("\nHour vehicle entered 0-24: ");
scanf("%d", enterhour);
printf("\nMinute vehicle entered 0-60: ");
scanf("%d", enterminute);
printf("\nHour vehicle exited 0-24: ");
scanf("%d", exitotalhour);
printf("\nMinute vehicle exited 0-60: ");
scanf("%d", exminute);
return;
}
请缩进您的代码并直接在您的问题中发布。不要忘记去掉不相关的部分。(有利于调试以及向我们演示。)请缩进您的代码并直接在您的问题中发布。不要忘记去掉不相关的部分。(有利于调试以及向我们演示。)好的,这大大提高了输出,但是总成本计算没有正确显示,总时间计算似乎很奇怪。不过,谢谢,我会继续编辑指针!很高兴我能提供帮助,你也应该检查paislee发布的答案,看起来你的printf
调用中也有错误。好吗已经极大地提高了输出,但是总成本计算没有正确显示,总时间计算似乎很奇怪。不过,谢谢,我会继续编辑指针!很高兴我能提供帮助,你也应该检查paislee发布的答案,看起来你的printf
调用中也有错误。