问题国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在之后的连续N + 1天里,每天收到N + 1枚金币。
请计算在前K天里,骑士一共获得了多少金币。
输入描述:
输入只有1行,包含一个正整数K,表示发放金币的天数。
输出描述:
输出只有1行,包含一个正整数,即骑士收到的金币数。
理解这道题举个例子就是加入是要发四天的金币那么第一天发一个金币然后第二天了金币数增加为了2然后我们要运用一个变量代表这个发2个金币的天数当天数也为2时金币数增加为三同时我们的这个变量又要归为0重新到三后金币数再次增加以此继续。
#include<stdio.h>
int main()
{
int money=0;
int d = 0;
int a = 0;
int i = 0;
scanf("%d", &d);
for (i = 0;; i++)
{
for (int j = 1; j <= i; j++)
{
money += i;
a++;
if (a == d)
break;//这里的break只能跳出内循环
}//这里假设一下比较好理解若d为4那么i开始循环才开始i为1内循环执行一次让money(以下简称m)变为了1a(代表的是现在是第几天)变为了1然后if判断不符合继续循环i为2了内循环就会执行两次a变为了3也代表了第2,3天加了2枚金币以此类推
if (a == d)//这里的break跳出外循环否则会一直循环造成死循环
break;
}
printf("%d", money);
return 0;
}
运行截图
希望能对看到的人有所帮助我还只是一名刚刚接触c的萌新若有错误恳请各位大佬指正
标签:break,int,money,金币,循环,得到,骑士 From: https://blog.51cto.com/u_15838996/5994525