2017-06-17 437 views
-4

编写一个程序,要求用户输入非负数的整数X和Y.使用一个循环,在X和Y之间添加和相乘整数。如果数字是偶数,将其添加到总数中。如果数字是奇数,则乘以它。例如,如果X = 5且Y = 10,则程序应计算((5 + 6)* 7 + 8)* 9 + 10 = 775。如果X = 2且Y = 5,则计算(2 * 3 + 4)* 5 = 50。偶数和奇数的C++循环

我知道如何拆分偶数和奇数,但我不知道如何把它放在一起。

+1

这是一个使用'std :: accumulate'的单线程。那么你准备好看到这个解决方案并且理解(使用你自己的研究)什么是“积累”? – PaulMcKenzie

+0

'if(number%2 == 0){/ * it even * /} else {/ * it's odd * /} –

回答

0

假设你循环虽然XYi是在循环和tot迭代器/电流数是总数,你将输出,你的循环中,
i甚至:

tot += i; 

i是奇数:

tot *= i; 

您也可以选择适当的starti ng值为tot

我会发布完整的代码,但似乎这是一项任务。

1

正确的解释:
第一步是检查输入是否正确(y大于x且两个值都是正值)。

然后你初始化你用来返回结果到x(因为我们总是根据你给我们的例子从x开始)使用的变量:int res = x;

的你有循环:因为我们从x开始,只是循环从x+1y(包括,再相应地与示例,您给我们):for(int i = x+1 ; i <= y; i+=1)

在这个循环中,你拥有的当前值,如果此当前值为偶数,将其添加到结果变量(res += i;)中,否则(奇数)将结果乘以当前值(res *= i)。

循环结束后,您可以返回结果变量并完成作业。



/\剧透:以下



这里完整的代码是完整的代码

int func(int x, int y){ 
     if(y>x && x>0){ 
     int res = x; 
     for(int i = x+1 ; i <= y ; i+=1){ 
      if(i%2==0) 
      res += i; 
      else 
      res *= i; 
     } 
     return res; 
     } 
     return -1; 
    } 

我只是说,它返回的事实-1如果输入不是“有效”的话。

+0

确实,要改正 – Vivick

+1

是否确定这是一个很好的做法,问题显然是一项任务? – KyrSt

+1

确实,增加了解释和扰流板(以防万一Emendator仍然想看看“成品”)。 – Vivick

0

首先检查y是否大于X.如果更大,运行一个从X开始到Y结束的循环。取一个存储总量的变量。如果循环变量甚至将该值添加到总变量中,并且如果循环变量是奇数,则将该值与总变量的值相乘。

int total=0; 
if(y>x) 
{ 
    for(int i=x;i<=y;i++) 
    { 
     if(i%2==0)  //if even 
     { 
      total += i; 
     } 
     else   //if odd 
     { 
      total *= i; 
     } 
    } 
} 
cout<<total;