作者q172357ma ( )
站内TransCSI
标题Re: [问题] 请问用for双回圈来做...
时间Thu May 17 16:50:47 2007
稍微简化...
-----
Please Input An Positive Integer Here: 5
Ans = (1) + (1 + 2) + (1 + 2 + 3) + (1 + 2 + 3 + 4) + (1 + 2 + 3 + 4 + 5)
= 35
请按任意键继续 . . .
-----
↑执行结果
#include <stdio.h>
#include <stdlib.h>
int
main()
{
int i, j, num, ans = 0;
rekey:
printf("Please Input An Positive Integer Here: ");
scanf("%d", &num);
if (num <= 0) { printf("Error!!\n"); goto rekey; }
printf("\nAns = ");
for (i = 0; i < num; i++)
{
printf("(");
for (j = 0; j < i + 1; j++)
printf("%s%d", (j == 0) ? "" : " + ", j + 1);
printf("%s", (i == (num - 1)) ? ")" : ") + ");
ans += ((1 + (i + 1)) * (i + 1) / 2);
}
printf("\n = %d\n\n", ans);
system("PAUSE");
return 0;
}
※ 引述《gnqwertyuiop (中华炒面)》之铭言:
: ※ 引述《idea1825 (小贝壳)》之铭言:
: : 我使用的是:Dev C++
: : 程式大概是这样:(我简略打粉多,意思到就好= =")
: : int i;
: : int sum;
: : ......................................(我先省略掉)
: : //输入一整数值:n
: : printf("从1加到n的整数值为%i, sum);
: 前文恕删
: 我用C语言写
: 然後就像pelin大大说的
: +跟()要和数字以及总和分开讨论
: 我才开始学写C
: 只会用一些简单的语法写Orz...
: 写的不好别见怪(≧<>≦)
: 因为只用一个回圈的话
: 好像只能解1+2+3+...+n
: 所以我用巢状回圈去写
: i是表示大回圈
: k是表示小回圈
: ex:
: (1)+(1+2)+(1+2+3)=10
: 绿色部分是i在处理
: 黄色部份在k在处理
: 最後的等於多少就放在巢状回圈外面
: 另外由於 +号比回圈少一次
: 所以我就多写了一个IF去控制
: 下面附上程式码
: #include <stdio.h>
: #include <stulib.h>
: int main(void)
: {
: int i,j,k,suma=0,sumb=0;
: printf("请输入一个数字:\n");
: scanf("%d",&j);
: for (i=1;i<j+1;i++)
: {
: printf("(");
: for (k=1;k<i;k++)
: {
: printf("%d",k);
: printf("+");
: }
: suma=suma+i;
: sumb=suma+sumb;
: printf("%d)",i);
: if (i<j)
: {
: printf("+\n");
: }
: }
: printf("=%d",sumb);
: system("pause");
: }
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.57.132.241