1. 程式人生 > 其它 >C語言程式設計第2章節練習題

C語言程式設計第2章節練習題

技術標籤:C語言章節練習題c++c語言

練習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位小數)。
y=f(x)=

複習點:利用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;
 }