航電OJ C語言-實驗4

1. (10分) c-lab4-1 求e的近似值

題目描述
自然常數e可以用級數
1+1/1!+1/2!+…+1/n!
來近似計算。從鍵盤輸入精度要求

輸入描述
從鍵盤輸入精度要求(double型)

輸出描述
輸出e的近似值

輸入樣例
0.000001
0.001

輸出樣例
e=2.7182818011
e=2.7182539683

用戶代碼


#include<stdio.h>
int main()
{
	double a=1,b,i,j=1,e=1;
	scanf("%lf",&b);
	while(a>=b)
	{
		a=1;
	  for(i=1;i<=j;i++)
	  {
		  a=a*1.0/i;
	  }
	     e=e+a;
		 j++;
	}
	printf("e=%.10f",e);
}

最後保存時間: 2019-11-18 17:56:17

本題得分:10分(2/2)
查看最新評判結果

2. (15分) c-lab4-2 分解質因數

題目描述
將一個正整數分解質因數。例如:輸入90,打印出90=233*5。

提示:對n分解質因數,應先找到一個最小的質數k,然後按下述步驟完成:
(1)如果這個質數恰等於n,則說明分解質因數的過程已結束,打印出即可。
(2)如果n!=k,但n能被k整除,則應打印出k的值,並用n除以k的商,作爲新的正整數n,重複執行第一步。
(3)如果n不能被k整除,則用k+1作爲k的值,重複執行第一步。

輸入描述
從鍵盤輸入任意一個合數,如輸入90

輸出描述
輸出90=233*5

輸入樣例
60

輸出樣例
60=223*5

用戶代碼

#include<stdio.h>
int main()
{
	int k=2,n;
	scanf("%d",&n);
	printf("%d=",n);
	while(n>=k)
	{
	if(n==k)
	  {
		printf("%d",k);break;
	  }
	else if(n!=k)
	  {
		  if(n%k==0)
		  {
			  printf("%d*",k);
			  n=n/k;
		  }
		  else if(n%k!=0)
		  {
			  k++;
		  }
	  }
	}
  return 0;
}

最後保存時間: 2019-11-18 19:35:58

本題得分:15分(2/2)
查看最新評判結果

3. (15分) c-lab4-4 分數統計

題目描述
某位老師需要分別統計若干個班某項考試的平均分,但每個班的人數都不相同(人數由鍵盤輸入),請寫個程序輔助他儘快完成任務。如果輸入的成績不在[0,100]範圍內,則重新輸入
要求保留兩位小數。

輸入描述
由鍵盤輸入n+1個數,其中第一個數爲班級學生人數如3,其後n個整數爲這n個學生的成績(如78 89 90)。如果學生成績不在[0,100]範圍,重新輸入。

輸出描述
輸出這個班的平均成績(保留兩位小數)

輸入樣例
//以下爲多組測試數據
3 78 89 90
7 80 76 89 56 95 109 78 94

輸出樣例
//以下爲多組數據對應的輸出
該班的平均分爲:85.67(英文標點)
該班的平均分爲:81.14

用戶代碼

#include<stdio.h>
int main()
{
	double i,a,b,s=0,avg;
	scanf("%lf",&a);
	for(i=1;i<=a;i++)
	{
		scanf("%lf",&b);
		if(b<0||b>100)
		{
			while(b<0||b>100)
				scanf("%lf",&b);
		}
		s=s+b;
	}
	avg=s/a;
	printf("該班的平均分爲:%.2f",avg);
  return 0;
}

最後保存時間: 2019-11-18 20:21:44

本題得分:15分(3/3)
查看最新評判結果

4. (15分) c-lab4-3 空心矩形

題目描述
根據用戶輸入的整數長度和寬度,用星號”*”畫出一個空心矩形。

輸入描述
從鍵盤輸入長度和寬度

輸出描述
空心矩形

輸入樣例
3 6

輸出樣例



用戶代碼


#include<stdio.h>
int main()
{
	int a,b,i,j;
	scanf("%d%d",&a,&b);
	for(i=1;i<=a;i++)
	{
		if(i==1)//打印第一行
		{
			for(j=1;j<=b;j++)
			printf("*");
			printf("\n");
		}
		if (1<i&&i<a)//打印中間的空心行
		{
			printf("*");
			for(j=1;j<=b-2;j++)
				printf(" ");
			printf("*\n");
		}
		if(i==a)//打印最後一行
		{
            for(j=1;j<=b;j++)
			printf("*");
		}
	}
  return 0;
}

最後保存時間: 2019-11-18 20:52:14

本題得分:15分(3/3)
查看最新評判結果

5. (15分) c-lab4-5 迭代法求a的平方根.

題目描述
不使用庫函數sqrt(),用迭代法求a的平方根.(教材P138頁,題13)
迭代公式見教材P138頁,題13
要求前後兩次求出的x的差的絕對值小於10的負6次方。
提示:初始的xn由程序員指定。

輸入描述
從鍵盤輸入一個正整數a

輸出描述
輸出該數的平方根

輸入樣例
100
120

輸出樣例
100.00的平方根爲:10.00
120.00的平方根爲:10.95

用戶代碼

#include<stdio.h>
#include<math.h>
int main() 
{
	double x1, x2;
	double a;
	scanf("%lf",&a);
	x2=1.0;
	for(;;) 
	{
		x1=x2;
		x2=(x1+a/x1)/2.0;
		if (fabs(x1 - x2)<0.000001) 
		 {                      
			printf("%.2f的平方根爲:%.2f",a,x2);
			break;
		}
	}
	return 0 ;
}

最後保存時間: 2019-11-18 21:06:57

本題得分:15分(2/2)
查看最新評判結果

6. (15分) c-lab4-6 求階乘的和

題目描述
從鍵盤輸入一個正整數,求1!+2!+3!+4+…+n!之和

輸入描述
輸入一個正整數n

輸出描述
求1!至n!之和

輸入樣例
//以下爲多組測試數據
3
20

輸出樣例
//以下爲多組數據對應的測試結果
9.000000e+000
2.561327e+018

用戶代碼


#include<stdio.h>
int main() 
{
	double n,a=1,s=0;
	int i,j;
	scanf("%lf",&n);
	for(i=1;i<=n;i++)
	{
		a=1;
		for(j=1;j<=i;j++)
			a=a*j;
		s=s+a;
	}
	printf("%e",s);
	return 0 ;
}

最後保存時間: 2019-11-18 21:20:46

本題得分:15分(2/2)
查看最新評判結果

7. (15分) c-lab4-7 判斷素數

題目描述
從鍵盤輸入一個整數,判斷是否爲素數

輸入描述
輸入一個整數

輸出描述
輸出該數是否爲素數

輸入樣例
-10
10
23

輸出樣例
-10<=0
10 is not a prime number
23 is a prime number

用戶代碼


#include<stdio.h>
int main() 
{
	int a,i,flag;
	scanf("%d",&a);
	if(a<=0)
		printf("%d<=0",a);
	else
	{
	for(i=2;i<=a-1;i++)
	{
		if(a%i==0)
		{
			flag=1;break;
		}
		else
			flag=0;
	}
	if(flag==0)
		printf("%d is a prime number",a);
	if(flag==1)
		printf("%d is not a prime number",a);
	}
	return 0 ;
}

最後保存時間: 2019-11-18 21:39:45

本題得分:15分(3/3)

發佈了23 篇原創文章 · 獲贊 11 · 訪問量 1619
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章