2009年3月19日 星期四

C語言的範例 –數列相加 - 列出1000內的“完數”

C語言的範例 數列相加
題目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個數字。例如2+22+222+2222+22222(此時共有5個數相加),幾個數相加有鍵盤控制。 
1.程式分析:關鍵是計算出每一項的值。 
2.程式源代碼: 
main() 
{ 
 int a,n,count=1; 
 long int sn=0,tn=0; 
 printf("please input a and n\n"); 
 scanf("%d,%d",&a,&n); 
 printf("a=%d,n=%d\n",a,n); 
 while(count<=n) 
 { 
  tn=tn+a; 
  sn=sn+tn; 
  a=a*10; 
  ++count; 
 } 
printf("a+aa+...=%ld\n",sn); 
} 
============================================================== 
C語言的範例 列出1000內的“完數”
題目:一個數如果恰好等於它的因數之和,這個數就稱為“完數”。例如6=123.編程找出1000以內的所有完數。 
1. 程式分析:請參照程式<--上頁程式14.  
2.程式源代碼: 
main() 
{ 
static int k[10]; 
int i,j,n,s; 
for(j=2;j<1000;j++) 
 { 
 n=-1; 
 s=j; 
  for(i=1;i   { 
   if((j%i)==0) 
   { n++; 
    s=s-i; 
    k[n]=i; 
   } 
  } 
 if(s==0) 
 { 
 printf("%d is a wanshu",j); 
 for(i=0;i  printf("%d,",k[i]); 
 printf("%d\n",k[n]); 
 } 
} 
}