以下是我想要做的事情:
这是我到目前为止所做的:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#define size 2
#include<stdlib.h>
struct stock
{
char name[20];
int shares;
float buyp, currp, buycost, currcost, profit;
};
void load(struct stock s[], int n)
{
int i;
for (i = 0; i<n; i++)
{
printf("Enter name:");
gets(s[i].name);
fflush(stdin);
printf("Enter shares:");
scanf("%d", &s[i].shares);
printf("Enter buyprice");
scanf("%f", &s[i].buyp);
printf("Enter current price");
scanf("%f", &s[i].currp);
s[i].currcost = s[i].shares * s[i].currp;
s[i].buycost = s[i].shares * s[i].buyp;
s[i].profit = s[i].currcost - s[i].buycost;
}
}
void print(struct stock s[], int n)
{
int ne,p,z;
ne = p = z =0;
for (int i=0;i<n;i++)
{
if(s[i].profit<0)
ne++;
if (s[i].profit>0)
p++;
if(s[i].profit==0)
z++;
printf("Amount of stocks made money:%d\n",p);
printf("Amount of stocks lost money:%d\n",ne);
printf("Amount of stocks broke even:%d\n",z);
printf("The current cost is:%f\n",s[i].currcost);
printf("The profit is:%f\n",s[i].profit);
printf("The buycost is:%f\n",s[i].buycost);
}
}
void totprofit(struct stock s[], int n)
{
int count = 0, i;
float totprofit = 0.0;
for (i = 0; i < n; i++)
{
totprofit +=s[i].profit;
printf("Total profit is:%f\n",totprofit);
}
}
void sort(struct stock s[], int n)
{
int i; int j;
stock t;
for (i = 0; i<n - 1; i++)
for (j = 0; j<n - 1; j++)
if (s[j].profit<s[j + 1].profit)
{
t = s[j]; s[j] = s[j + 1]; s[j + 1] = t;
}
}
void main()
{
stock s[size];
load(s, size);
print(s,size);
totprofit(s, size);
sort(s,size);
system("pause");
}
我的问题是,当它编译时,它会完美运行,直到它再次询问名称(因为程序运行两次)。为什么?
Enter name:
Apple
Enter shares:
5
Enter buyprice:
3
Enter current price:
4
Enter name:
Enter shares:
3
Enter buyprice:
4
Enter current price:
5
Amount of stocks made money:1
Amount of stocks lost money:0
Amount of stocks broke even:0
The current cost is:20.000000
The profit is:5.000000
The buycost is:15.000000
Amount of stocks made money:2
Amount of stocks lost money:0
Amount of stocks broke even:0
The current cost is:15.000000
The profit is:3.000000
The buycost is:12.000000
Total profit is:5.000000
Total profit is:8.000000
Press any key to continue . . .
答案 0 :(得分:1)
您的函数void totprofit
与变量float totprofit
具有相同的名称。
至少更改其中一个。
至于第7步,我不确定你在问什么。