Kuroki-Tomoko

我什麽都不知道,我只知道吃飯~

博客园 首页 新随笔 联系 订阅 管理

循環簡介:這個程序是一個打印一個鞋碼為9并把他轉化爲英寸的程序,要發揮出計算機的優勢可以改進成一個循環來進行打印多個值

 1 /*shoes1.c把鞋碼轉換成英寸*/
 2 #include<stdio.h>
 3 #define ADJUST 7.31
 4 int main()
 5 {
 6     const double SCALE=0.333;
 7     double shoe,foot;
 8     
 9     shoe=9.0;
10     foot=SCALE*shoe+ADJUST;
11     printf("Shoe size (men's)    foot length\n");
12     printf("%14.1f %11.2f inches\n",shoe,foot);
13     
14     return 0;/*本程序計算了一個鞋碼為9轉化為英寸的值*/
15 }
16 /*
17 輸出樣例
18 
19 Shoe size (men's)    foot length
20            9.0       10.31 inches
21 
22 */
23 /*如何發揮計算機的優勢來計算許多的值?可以用到循環*/
 1 /*shoes2.c改進程序加入循環*/
 2 #include<stdio.h>
 3 #define ADJUST 7.31
 4 int main()
 5 {
 6     const double SCALE=0.333;
 7     double shoe,foot;
 8     
 9     printf("Shoe size (men's)    foot length\n");
10     shoe=3.0;
11     while(shoe<18.5)
12     {
13             foot=SCALE*shoe+ADJUST;
14             shoe=shoe+1;/*shoe++/shoe+=1*/
15 
16                 printf("%14.1f %11.2f inches\n",shoe,foot);
17      } 
18      printf("If the shoe fits, wear it.\n"); 
19     
20     return 0;/*本程序計算了鞋碼為3.0-18.5轉化為英寸的值*/
21 }
22 /*
23 輸出樣例
24 
25 Shoe size (men's)    foot length
26            4.0        8.31 inches
27            5.0        8.64 inches
28            6.0        8.97 inches
29            7.0        9.31 inches
30            8.0        9.64 inches
31            9.0        9.97 inches
32           10.0       10.31 inches
33           11.0       10.64 inches
34           12.0       10.97 inches
35           13.0       11.31 inches
36           14.0       11.64 inches
37           15.0       11.97 inches
38           16.0       12.31 inches
39           17.0       12.64 inches
40           18.0       12.97 inches
41           19.0       13.30 inches
42 If the shoe fits, wear it.
43  
44 */

shoes2.c加入了while循環,循環重複執行塊中的程序語句:

判斷條件(shoe<18.5)如果shoe<18.5那麽程序會一直執行,知道運行到shoe=19時,此時19<18.5為假。循環停止。

運算符:

賦值運算符=:‘=’不是等於,而是賦值給誰(運算方向是從右往左計算)

int num=3,這裏的意思是把3賦值給一個名爲num的整型變量。

i=i+1,這裏的意思是,把變量i的加一的新值賦值給變量i。

=的左側必須是一個變量名,=右邊是一個字面常量。

左值,右值:

左值(lvalue)

1.它可以指定一個對象,可以引用内存中的地址。

2.它可用在賦值運算符的左側。

可修改的左值:

賦值運算符的左側是一個可修改的左值。

右值(rvalue)

1.能賦值給可修改左值的量。

右值可以常量,可以是變量或者是其他可求值表達式(如函數調用)

int ex;(可修改的左值)

int why;(可修改的左值)

int zee;(可修改的左值)

const int TWO =2;(const變量,TWO是不可改變的左值,只能位於賦值運算符的右側。)/*注解:=在這裏的意思是初始化,并未違反規定*/

why = 42;(可修改的左值,42是右值)

zee = why;(可修改的左值)

ex = TWO*(why+zee);(ex是可修改的左值,(why+zee)是右值)

“=”運算符的左側應該是可修改的左值

C語言可以三重賦值:

 1 /*golf.c高爾夫錦標賽記分卡*/
 2 #include<stdio.h>
 3 int main()
 4 {
 5     int jane, tarzan, cheeta;
 6     
 7     cheeta=tarzan=jane=68;
 8     /*C語言可以三重賦值,把68先賦值給jane,然後再賦值給tarzan,最後賦值給cheeta*/
 9     printf("                   cheeta tatzan jane\n");
10     printf("First round score %3d %6d %6d\n",cheeta,tarzan,jane);
11      
12     return 0;
13 }
14 /*
15 輸出樣例:
16  
17                    cheeta tatzan jane
18 First round score  68     68     68
19 
20 */

加法運算符和減法運算符:

加法運算符(+):可以表示爲兩個或多個元素相加。

printf("%d",1+2);->打印的不是“1+2”,而是1+2經過加法運算后的3.

相加的值可以是變量也可以是常量。

sum=index+salary;

執行這個語句所表達的是,使用加法運算符把這兩個表達式的值相加后賦值給sum。index和salary是可修改的左值,(index+salary)是一個右值。

減法運算符(-):和“+”的使用一樣。

這裏的加法和減法運算符都是二元運算符,即需要兩個運算對象來進行運算的運算符。

“+”,“-”也可以表示一個數字的正負:

int a=-1,int b=+2;

這裏的+ -是一元運算符(只需要一個運算對象)。

乘法運算符:

“*”表示乘法運算符,cm=2.54*inch。(用inch乘以2.54然後賦值給cm)

如何打印從(1-20)的平方表?

 1 /*squares.c計算1-20的平方*/
 2 #include<stdio.h>
 3 int main()
 4 {
 5     int num=1;
 6     int sum=0;
 7     
 8     while(num<=20)
 9     {
10         sum=num*num;
11         printf("%4d %6d\n",num,sum);
12         num++;/*num=num+1/num+=1*/
13     }
14     return 0;
15 }
16 /*
17 輸出樣例
18 
19    1      1
20    2      4
21    3      9
22    4     16
23    5     25
24    6     36
25    7     49
26    8     64
27    9     81
28   10    100
29   11    121
30   12    144
31 ...(結果太多其他輸出省略) 
32  
33 */

國王獎勵麥子程序:

 1 /*wheat.c指數增長*/
 2 #include<stdio.h>
 3 #define SQUARES 64 //棋盤中的格子數量(64) 
 4 int main()
 5 {
 6     const double CROP=2E16;//世界小麥年產穀粒數
 7     double current,total;
 8     int count=1;//初始化
 9     
10     printf("square      grains        total     ");
11     printf("fraction of \n");
12     printf("            added         grains    ");
13     printf("world total\n");
14     total=current=1;//從第一顆穀粒開始 
15     printf("%4d %14.2e %12.2e %12.2e\n",
16             count,current,total,total/CROP);
17     while(count<SQUARES) 
18     {
19         count=count+1;
20         current=2.0*current;//下一個方格穀粒翻倍 
21         total=total+current;//更新總數 
22         printf("%4d %14.2e %12.2e %12.2e\n",
23                 count,current,total,total/CROP);
24     }
25     printf("That's all.\n"); 
26     
27     return 0;
28 }
29 /*
30 輸出樣例:
31 
32  square      grains        total     fraction of
33             added         grains    world total
34    1      1.00e+000    1.00e+000    5.00e-017
35    2      2.00e+000    3.00e+000    1.50e-016
36    3      4.00e+000    7.00e+000    3.50e-016
37    4      8.00e+000    1.50e+001    7.50e-016
38    5      1.60e+001    3.10e+001    1.55e-015
39    6      3.20e+001    6.30e+001    3.15e-015
40    7      6.40e+001    1.27e+002    6.35e-015
41    8      1.28e+002    2.55e+002    1.27e-014
42    9      2.56e+002    5.11e+002    2.55e-014
43   10      5.12e+002    1.02e+003    5.12e-014
44   11      1.02e+003    2.05e+003    1.02e-013
45   12      2.05e+003    4.10e+003    2.05e-013(省略了剩餘結果)
46 ...
47 That's all.
48 
49 */

除法運算符:

“/”表示除法運算符,/左側是被除數,右側是除數。

整數除法:整數除法得到的結果是整數。(整數除法得到結果后小數後面的結果會被丟棄,這稱之爲截斷。)

浮點數除法:浮點數除法得到的結果是浮點數。

 1 /*divide.c演示除法*/
 2 #include<stdio.h>
 3 int main()
 4 {
 5     printf("integer division: 5/4 is %d\n",5/4);
 6     printf("integer division: 6/3 is %d\n",6/3);
 7     printf("integer division: 7/4 is %d\n",7/4);
 8     printf("floating division: 7./4. is %1.2f\n",7./4.);
 9     printf("floating division: 7.0/4.0 is %1.2f\n",7.0/4.0);
10     printf("mixed division: 7./4 is %1.2f\n",7./4);
11     
12     return 0;
13  } 
14  /*
15 輸出樣例 
16 
17 integer division: 5/4 is 1
18 integer division: 6/3 is 2
19 integer division: 7/4 is 1
20 floating division: 7./4. is 1.75
21 floating division: 7.0/4.0 is 1.75
22 mixed division: 7./4 is 1.75
23  //在計算除法運算前,編譯器會把整數轉化成浮點數。
//編譯器不能真正用浮點數除以除數,編譯器會把兩個運算對象轉換成相同的類型。 24 */

運算符優先級:

運算符(優先級從高至低) 結合律
() 從左往右
+ -(一元) 從右往左
* / 從右往左
+ -(一元) 從左往右
= 從右往左

sizeof運算符和size_t類型:

 1 /*使用sizeof運算符*/
 2 #include<stdio.h>
 3 int main()
 4 {
 5     int n=0;
 6     size_t intsize;
 7     
 8     intsize=sizeof(int);
 9     printf("n=%d,n has %zd bytes;all ints has %zd bytes.\n",
10             n,sizeof n,intsize);
11     return 0;
12  } 
13  /*
14  輸出樣例 
15  
16  n=0,n has 4 bytes;all ints has 4 bytes.
17  
18  */

求模運算符:

“%”是求模運算符,只能適用于整數,不能用於浮點數。

13%5=2(也可以理解%的意思是取餘數);

把秒數轉換成分和秒:

 1 #define SEC_PER_MIN 60
 2 int main()
 3 {
 4     int sec,min,left;
 5     
 6     printf("Convert seconds to minutes and seconds!\n");
 7     printf("Enter the number of seconds (<=0 to quit):\n");
 8     scanf("%d",&sec);
 9     while(sec>0)
10     {
11         min=sec/SEC_PER_MIN;//
12         left=sec%SEC_PER_MIN;//
13         printf("%d seconds is %d minutes, %d seconds.\n"
14                ,sec,min,left);
15         scanf("%d",&sec);
16     }
17     printf("Done!\n");
18     return 0;
19 }
20 /*
21 輸出樣例 
22 
23 Convert seconds to minutes and seconds!
24 Enter the number of seconds (<=0 to quit):
25 600
26 600 seconds is 10 minutes, 0 seconds.
27 59
28 59 seconds is 0 minutes, 59 seconds.
29 123
30 123 seconds is 2 minutes, 3 seconds.
31 695
32 695 seconds is 11 minutes, 35 seconds.
33 0
34 Done!
35 
36 */

遞增和遞減運算符(++   --)

遞增運算符:++是一個變量自己在原有的基礎上增加1。

有兩種形式:

num++:在使用num的值后加1。

++num:在使用num的值前加1。

遞減運算符遞增運算符使用方法相同。

 

 

 

 優化shoes2.c程序:

 

 

 

 

 

 總而言之,n++“先使用n,在遞增”,++n“先遞增,再使用n”。

posted on 2022-12-21 14:24  KurokiTomoko  阅读(24)  评论(0编辑  收藏  举报