C語言程式設計第2章節練習題
練習2-1
溫度轉換:求華氏溫度150°F對應的攝氏溫度(計算公式為c=[5×(f-32)]/9)。
複習點:/ 符號為整除,當兩邊都是整數時,計算結果為整除結果,沒有小數部分。
當一邊或者兩邊不是整數時,就不是整除符號了,是平時正常除法符號,有小數部分。
#include<stdio.h>
int main()
{
int f;
double c;
f=150;
c=5.0/9*(f-32);
printf("fhar=%d,c=%.2f",f,c);
return 0;
}
練習2-3
計算物體自由下落的距離:一個物體從100m的高空自由落下,求它在前3s內下落的垂直距離。設重力加速度為10m/s2
h=gt2/2
複習點:一個數的平方可以用a*a來表示,也可以利用pow函式來解決,這個函式時間某個數的某次方,但要在主函式前宣告#include<math.h>
#include<stdio.h>
#include<math.h>
int main()
{
int t,h,g,s;
s=100;
g=10;
t=3;
h=s-g*pow(t,2)/2;
printf("t=%d,h=%d",t,h);
return 0;
}
練習2-5
計算攝氏溫度。輸入華氏溫度,輸出對應的攝氏溫度。(計算公式為c=[5×(f-32)]/9)。
#include<stdio.h>
int main()
{
int f;
double c;
printf("輸入華氏溫度:");
scanf("%d",&f);
c=5.0/9*(f-32);
printf("f=%d,c=%f",f,c);
return 0;
}
練習2-6
整數四則運算。輸入兩個正整數,計算並輸出它們的和、差、積、商。
複習點:/ 符號為整除,當兩邊都是整數時,計算結果為整除結果,沒有小數部分。
當一邊或者兩邊不是整數時,就不是整除符號了,是平時正常除法符號,有小數部分。
所以定義輸入的兩個整數時定義型別為double型。
#include<stdio.h>
int main()
{
int A,B,C;
double a,b,D;
printf("輸入兩個正整數:\n");
scanf("%lf,%lf",&a,&b);
A=a+b;
B=a-b;
C=a*b;
D=a/b;
printf("它們的和差積商分別為:\n");
printf("%d,%d,%d,%.2f",A,B,C,D);
return 0;
}
練習2-7
計算分段函式(判斷x是否為0)。輸入x,計算並輸出下列分段函式f(x)的值(保留1位小數)。
複習點:利用if-else語句實現,為0是一種情況,則不為0就是另一種情況。
#include<stdio.h>
int main()
{
double x,y;
printf("輸入x的值:\n");
scanf("%lf",&x);
if (x!=0)
y=1.0/x;
else
y=0;
printf("y=%.1f",y);
}
練習2-8
計算分段函式(判斷x是否小於0)。輸入x,計算並輸出下列分段函式f(x)的值(保留2位小數)。可包含標頭檔案math.h,並呼叫sqrt()函式求平方根,呼叫pow()函式求冪。
#include<stdio.h>
#include<math.h>
int main()
{
double x,y;
printf("輸入x:\n");
scanf("%lf",&x);
if (x<0)
y=pow(x+1,2)+2*x+1.0/x;
else
y=sqrt(x);
printf("y=%.2f",y);
return 0;
}
練習2-9
輸入兩個整數lower和upper,輸出一張華氏-攝氏溫度轉換表,華氏溫度的取值範圍是[lower,upper],每次增加2°F,計算公式為c=[5×(f-32)]/9。
複習點:利用for迴圈輸出轉換表,步長為2°F
int main()
{
int lower,upper,f;
double c;
printf("輸入溫度區間(正整數):\n");
scanf("%d,%d",&lower,&upper);
for (f=lower;f<=upper;f=f+2)
{
c=5/9.0*(f-32);
printf("f=%d,c=%.2f\n",f,c);
}
return 0;
}
練習2-10
輸入一個正整數n,計算序列1+1/2+1/3+····的前n項之和。
複習點:利用for迴圈控制計算前n項的和。
#include<stdio.h>
int main()
{
int i,n;
double sum;
printf("輸入正整數n:\n");
scanf("%d",&n);
sum=0;
for(i=1;i<=n;i++)
sum=sum+1.0/i;
printf("前n項和為:%f",sum);
return 0;
}
練習2-11
輸入一個正整數n,計算序列1+1/3+1/5+····的前n項之和。
#include<stdio.h>
int main()
{
int i,n;
double sum;
printf("輸入正整數n:\n");
scanf("%d",&n);
sum=0;
for (i=1;i<=n;i++)
sum=sum+1.0/(2*i-1);
printf("前n項和為:%f",sum);
return 0;
}
練習2-12
輸入一個正整數n,計算序列1-1/4+1/7-1/10+1/13-1/16+····的前n項之和。
複習點:分子永遠是1,分母是前一項的分母+3,每一項的正負性是前一項的相反。利用flag來改變符號的正負性。
#include<stdio.h>
int main()
{
int i,n,flag,den;
double item,sum;
printf("輸入正整數n:\n");
scanf("%d",&n);
flag=1;
den=1;
sum=0;
for(i=1;i<=n;i++)
{
item=flag*1.0/den;
sum=sum+item;
flag=-flag;
den=den+3;
}
printf("前n項和為:%f",sum);
return 0;
}
練習2-13
執行下列程式段,計算sum的值
#include<stdio.h>
int main()
{
int i,sum;
for(i=1;i<=10;i++)
{
sum=0;
sum=sum+i;
}
printf("sum=%d",sum);
return 0;
}
練習2-14
輸入一個正整數n,生成一張3的乘方表,輸出30-3n的值。可包含標頭檔案math.h,並呼叫pow()冪函式計算3的乘方。
在這裡插入程式碼片#include<stdio.h>
#include<math.h>
int main()
{
int i,n,p;
printf("輸入正整數n:\n");
scanf("%d",&n);
printf("3^0=1\n");
for (i=1;i<=n;i++)
{
p=pow(3,i);
printf("3^%d=%d\n",i,p);
}
return 0;
}
練習2-15
根據下列公式可以算出從幾個不同元素中取出m個元素(m<=n)的組合數。輸入兩個正整數m和n(m<=n),計算並輸出組合數。要求定義和呼叫fact(n),計算n!,函式型別是double。
#include<stdio.h>
double fact(int x);
int main()
{
int m,n,s;
double C;
printf("輸入兩個正整數m,n(m<=n):\n");
scanf("%d,%d",&m,&n);
if (m<=n)
{
s=n-m;
C=fact(n)/fact(m)*fact(s);
printf("C=%f",C);
}
else
printf("不正確的資料!\n");
return 0;
}
double fact(int x)
{
int i;
double p;
p=1;
for(i=1;i<=x;i++)
p=p*i;
return p;
}