题目:购物单小明刚刚找到工作,老板人很好,只是老板夫人很爱购物。老板忙的时候经常让小明帮忙到商场代为购物。小明很厌烦,但又不好推辞。这不,XX大促销又来了!老板夫人开出了长长的购物单,都是有打折优惠的。小明也有个怪癖,不到万不得已,从不刷卡,直接现金搞定。现在小明很心烦,请你帮他计算一下,需要从取款机上取多少现金,才能搞定这次购物。取款机只能提供100元面额的纸币。小明想尽可能少取些现金,够用就行了。你的任务是计算出,小明最少需要取多少现金。以下是让人头疼的购物单,为了保护隐私,物品名称被隐藏了。
解题思路:
将题目信息复制到.txt文件中,然后用程序读取文件并对其中的数据进行计算输出
代码如下:
#include<stdio.h>
int main()
{
double x,y;
double count=0;
freopen("r1.txt","r",stdin);//stdin是标准输入 一般指键盘输入到缓冲区的东西
while(scanf("%lf%lf",&x,&y)!=EOF){
count+=x*y/100;
}
printf("%lf",count);
return 0;
}
freopen函数
- 含义:重新定向输入输出流,在不改变代码的原貌下改变输入输出环境
- 格式:FILE *fropen(const char *filename, const char *mode, FILE *stream);
- 参数:
filename:需要重定向到的文件名或文件路径(即应该从何处读入文件)
mode: 代表文件访问权限的字符串。(“r”表示只读访问,“w”表示只写访问, “a”表示追加写入)
stream : 需要被重定向的文件流(比如:stdin 标准输入流。本来应该是从stdin读数据 但它被重定向了) - 返回值:如果成功,则返回该指向输出流的文件指针,否则返回为NULL