返回题解分享
讨论 / 题解分享/ 帖子详情

REPEAT 程序(结果填空) - 题解

本题作为蒟蒻的我属实想不通这题怎么写,只能看看csdn上面一些现成的抄下来,如有大佬,还请教教我怎么更好的理解此题
#include<bits/stdc++.h>

using namespace std;

int main(){

//打开并读取文件 

FILE \*fp = NULL;

//存放文件地址,替换成自己电脑上的用户名即可,博主是Mac,所以是 这样的地址,windows需要加上分区

char src[]="/Users/xxxxxxx/Desktop/prog.txt"; 

//得到文件指针

fp = fopen(src, "r");


int fact[10];	//fact:每层存储的倍数,最高十层 

char buff[255];	//buff:存储每行的临时变量 

int now = 0;	//now:表示当前循环层级

int sum = 0;	//sum:统计最终结果 


//初始化 sum,跳过 

fgets(buff, 255, fp);


//循环读取文件每一行  

while(fgets(buff, 255, fp))

{

	int p=0;

	//读取空格数得到循环层数 

	while(buff[p]==' ') 

		p++;


	//4个空格为一层循环

	now = p/4; 


	//该行格式:REPEAT \*:

	//确定第now层的倍数 

	if(buff[p]=='R')

		fact[now] = (buff[p+7]-'0'); 


	//该行格式:A = A + x 

	//计算该行带来的最终结果 

	if(buff[p]=='A')

	{

		//times存储累计倍数,默认为1

		int times=1, x=buff[p+8]-'0';

		//累计倍数 

		for(int i=0; i<now; i++)	

			times = times\*fact[i];

		//和

		sum = sum+times\*x;

	} 

} 

cout<<sum; 

return 0;


}
0 回复 0 转发 1 喜欢 1 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!