2015-05-07 70 views
0

这里就是我该做的:结构股票和数据文件

  1. 创建结构股票 - 名字[20],股票,buyprice,currprice,buycost,currcost,利润。
  2. 从键盘加载 - 名称,份额,buyprice,currprice,currcost,利润,buycost。
  3. 排序从高分到低分
  4. 查找利润占利润总额的所有股票
  5. 打印许多股票如何赚钱,赔了钱,并打破了平衡。

这是我到目前为止有:

#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 . . . 

回答

1

你具备的功能void totprofit具有相同的名称为您的变量float totprofit

更改其中至少一个。

至于第7步,我不确定你在问什么。