ZOJ Problem Set - 1048 Financial Management

Financial Management

Time Limit: 2 Seconds       Memory Limit: 65536 KB

Larry graduated this year and finally has a job. He's making a lot of money, but somehow never seems to have enough. Larry has decided that he needs to grab hold of his financial portfolio and solve his financing problems. The first step is to figure out what's been going on with his money. Larry has his bank account statements and wants to see how much money he has. Help Larry by writing a program to take his closing balance from each of the past twelve months and calculate his average account balance.


Input Format: 

The input will be twelve lines. Each line will contain the closing balance of his bank account for a particular month. Each number will be positive and displayed to the penny. No dollar sign will be included.


Output Format: 

The output will be a single number, the average (mean) of the closing balances for the twelve months. It will be rounded to the nearest penny, preceded immediately by a dollar sign, and followed by the end-of-line. There will be no other spaces or characters in the output. 


Sample Input: 

100.00 
489.12 
12454.12 
1234.10 
823.05 
109.20 
5.27 
1542.25 
839.18 
83.99 
1295.01 
1.75


Sample Output: 

$1581.42


Source: Mid-Atlantic USA 2001


题目让求12个数的平均数,保留两位小数

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
	double a,sum=0;
	for(int i=0;i<12;i++)
	{
		cin>>a;
		sum+=a;
	}
	a=sum/12;
	cout<<"$"<<setiosflags(ios::fixed)<<setprecision(2)<<a<<endl;
	return 0;
}

虽说是水题,但是还是原来的问题,小数点。



  控制符是在头文件iomanip.h中定义的对象。 使用前必须把iomanip.h包含进来


  1. I/O的书写格式


  I/0流是输入或输出的一系列字节,当程序需要在屏幕上显示输出时,可以使用插入操作符"《"向cout输出流中插入字符。例如:




  当程序需要执行键盘输入时,可以使用抽取操作符"》"从cin输人流中抽取字符。例如:


  int myAge;


  cin》myAge;


  不管把什么基本数据类型的名字或值传给流,它都能懂。


  例如,下面的函数输出字符串和整数:




  上面的输出也可以在同一行中串连,下面的输出语句与上例输出同样内容




  也可以分在几行,提高可读性,下列语句与上例输出同样结果:


  cout《"My name is Jone n" //行末无分号


  《"the ID is"


  《2


  《endl;


  cin可以和cout一样的方式调整行,它自动识别变量位置和类型。例如:


  int i;float f;long l;


  cin 》i 》f 》l;


  cin能够知道抽取的变量之类型,它将对i,f,l分别给出一个整型、浮点型和长整型数。

2.使用控制符


  流的默认格式输出有时不能满足特殊要求,如:


  double average=9.400067;


  cout《average《endl;


  希望显示的是9.40,即保留两位小数,可是却显示了9.40007;默认显示6位有效位。 用控制符

(manipulators)可以对I/O流的格式进行控制。

控制符是在头文件iomanip.h中定义的对象。可以直接将控制符插入流中。常用控制符如表2-4所列。


  表2-4 I/O流的常用控制符


  使用控制符时,要在程序的头上加头文件iomanip.h.


  3.控制浮点数值显示


  使用setprecision(n)可控制输出流显示浮点数的数字个数。C++默认的流输出数值有效位是6.


  如果setprecision(n)与setiosflags(ios::fixed)合用,可以控制小数点右边的数字个数。

setiosflags(ios::fixed)是用定点方式表示实数。


  如果与setiosnags(ios::scientific)合用, 可以控制指数表示法的小数位数。

setiosflags(ios::scientific)是用指数方式表示实数。


  例如,下面的代码分别用浮点、定点和指数方式表示一个实数:

运行结果为:


  3.14286


  3


  3


  3.1


  3.14


  3.143


  3.14285714


  3.14285714e+00


  该程序在32位机器上运行通过。


  在用浮点表示的输出中,setprecision(n)表示有效位数。


  第1行输出数值之前没有设置有效位数,所以用流的有效位数默认设置值6:第2个输出设置了

有效位数0,C++最小的有效位数为1,所以作为有效位数设置为1来看待:第3~6行输出按设置的有效位数输出。


  在用定点表示的输出中,setprecision(n)表示小数位数。


  第7行输出是与setiosflags(ios::fixed)合用。所以setprecision(8)设置的是小数点后面的位数,

而非全部数字个数。


  在用指数形式输出时,setprecision(n)表示小数位数。


  第8行输出用setiosflags(ios::scientific)来表示指数表示的输出形式。其有效位数沿用上次的设置值8.


  小数位数截短显示时,进行4舍5入处理。


  4.设置值的输出宽度


  除了使用空格来强行控制输出间隔外,还可以用setw(n)控制符。如果一个值需要比setw(n)确定的

字符数更多的字符,则该值将使用它

所需要的所有字符。例如:


  float amount=3.14159;


  cout 《setw(4) 《amount 《endl;


  其运行结果为:3.14159.它并不按4位宽度,而是按实际宽度输出。


  如果一个值的字符数比setw(n)确定的字符个数更少,则在数字字符前显示空白,不同于其他控制符,

setw(n)仅仅影响下一个数值输出,

换句话说,使用setw设置的间隔方式并不保留其效力。例如:


  cout《setw(8)


  《10


  《20《endl;


  运行结果为:


  -------1020


  运行结果中的下横线表示空格。整数20并没有按宽度8输出。setw()的默认值为宽度0,即setw(0),

意思是按输出数值的表示宽度输出,

所以20就紧挨10了。若要每个数值都有宽度8,则每个值都要设置:


  cout《setw(8)《10


  《setw(8) 《20 《endl;


  5.输出8进制和16进制数


  3个常用的控制符是hex,oct和dec,它们分别对应16进制、8进制和10进制数的显示。

这3个控制符在iostream.h头文件中定义。例如:


  #include 


  void main()


  {


  int number=1001;


  cout 《"Decimal:" 《dec 《number 《endl


  《"Hexadecimal:" 《hex 《number 《endl


  《"Octal:" 《oct 《number 《endl;


  }


  运行结果为:


  Decimal:1001


  Hexadecimal:3e9


  Octal:1751


  1001是一个10进制数,不能把它理解成16进制或8进制数,因为它不是以0x或0开头。但在输出时,

 流根据控制符进行过滤, 使其按

一定的进制来显示。


  用头文件iomanip.h中的setiosflags(ios::uppercase)可以控制16进制数大写输出。例如,

上例中增加一个头文件,对16进制数进行大写

控制,即:


  #include


  #include


  //…


  cout《"Hexadecimal:"《hex


  《setiosftags(ios::uppercase)


  《number《endl;


  便能得到16进制数的大写表示:Hexadecimal:3E9.


  6.设置填充字符


  setw可以用来确定显示的宽度。默认时,流使用空格符来保证字符间的正确间隔。

用setfill控制符可以确定一个非空格的别的字符。

Setfill在头文件iomanip·h中定义。例如:



  运行结果为:


  21


  *21


  **21


  7.左右对齐输出


  默认时,I/O流左对齐显示的内容。使用头文件iomanip.h中的setiosflags(ios::left)和(ios::right)标志,

可以控制输出对齐。例如:


  #include 


  #include 


  void main()


  {


  cout 《setiosflags(ios::right)


  《setw(5) 《1


  《setw(5) 《2


  《setw(5) 《3 《endl;


  cout 《setiosflags(ios::left)


  《setw(5) 《1


  《setw(5) 《2


  《setw(5) 《3 《endl;


  }


  运行结果为:


  -----1-----2-----3


  1-----2-----3-----


  8.强制显示小数点和符号


  当程序输出下面的代码时:


  cout《10.0/5《endl;


  默认的I/0流会简单地显示2,而非2.0,因为除法的结果是精确的。当需要显示小数点时,

可以用iso::showpoint标志。例如:


  #include 


  #include 


  void main()


  {


  cout 《10.0/5 《endl;


  cout 《setiosflags(ios::showpoint)


  《10.0/5 《endl;


  }


  运行结果为:


  2


  2.00000


  默认时,I/O流仅在负数之前显示值的符号,根据程序的用途,有时也需要在正数之前加上正号,

可以用ios::showpos标志。例如:


  #include 


  #include 


  void main()


  {


  cout 《10 《" " 《-20 《endl;


  cout 《setiosflags(ios::showpos)


  《10 《" " 《-20 《endl;


  }


  运行结果为:


  10 -20


  +10 -20


  小结


  变量是程序分配给某个内存位置的名字,它可以存放信息。程序在使用变量前,

必须先说明变量名和变量类型。


  不同的变量不能同名,变量名应该尽量反映出变量的用途,以增强程序的可读性。


  在程序运行中,常量的值不可改变。常量也有各种数据类型,也占有存储空间。

各种数据类型的数据表示有一定的范围,越过了该范

围, C++就要对该数据进行截取,使得数据不再正确。


  利用cout可以输出各种数据类型的数据,可以多种方式在屏幕上显示输出信息(包括特殊符号)。


  C++兼容C的库函数,所以printf()和scanf()也可照常使用。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值