2020-04-12

知识拓展
scanf与scanf
ffprintf是写入文件数据的,那么 fscanf聊聊函数原型#include <stdio.h>int scanf(const char format,…);
int fscanf(FILE
stream,constcharformat,[argument…]);
读取数据来源scanf 标准输入设备(控制台用户输入)读入数据;
fscanf从文件流(FILE
)读入数据。
前提条件
scanf在控制台应用程序启动后即可使用;
fscanf使用前需要调用 fopen打开文件,
使用后需要用fclose关闭文件。
例如从文件"d:\ote.txt"中读取一个字符串:FILE * inputFile = fopen(“d:\ote.txt”, “r”); // 打开文件char str[100];fscanf ( inputFile, “%s”, str); // 读取一个字符串fclose ( inputFile ); // 关闭文件
sacnf(格式化字符串输入)
相关函数fscanf,snprintf表头文件#include<stdio.h>定义函数int scanf(const char * format,…);
函数说明scanf()会将输入的数据根据参数format字符串来转换并格式化数据。
Scanf()格式转换的一般形式如下%[][size][l][h]type以中括号括起来的参数为选择性参数,而%与type则是必要的。
e
代表该对应的参数数据忽略不保存。
size 为允许参数输入的数据长度。
l 输入的数据数值以long int 或double型保存。
h 输入的数据数值以short int 型保存。
以下type的几种形式
%d 输入的数据会被转成一有符号的十进制数字(int)。
%i 输入的数据会被转成一有符号的十进制数字,若输入数据以“0x”或“0X”开头代表转换十六进制数字,若以“0”开头则转换八进制数字,其他情况代表十进制。
%0 输入的数据会被转换成一无符号的八进制数字。%u 输入的数据会被转换成一无符号的正整数。
%x 输入的数据为无符号的十六进制数字,转换后存于unsigned int型变量。
%X 同%x%f 输入的数据为有符号的浮点型数,转换后存于float型变量。
%e 同%f%E 同%f%g 同%f%s 输入数据为以空格字符为终止的字符串。
%c 输入数据为单一字符。
[] 读取数据但只允许括号内的字符。如[a-z]。读取数据但不允许中括号的符号后的字符出现,如[0-9].返回值成功则返回参数数目,失败则返回-1,错误原因存于error中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是构造程序的代码: ```python class AccountBook: def __init__(self): self.records = [] self.income = 0 self.expense = 0 self.balance = 0 def add_record(self, category, detail, amount, date): record = [len(self.records)+1, category, detail, amount, date] self.records.append(record) if category == '收入': self.income += amount else: self.expense += amount self.balance = self.income - self.expense def print_records(self): for record in self.records: print(record) print('总收入:', self.income) print('总支出:', self.expense) print('结余:', self.balance) book = AccountBook() book.add_record('收入', '生活费', 3000, '2020-04-01') book.add_record('支出', '午餐', 12.5, '2020-04-30') book.add_record('支出', '买书', 25, '2020-04-30') book.add_record('支出', '晚餐', 16, '2020-04-30') book.add_record('收入', '生活费', 3500, '2020-05-01') book.add_record('支出', '峨嵋山旅游', 500, '2020-05-01') book.print_records() ``` 运行程序后,输出结果如下: ``` [1, '收入', '生活费', 3000, '2020-04-01'] [2, '支出', '午餐', 12.5, '2020-04-30'] [3, '支出', '买书', 25, '2020-04-30'] [4, '支出', '晚餐', 16, '2020-04-30'] [5, '收入', '生活费', 3500, '2020-05-01'] [6, '支出', '峨嵋山旅游', 500, '2020-05-01'] 总收入: 6500 总支出: 553.5 结余: 5946.5 ``` 上述程序中,我们定义了一个 `AccountBook` 类,其中包含了一个 `records` 属性,用于存储记帐记录;以及 `income`、`expense` 和 `balance` 属性,分别用于记录总收入、总支出和结余。 在 `AccountBook` 类中,我们还定义了一个 `add_record` 方法,用于添加新的记帐记录。这个方法接受四个参数:`category`(类别)、`detail`(明细)、`amount`(金额)和 `date`(日期)。在添加新的记帐记录时,我们先将其存储到 `records` 属性中,然后根据类别更新总收入和总支出,最后计算结余。 最后,我们还定义了一个 `print_records` 方法,用于将所有的记帐记录打印出来,并输出总收入、总支出和结余。 在程序的最后,我们创建一个 `AccountBook` 对象,并添加了一些测试数据。最后调用 `print_records` 方法,将所有的记帐记录打印出来,并输出总收入、总支出和结余。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值