第五次上机作业

作业1.1:C语言标准库的目的是什么?编写一个小程序,说明如何使用标准库里的数学函数;
目的:它是由编译程序根据一般用户的需要编制并提供用户使用的一组程序。C的库函数极大地方便了用户,同时也补充了C语言本身的不足。这样既可以提高程序的运行效率,又可以提高编程的质量。

  1. #include<stdio.h>
  2. int main()
  3. {
  4. printf("如何使用标准库里的数学函数?\n首先,在编辑代码前输入#include<math.h>头文件名\n之后在使用函数时调出相应函数即可\n\n");
  5. printf("常用的数学函数:\n三角函数\ndouble sin (double); 正弦\ndouble cos (double); 余弦\ndouble tan (double); 正切");
  6. printf("\n反三角函数\ndouble asin (double); 结果介于[-PI/2,PI/2]\ndouble acos (double); 结果介于[0,PI]\ndouble atan (double); 反正切(主值)");
  7. printf("\n其他常用函数\n\ndouble log ( double ); 以e为底的对数\ndouble log10 ( double ); 以10为底的对数\nint abs( int I ); 求整型的绝对值\ndouble fabs ( double ); 求浮点的绝对值\ndouble pow( double x,double y); 以x为底数的y次幂\ndouble fmod ( double,double ); 返回两参数相除的余数\n ");
  8. }
#include<stdio.h>
int main()
{
	printf("如何使用标准库里的数学函数?\n首先,在编辑代码前输入#include<math.h>头文件名\n之后在使用函数时调出相应函数即可\n\n");
	printf("常用的数学函数:\n三角函数\ndouble sin (double);      正弦\ndouble cos (double);      余弦\ndouble tan (double);      正切");
	printf("\n反三角函数\ndouble asin (double);         结果介于[-PI/2,PI/2]\ndouble acos (double);         结果介于[0,PI]\ndouble atan (double);         反正切(主值)");
	printf("\n其他常用函数\n\ndouble log ( double );         以e为底的对数\ndouble log10 ( double );       以10为底的对数\nint abs( int I );              求整型的绝对值\ndouble fabs ( double );        求浮点的绝对值\ndouble pow( double x,double y);    以x为底数的y次幂\ndouble fmod ( double,double );     返回两参数相除的余数\n ");

}


作业1.2:用一个程序计算下面两个表达式的值;

  1. #include<stdio.h>
  2. int main()
  3. {
  4. float a,b;
  5. a=234.0/(1.0+257.0);
  6. b=1065.0/(24+13);
  7. printf("234/(1+257)=%f\n1065/(24+13)=%f\n",a,b);
  8. }
#include<stdio.h>
int main()
{
	float a,b;
	a=234.0/(1.0+257.0);
	b=1065.0/(24+13);
	printf("234/(1+257)=%f\n1065/(24+13)=%f\n",a,b);
}


作业1.3:利用C标准库里的数学函数<math.h>,用一个程序计算下面两个表达式的值;

  1. #include<stdio.h>
  2. #include<math.h>
  3. #define PI 3.1415926
  4. #define e 2.718281828459
  5. int main()
  6. {
  7. double a,b;
  8. a= log(pow(2.0*PI-1.0,1.0/2.0))/log(5.0);
  9. b= pow(e,pow(PI+1.0,1.0/2.0));
  10. printf("%lf\n%lf\n",a,b);
  11. }
#include<stdio.h>
#include<math.h>
#define PI 3.1415926
#define e 2.718281828459 
int main()
{
	double a,b;
	a= log(pow(2.0*PI-1.0,1.0/2.0))/log(5.0);
	b= pow(e,pow(PI+1.0,1.0/2.0));
	printf("%lf\n%lf\n",a,b);
}

作业2提示:
人们在程序设计实践中总结出三种基本流程,即顺序执行、选择执行和重复执行模式。如下图所示:
..
作业2:请根据你对三种模式的理解,在一个程序中分别写出三段代码模拟这三种模式。

代码为求区间中奇数合:包含三种模式


  1. #include<stdio.h>
  2. int prime(int m, int n)
  3. {
  4. int sum=0;
  5. for(int i=m;i<=n;i++)
  6. {
  7. if(i%2==0)
  8. continue;
  9. sum=sum+i;
  10. }
  11. return sum;
  12. }
  13. int main()
  14. {
  15. int x, y;
  16. printf("Input two number:");
  17. scanf("%d %d",&x,&y);
  18. printf("%d\n",prime(x, y));
  19. }
#include<stdio.h>  
int prime(int m, int n)  
{  
    int sum=0;  
    for(int i=m;i<=n;i++)  
    {  
        if(i%2==0)  
            continue;  
        sum=sum+i;  
    }  
    return sum;  
}  
  
  
int main()  
{  
    int x, y;  
    printf("Input two number:");  
    scanf("%d %d",&x,&y);  
    printf("%d\n",prime(x, y));  
}  


作业3.1:下面例子有两个if,请说明 else 部分属于哪个 if ? 为什么?
if (x > 0)
if (y > 1) z = 1;
else z = 2;

答:else属于第二个if,C 语言规定,每个else 部分总属于前面最近的那个缺少对应的 else 部分的 if语句。

作业3.2:上面的例子没问题,但容易造成误解,请修改写法,使其易理解、更容易体现嵌套关系。
改写如下:

if(x.>0)

{

if(y>0)

z=1;

else

z=2;

}

作业4:请根据你对循环的理解,在一个程序中先写一段while循环代码;再用for语句重写“while循环”代码;

  1. #include<stdio.h>
  2. int main()
  3. {
  4. int a=0,b=0;
  5. while(a<10)
  6. a++;
  7. printf("%d\n",a);
  8. for(b;b<10;b++)
  9. {
  10. }
  11. printf("%d\n",b);
  12. }
#include<stdio.h>
int main()
{
	int a=0,b=0;
	while(a<10)
		a++;
	printf("%d\n",a);
	for(b;b<10;b++)
	{
	}
	printf("%d\n",b);
}


作业5.1:定义一个计算圆面积的函数,并在主函数中调用两次,从而分别计算两个不同圆的面积;

  1. #include<stdio.h>
  2. double S(double x)
  3. {
  4. double a;
  5. a=3.1415926*x*x;
  6. return a;
  7. printf("%lf",a);
  8. }
  9. int main()
  10. {
  11. double a,b;
  12. printf("请输入2个数字(带小数点):");
  13. scanf("%lf %lf",&a,&b);
  14. S(a);
  15. S(b);
  16. printf("%lf\n%lf\n",S(a),S(b));
  17. }
#include<stdio.h>

double S(double x)
{
	double a;
	a=3.1415926*x*x;
	return a;
	printf("%lf",a);
}

int main()
{
	double a,b;
	printf("请输入2个数字(带小数点):");
	scanf("%lf %lf",&a,&b);
	S(a);
	S(b);
	printf("%lf\n%lf\n",S(a),S(b));
}


作业5.2:下面的例子程序可以正常通过编译,但执行时却得不到正确结果。也就是说,这个程序有语义错误。为什么呢?

函数对参数有明确的类型要求,当实参表达式的计算结果类型与函数要求不符时,又出现了类型问题。C 语言规定,在出现这种情况时,先把实参求出的值自动转换为函数所要求类型的值,然后再送给函数去计算。

作业6:定义一个三角形面积函数,在主函数中调用5次。

  1. #include<stdio.h>
  2. #include<math.h>
  3. double S(double a,double b,double c)
  4. {
  5. double d;
  6. d=a*b*sin(c/180.0*3.14)/2.0;
  7. return d;
  8. }
  9. int main()
  10. {
  11. double a,b,c;
  12. for(int i=0;i<5;i++)
  13. {
  14. printf("请输入第%d组三角形的参数(两边长和双边夹角):",i);
  15. scanf("%lf %lf %lf",&a,&b,&c);
  16. S(a,b,c);
  17. printf("第%d组三角形的实参为:边长A %.2lf 边长B %.2lf 夹角 %.2lf\n",i,a,b,c);
  18. printf("第%d组的面积为:%.2lf\n",i,S(a,b,c));
  19. printf("------------------分割线------------------\n");
  20. }
  21. }
#include<stdio.h>
#include<math.h>

double S(double a,double b,double c)
{
	double d;
	d=a*b*sin(c/180.0*3.14)/2.0;
	return d;
}

int main()
{
	double a,b,c;
	for(int i=0;i<5;i++)
	{
		printf("请输入第%d组三角形的参数(两边长和双边夹角):",i);
		scanf("%lf %lf %lf",&a,&b,&c);
		S(a,b,c);
		printf("第%d组三角形的实参为:边长A %.2lf  边长B %.2lf  夹角 %.2lf\n",i,a,b,c);
		printf("第%d组的面积为:%.2lf\n",i,S(a,b,c));
		printf("------------------分割线------------------\n");
	}
}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值