航电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)

发布了37 篇原创文章 · 获赞 10 · 访问量 733

猜你喜欢

转载自blog.csdn.net/qq_43608850/article/details/104362628