C 三个函数中的指针
我是C语言的新手,正在尝试创建一个程序来查找银行账户的复利 我使用三个带指针的函数,一个用于获取数据,一个用于计算,另一个用于将数据打印到表中。我假设我对指针的混淆导致计算值在表中打印错误 目前,我没有收到任何错误,但是收到了一些关于我的指针“defaulttoint”的警告C 三个函数中的指针,c,pointers,C,Pointers,我是C语言的新手,正在尝试创建一个程序来查找银行账户的复利 我使用三个带指针的函数,一个用于获取数据,一个用于计算,另一个用于将数据打印到表中。我假设我对指针的混淆导致计算值在表中打印错误 目前,我没有收到任何错误,但是收到了一些关于我的指针“defaulttoint”的警告 #包括 #包括 #包括 //函数声明 void GETDATA(double*StartAmnt、float*IntrRate、int*numyear、int*StartYear); void Mathemagic(双星、
#包括
#包括
#包括
//函数声明
void GETDATA(double*StartAmnt、float*IntrRate、int*numyear、int*StartYear);
void Mathemagic(双星、浮点数、整数、整数、,
浮动*内部,浮动*获得百分比,长双倍*未来值,
国际*未来年);
无效打印表(双星、浮点数、整数、整数),
内部浮动,获得浮动百分比,长期双倍未来值,
国际未来年);
内部主(空)
{
//本地声明
双星;
漂浮物;
漂浮在内部;
获得的浮动百分比;
长期双重未来价值;
颈内肌;
int StartYear;
国际未来年;
//声明
GETDATA(&StartAmnt,&IntrRate,&StartYear,&NumYears);
Mathemagic(StartAmnt、IntrRate、StartYear、NumYears和Intrealed、,
&获得的百分比、未来价值和未来年);
打印表(StartAmnt、IntrRate、NumYears、StartEar、IntrAred、,
获得的百分比、未来价值、未来年份);
返回0;
}//主要
void GETDATA(double*StartAmnt、float*IntrRate、int*numyars、int*StartYear)
{
//声明
printf(“COP 2220-51014项目2:Michael Walt\n\n”);
printf(“输入起始金额(美元和美分):”;
scanf(“%lf”,StartAmnt);
printf(“输入利率(2.5%为2.5%):”;
扫描频率(“%f”,整数);
printf(“输入年数(整数):”;
scanf(“%d”,NumYears);
printf(“输入起始年份(四位数):”;
scanf(“%d”,StartYear);
返回;
}//获取数据
void Mathemagic(双星、浮点数、整数、整数、,
浮动*内部,浮动*获得百分比,长双倍*未来值,
国际*未来年)
{
//声明
*未来价值=StartAmnt*pow((1+(IntrRate/100)),单位为毫米;
*获得的百分比=(*FutureValue-StartAmnt)/StartAmnt)*100;
*内部=(*未来价值开始);
*未来年=(起点+起点);
返回;
}//数学的
打印表(StartAmnt、IntrRate、NumYears、StartEar、IntrAred、,
获得的百分比、未来价值、未来年)
{
printf(“\n+--------------------------------------+-------------+\n”);
printf(“|说明|输入数据|\n”);
printf(“|----------------------------------------+--------------|\n”);
printf(“|起始金额|$%.2f |\n”,StartAmnt);
printf(“|利率|%f%|\n”,IntrRate);
printf(“年数|%d |\n”,努迈尔斯);
printf(“起始年份|%d |\n”,起始年份);
printf(“+--------------------------------------+-------------+\n”);
printf(“|未来值|结果|\n”);
printf(“|----------------------------------------+--------------|\n”);
printf(“|在%d中,余额为|$%f |\n”,未来年份,未来价值);
printf(“|利息收入|$%f |\n”,插入);
printf(“获得的总百分比|%f%%|\n”,获得的百分比);
printf(“+--------------------------------------+-------------+\n”);
返回;
}
您的参数顺序不正确。这就是您的结果计算不正确的原因。另外,您没有在PRINTTABLE
的函数定义中指定参数类型。它现在工作正常了
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//Function declarations
void GETDATA(double* StartAmnt, float* IntrRate, int* NumYears, int* StartYear);
void Mathemagic (double StartAmnt, float IntrRate, int NumYears, int StartYear,
float* IntrEarned, float* PercentGained,long double* FutureValue,
int* FutureYear);
void PRINTTABLE (double StartAmnt, float IntrRate, int NumYears, int StartYear,
float IntrEarned, float PercentGained,long double FutureValue,
int FutureYear);
int main(void)
{
//Local Declarations
double StartAmnt;
float IntrRate;
float IntrEarned;
float PercentGained;
long double FutureValue;
int NumYears;
int StartYear;
int FutureYear;
//Statements
GETDATA (&StartAmnt, &IntrRate, &NumYears, &StartYear);
Mathemagic (StartAmnt, IntrRate, NumYears, StartYear, &IntrEarned,
&PercentGained, &FutureValue, &FutureYear);
PRINTTABLE (StartAmnt, IntrRate, NumYears, StartYear, IntrEarned,
PercentGained, FutureValue, FutureYear);
return 0;
}//main
void GETDATA(double* StartAmnt, float* IntrRate, int* NumYears, int* StartYear)
{
//Statements
printf("COP 2220-51014 Project 2: Michael Walt\n\n");
printf("Enter a Starting amount (dollars and cents): ");
scanf_s("%lf", StartAmnt);
printf("Enter an Interest rate (ex. 2.5 for 2.5%): ");
scanf_s("%f", IntrRate);
printf("Enter the Number of years (integer number): ");
scanf_s("%d", NumYears);
printf("Enter the Starting year (four digits): ");
scanf_s("%d", StartYear);
return;
}//GETDATA
void Mathemagic (double StartAmnt, float IntrRate, int NumYears, int StartYear,
float* IntrEarned, float* PercentGained,long double* FutureValue,
int* FutureYear)
{
//Statements
*FutureValue = StartAmnt*pow((1+(IntrRate/100)),NumYears);
*PercentGained =((*FutureValue - StartAmnt)/StartAmnt)*100;
*IntrEarned = (*FutureValue-StartAmnt);
*FutureYear = (StartYear+NumYears);
return;
}//Mathemagic
void PRINTTABLE(double StartAmnt, float IntrRate, int NumYears, int StartYear,
float IntrEarned, float PercentGained,long double FutureValue,
int FutureYear)
{
printf("\n+-----------------------------+--------------+\n");
printf("| Description | Input Data |\n");
printf("|-----------------------------+--------------|\n");
printf("| Starting amount | $ %.2f |\n", StartAmnt);
printf("| Interest rate | %f%% |\n", IntrRate);
printf("| Number of Years | %d |\n", NumYears);
printf("| Starting year | %d |\n", StartYear);
printf("+-----------------------------+--------------+\n");
printf("| Future value | Results |\n");
printf("|-----------------------------+--------------|\n");
printf("| In %d the balance will be | $ %f |\n", FutureYear, FutureValue);
printf("| Interest earned | $ %f |\n", IntrEarned);
printf("| Total percent gained | %f%% |\n", PercentGained);
printf("+-----------------------------+--------------+\n");
return;
}
#包括
#包括
#包括
//函数声明
void GETDATA(double*StartAmnt、float*IntrRate、int*numyear、int*StartYear);
void Mathemagic(双星、浮点数、整数、整数、,
浮动*内部,浮动*获得百分比,长双倍*未来值,
国际*未来年);
无效打印表(双星、浮点数、整数、整数),
内部浮动,获得浮动百分比,长期双倍未来值,
国际未来年);
内部主(空)
{
//本地声明
双星;
漂浮物;
漂浮在内部;
获得的浮动百分比;
长期双重未来价值;
颈内肌;
int StartYear;
国际未来年;
//声明
GETDATA(&StartAmnt,&IntrRate,&NumYears,&StartEar);
Mathemagic(StartAmnt、IntrRate、NumYears、StartYear和Intrealed、,
&获得的百分比、未来价值和未来年);
打印表(StartAmnt、IntrRate、NumYears、StartEar、IntrAred、,
获得的百分比、未来价值、未来年份);
返回0;
}//主要
void GETDATA(double*StartAmnt、float*IntrRate、int*numyars、int*StartYear)
{
//声明
printf(“COP 2220-51014项目2:Michael Walt\n\n”);
printf(“输入起始金额(美元和美分):”;
扫描单位(“%lf”,StartAmnt);
printf(“输入利率(2.5%为2.5%):”;
扫描频率(“%f”,整数);
printf(“输入年数(整数):”;
scanf_s(“%d”,NumYears);
printf(“输入起始年份(四位数):”;
扫描频率(“%d”,起始频率);
返回;
}//获取数据
void Mathemagic(双星、浮点数、整数、整数、,
浮动*内部,浮动*获得百分比,长双倍*未来值,
国际*未来年)
{
//声明
*未来价值=StartAmnt*pow((1+(IntrRate/100)),单位为毫米;
*获得的百分比=(*FutureValue-StartAmnt)/StartAmnt)*100;
*内部=(*未来价值开始);
*未来年=(起点+起点);
返回;
}//数学的
无效打印表(双星、浮点数、整数、整数),
内部浮动,浮动百分比
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//Function declarations
void GETDATA(double* StartAmnt, float* IntrRate, int* NumYears, int* StartYear);
void Mathemagic (double StartAmnt, float IntrRate, int NumYears, int StartYear,
float* IntrEarned, float* PercentGained,long double* FutureValue,
int* FutureYear);
void PRINTTABLE (double StartAmnt, float IntrRate, int NumYears, int StartYear,
float IntrEarned, float PercentGained,long double FutureValue,
int FutureYear);
int main(void)
{
//Local Declarations
double StartAmnt;
float IntrRate;
float IntrEarned;
float PercentGained;
long double FutureValue;
int NumYears;
int StartYear;
int FutureYear;
//Statements
GETDATA (&StartAmnt, &IntrRate, &NumYears, &StartYear);
Mathemagic (StartAmnt, IntrRate, NumYears, StartYear, &IntrEarned,
&PercentGained, &FutureValue, &FutureYear);
PRINTTABLE (StartAmnt, IntrRate, NumYears, StartYear, IntrEarned,
PercentGained, FutureValue, FutureYear);
return 0;
}//main
void GETDATA(double* StartAmnt, float* IntrRate, int* NumYears, int* StartYear)
{
//Statements
printf("COP 2220-51014 Project 2: Michael Walt\n\n");
printf("Enter a Starting amount (dollars and cents): ");
scanf_s("%lf", StartAmnt);
printf("Enter an Interest rate (ex. 2.5 for 2.5%): ");
scanf_s("%f", IntrRate);
printf("Enter the Number of years (integer number): ");
scanf_s("%d", NumYears);
printf("Enter the Starting year (four digits): ");
scanf_s("%d", StartYear);
return;
}//GETDATA
void Mathemagic (double StartAmnt, float IntrRate, int NumYears, int StartYear,
float* IntrEarned, float* PercentGained,long double* FutureValue,
int* FutureYear)
{
//Statements
*FutureValue = StartAmnt*pow((1+(IntrRate/100)),NumYears);
*PercentGained =((*FutureValue - StartAmnt)/StartAmnt)*100;
*IntrEarned = (*FutureValue-StartAmnt);
*FutureYear = (StartYear+NumYears);
return;
}//Mathemagic
void PRINTTABLE(double StartAmnt, float IntrRate, int NumYears, int StartYear,
float IntrEarned, float PercentGained,long double FutureValue,
int FutureYear)
{
printf("\n+-----------------------------+--------------+\n");
printf("| Description | Input Data |\n");
printf("|-----------------------------+--------------|\n");
printf("| Starting amount | $ %.2f |\n", StartAmnt);
printf("| Interest rate | %f%% |\n", IntrRate);
printf("| Number of Years | %d |\n", NumYears);
printf("| Starting year | %d |\n", StartYear);
printf("+-----------------------------+--------------+\n");
printf("| Future value | Results |\n");
printf("|-----------------------------+--------------|\n");
printf("| In %d the balance will be | $ %f |\n", FutureYear, FutureValue);
printf("| Interest earned | $ %f |\n", IntrEarned);
printf("| Total percent gained | %f%% |\n", PercentGained);
printf("+-----------------------------+--------------+\n");
return;
}
PRINTTABLE(StartAmnt, IntrRate, NumYears, StartYear, IntrEarned,
PercentGained, FutureValue, FutureYear)
void PRINTTABLE (double StartAmnt, float IntrRate, int NumYears, int StartYear,
float IntrEarned, float PercentGained,long double FutureValue,
int FutureYear);
*.c:76:1: warning: return type defaults to 'int' [-Wreturn-type]
PRINTTABLE(StartAmnt, IntrRate, NumYears, StartYear, IntrEarned,
^
*.c:76:1: warning: conflicting types for 'PRINTTABLE' [enabled by default]
*.c:12:6: note: previous declaration of 'PRINTTABLE' was here
void PRINTTABLE (double StartAmnt, float IntrRate, int NumYears, int StartYear,
^
*.c:82:5: warning: format '%f' expects argument of type 'double', but argument 2 has type 'int' [-Wformat=]
printf("| Starting amount | $ %.2f |\n", StartAmnt);
printf("Enter an Interest rate (ex. 2.5 for 2.5%): ");
↑
printf("| In %d the balance will be | $ %f |\n", FutureYear, FutureValue);