64,674
社区成员
发帖
与我相关
我的任务
分享
// test.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include<string>
using namespace std;
struct Sales_data
{
string isbn() { return bookNo; }
Sales_data& combine(const Sales_data&);
double avg_price() const ;
string bookNo;
unsigned unit_sold ;
double revenue ;
};
double Sales_data::avg_price() const
{
if (unit_sold)
return revenue / unit_sold;
else return 0;
}
Sales_data& Sales_data::combine(const Sales_data &rhs)
{
unit_sold += rhs.unit_sold;
revenue += rhs.revenue;
return *this;
}
Sales_data add(const Sales_data&, const Sales_data&);
ostream& print(ostream &, const Sales_data&);
istream& read(istream &, Sales_data&);
istream& read(istream& is, Sales_data& item)
{
double price = 0.0;
is >> item.bookNo >> item.unit_sold >> price;
item.revenue = price*item.unit_sold;
return is;
}
ostream& print(ostream & os, Sales_data& item)
{
os << item.isbn() << " " << item.unit_sold << " "
<< item.revenue << " " << item.avg_price();
return os;
}
Sales_data add(const Sales_data & hs, const Sales_data& rhs)
{
Sales_data sum = hs;
sum.combine(rhs);
return sum;
}
int main()
{
Sales_data total;
cout << "请输入书号,销售量,价格";
if (read(cin, total))
{
Sales_data trans;
read(cin,trans);
int t = 1;
while(t)
{
if (total.bookNo == trans.bookNo)
total.combine(trans);
else
{
print(cout, total)<<endl;
total = trans;
}
t = 0;
}
print(cout, total);
}
else cout << "No data?!"<<endl;
}
#include <stdio.h>
char s[]="123 ab 4";
char *p;
int v,n,k;
void main() {
p=s;
while (1) {
k=sscanf(p,"%d%n",&v,&n);
printf("k,v,n=%d,%d,%d\n",k,v,n);
if (1==k) {
p+=n;
} else if (0==k) {
printf("skip char[%c]\n",p[0]);
p++;
} else {//EOF==k
break;
}
}
printf("End.\n");
}
//k,v,n=1,123,3
//k,v,n=0,123,3
//skip char[ ]
//k,v,n=0,123,3
//skip char[a]
//k,v,n=0,123,3
//skip char[b]
//k,v,n=1,4,2
//k,v,n=-1,4,2
//End.