• 1407閱讀
  • 5回復

想問2個c program邏輯問題 已有答案 求解釋 [復制鏈接]

上一主題 下一主題
離線星淺
 
發帖
2364
好友元
1953
閱讀權限
2364
貢獻值
0
只看樓主 倒序閱讀 使用道具 樓主   發表于: 2010-10-19
4.31 個度我諗極都諗唔明點樣
第一行space4下之後一粒星
第二行space3下之後三粒星
第三行space2下之後五粒星
第四行space1下之後七粒星
第五行space0下之後九粒星
space就係本身4 係咁-1直到0啦
星就由1開始係咁+2變到9啦
我想將佢複雜簡單化佢

同埋 第二條個度 明明我人手計極都係2548/2650 點解會出2550

明明初初個num = 2 跟住就 num= num+2 就 num=4

跟住sum本身=0 sum=sum+num 即係 sum= 0 + 4 就 sum=4

之後就 num = 4 then num=num+2 then num=6

sum=4+6   so = 10

如此類推

loop到去num= 98 then num=num+2 就 num=100

跟住sum=sum+num sum=2448+100 sum=2548

我覺得照計LOOP到SUM=2548+102=2650

到底點解答案又會係2550既

認真求教

問題一
4.31 (Diamond Printing Program) Write a program that prints the following diamond shape. You may use printf either a single asterisk (*) or a single blank. Maximize your use of repetition (with nested for statements) and minimize the number of printf statements.
OUTPUT如下
      *
    ***
  *****
*******
*********
*******
  *****
    ***
      *

答案如下
  1. #include <stdio.h>
  2. int main( void )
  3. {
  4. int line;
  5. int space;
  6. int asterisk;
  7. for ( line = 1; line <= 9; line += 2) {
  8.     for ( space = ( 9 - line ) / 2; space > 0; space-- ) {
  9.       printf( " " );
  10.     }
  11.    
  12.     for ( asterisk = 1; asterisk <= line; asterisk++ ) {
  13.       printf( "*");
  14.     }
  15.    
  16.     printf( "\n" );
  17. }
  18. for ( line = 7; line >= 0; line -= 2 ) {
  19.     for ( space = ( 9 - line ) / 2; space > 0; space--) {
  20.       printf( " " );
  21.     }
  22.    
  23.     for ( asterisk = 1; asterisk <= line; asterisk++ ) {
  24.       printf( "*" );
  25.     }
  26.    
  27.     printf( "\n" );
  28.   }
  29.  
  30.   return 0;
  31. }



第二條
  1.   /* Fig. 4.5: fig04_05.c
  2.     Summation with for */
  3.   #include <stdio.h>
  4.  
  5.   /* function main begins program execution */
  6.   int main()
  7.   {
  8.     int sum = 0; /* initialize sum */
  9.     int number; /* number to be added to sum */
  10.  
  11.     for ( number = 2; number <= 100; number += 2 ) {
  12.       sum += number; /* add number to sum */    
  13.     } /* end for */
  14.  
  15.     printf( "Sum is %d\n", sum ); /* output sum */
  16.  
  17.     return 0; /* indicate program ended successfully */
  18.  
  19.   } /* end function main */


OUTPUT如下
Sum is 2550
[ 本文被星淺在2010-10-19 08:29重新編輯 ]
離線keicarlos
發帖
376
好友元
17041
閱讀權限
376
貢獻值
0
只看該作者 1  發表于: 2010-10-20
sum = 2+4+6+...+100
離線智者
發帖
14653
好友元
46535
閱讀權限
37357
貢獻值
2
只看該作者 2  發表于: 2010-10-20
第2題係2550喎

102*25
  
離線chongsir1206
發帖
2361
好友元
1541
閱讀權限
2361
貢獻值
0
只看該作者 3  發表于: 2010-10-20
我想問我學C++,個header file 係iostream,同呢個stdio.h有乜分別?
離線星淺
發帖
2364
好友元
1953
閱讀權限
2364
貢獻值
0
只看該作者 4  發表于: 2010-10-20
引用第3樓chongsir12062010-10-20 19:58發表的“”:
我想問我學C++,個header file 係iostream,同呢個stdio.h有乜分別?

我無記錯兩樣都係library裡面既input同output既header黎
離線星淺
發帖
2364
好友元
1953
閱讀權限
2364
貢獻值
0
只看該作者 5  發表于: 2010-10-20
引用第1樓keicarlos2010-10-20 16:13發表的“”:
sum = 2+4+6+...+100


yes... 我一開始以為佢個for loop 就係判斷loop true/false 而做+-既工作

so 就唔知道基本default2 一早去左sum度