C語言第三天


 

1.不好的表達式的例子

1 a=5;
2 c = (b=a+2) - (a=2);

c = (b = a+2) - (a=2);執行前和執行后有兩個時間點p1和p2(用C語言標准來說叫做Sequence Point)。本例中,子表達式(a=2)的副作用在p1和p2之間是不確定的(不確定該副作用已經發生,也就是說a的值變為2)。然后,標准有這么一段,

第二條規則說時間點p1前的值(舊值)只能被用作計算新值。本例中,子表達式(b=a+2)中b的新值是由a來確定的(2是常量,在此不考慮),而a所指定的值是p1前的值還是新值是不確定的(參見第一>段文字)。所以就有問題了。比如,clang編譯器會報警告。

如果非要寫成一行,可以寫做 c = (b = a+2, a=2, b-a); 因為操作符",", "||"和"&&"都對應一個序列點(Sequence Point)。

2.寫出以下代碼執行后,t1和t2的值,以空格隔開:

1 int a=14;
2 int t1 = a++;
3 int t2 = ++a;

正確答案:14 16

3.寫出以下表達式的結果,一個結果一行:

6 + 5 / 4 - 2
2 + 2 * (2 * 2 - 2) % 2 / 3
10 + 9 * ((8 + 7) % 6) + 5 * 4 % 3 * 2 + 3 
1 + 2 + (3 + 4) * ((5 * 6 % 7 / 8) - 9) * 10
正確答案:
5
2
44
-627

3.逆序的三位數:

程序每次讀入一個正三位數,然后輸出逆序的數字。注意,當輸入的數字含有結尾的0時,輸出不應帶有前導的0。比如輸入700,輸出應該是7。

提示:用%10可以得到個位數,用/100可以得到百位數...。將這樣得到的三個數字合起來:百位*100+十位*10+個位,就得到了結果。

注意:除了題目要求的輸出,不能輸出任何其他內容,比如輸入時的提示,輸出時的說明等等都不能。這道題目要求輸出逆序的數字,程序就只能輸出這個數字,除此之外任何內容都不能輸出。

輸入格式:

每個測試是一個3位的正整數。

輸出格式:

輸出逆序的數。

輸入樣例:

123

輸出樣例:

321

1 #include<stdio.h>
2 int main()
3 {
4     int a;
5     scanf("%d",&a);
6     printf("%d",a%10*100+a/10%10*10+a/100);
7     return 0;
8 }

4.厘米換算英尺英寸

如果已知英制長度的英尺foot和英寸inch的值,那么對應的米是(foot+inch/12)×0.3048。現在,如果用戶輸入的是厘米數,那么對應英制長度的英尺和英寸是多少呢?別忘了1英尺等於12英寸。

輸入格式:

輸入在一行中給出1個正整數,單位是厘米。

輸出格式:

在一行中輸出這個厘米數對應英制長度的英尺和英寸的整數值,中間用空格分開。

輸入樣例:

170

輸出樣例:

5 6
 1 #include<stdio.h>
 2 int main()
 3 {
 4     int cm=0;
 5     scanf("%d",&cm);
 6     int foot = cm / 30.48;
 7     int inch = ((cm / 30.48) - foot)*12;
 8     printf("%d %d",foot,inch);
 9     return 0;
10  } 

5.計算攝氏溫度

給定一個華氏溫度F,本題要求編寫程序,計算對應的攝氏溫度C。計算公式:C=5×(F−32)/9。題目保證輸入與輸出均在整型范圍內。

輸入格式:

輸入在一行中給出一個華氏溫度。

輸出格式:

在一行中按照格式“Celsius = C”輸出對應的攝氏溫度C的整數值。

輸入樣例:

150
 

輸出樣例:

Celsius = 65
 1 #include<stdio.h>
 2 int main()
 3 {
 4     int F;
 5     int C=0;
 6     scanf("%d",&F);
 7     C=5*(F-32)/9;
 8     printf("Celsius = %d",C);
 9     return 0;
10  } 

6.是不是太胖了

據說一個人的標准體重應該是其身高(單位:厘米)減去100、再乘以0.9所得到的公斤數。已知市斤的數值是公斤數值的兩倍。現給定某人身高,請你計算其標准體重應該是多少?(順便也悄悄給自己算一下吧……)

輸入格式:

輸入第一行給出一個正整數H(100 < H ≤ 300),為某人身高。

輸出格式:

在一行中輸出對應的標准體重,單位為市斤,保留小數點后1位。

輸入樣例:

169
 

輸出樣例:

124.2
 1 #include<stdio.h>
 2 int main()
 3 {
 4     int H;
 5     double W; 
 6     scanf("%d",&H);
 7     W=(H-100)*0.9*2;
 8     printf("%.1f",W);
 9     return 0;
10  } 

 7.求整數均值

本題要求編寫程序,計算4個整數的和與平均值。題目保證輸入與輸出均在整型范圍內。

輸入格式:

輸入在一行中給出4個整數,其間以空格分隔。

輸出格式:

在一行中按照格式“Sum = 和; Average = 平均值”順序輸出和與平均值,其中平均值精確到小數點后一位。

輸入樣例:

1 2 3 4
 

輸出樣例:

Sum = 10; Average = 2.5
 1 #include<stdio.h>
 2 int main()
 3 {
 4     int a,b,c,d;
 5     int Sum=0;
 6     double Average;
 7     scanf("%d %d %d %d",&a,&b,&c,&d);
 8     Sum = a+b+c+d;
 9     Average = Sum / 4.0;
10     printf("Sum = %d; Average = %.1f",Sum,Average);
11     return 0;
12  } 

8.算術入門之加減乘除

對於輸入的兩個整數,按照要求輸出其和差積商。

輸入格式:

在一行內輸入兩個不超過100的非負整數a和b,中間以一個空格間隔,且保證b不為0。

輸出格式:

共四行,格式是:

[a] + [b] = [a+b] [a] - [b] = [a-b] [a] * [b] = [a*b] [a] / [b] = [a/b] 
 

其中,帶有方括號的內容(如[a][b][a+b]等)表示相應整數或運算結果的值,在輸出時要用實際的值代替。

並且:如果a能夠被b整除,那么a/b應輸出為整數格式,否則a/b輸出為帶兩位小數的格式。

提示:注意表達式中的空格。

輸入樣例1:

6 3

輸出樣例1:

6 + 3 = 9
6 - 3 = 3
6 * 3 = 18
6 / 3 = 2
 

輸入樣例2:

8 6 
 

輸出樣例2:

8 + 6 = 14 8 - 6 = 2 8 * 6 = 48 8 / 6 = 1.33
 1 #include<stdio.h>
 2 int main()
 3 {
 4     int a,b;
 5     scanf("%d%d",&a,&b);
 6     if(a>100||b>100||b==0)
 7     return 0;
 8     printf("%d + %d = %d\n",a,b,a+b);
 9     printf("%d - %d = %d\n",a,b,a-b);
10     printf("%d * %d = %d\n",a,b,a*b);
11     if(a%b==0)
12     printf("%d / %d = %d\n",a,b,a/b);
13     else
14     {
15         float a1=a;//float是四個字節和int一樣  float和int可以進行強制類型轉換 
16         float b1=b;//double是八個字節 
17         printf("%.0f / %.0f = %0.2f\n",a1,b1,a1/b1);
18     }
19     return 0;
20  } 

9.計算時間差

輸入兩個時間,每個時間分別輸入小時和分鍾的值,然后輸出兩個時間之間的差,也可以幾小時幾分表示

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int hour1;
 5     int hour2;
 6     int minute1;
 7     int minute2;
 8     scanf("%d %d",&hour1,&minute1);
 9     scanf("%d %d",&hour2,&minute2);
10     int ih = hour2-hour1;
11     int im = minute2-minute1;
12     if(im <0)
13     {
14         im = 60 + im;
15         ih --;
16     }
17     printf("時間差是%d小時%d分",ih,im);
18 }

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM