难点在于不容易理解a<day,有解释 #include <stdio.h> int main() { int sum=0,day,a=0; scanf("%d",&day); for(int j = 1;a<day;j++)//每天发的金币数;(因为已经发了当天的金币才累加的天数所以就算) { int i = 0;//将需要重负的天数归零 for(int i=0;i<j;i++)//发放同样大小金币的天数 { sum+=j; a++;//已经累计发放金币的天数 if(a==day) break; } } printf("%d",sum); return 0; }