C 三个函数中的指针

C 三个函数中的指针,c,pointers,C,Pointers,我是C语言的新手,正在尝试创建一个程序来查找银行账户的复利 我使用三个带指针的函数,一个用于获取数据,一个用于计算,另一个用于将数据打印到表中。我假设我对指针的混淆导致计算值在表中打印错误 目前,我没有收到任何错误,但是收到了一些关于我的指针“defaulttoint”的警告 #包括 #包括 #包括 //函数声明 void GETDATA(double*StartAmnt、float*IntrRate、int*numyear、int*StartYear); void Mathemagic(双星、

我是C语言的新手,正在尝试创建一个程序来查找银行账户的复利

我使用三个带指针的函数,一个用于获取数据,一个用于计算,另一个用于将数据打印到表中。我假设我对指针的混淆导致计算值在表中打印错误

目前,我没有收到任何错误,但是收到了一些关于我的指针“defaulttoint”的警告

#包括
#包括
#包括
//函数声明
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);