C语言第二次作业练习

以下程序教材基于 谭浩强C程序设计(第四版)

第1题 在Visual C++ 6.0环境中输入并运行例3.4。

/*此程序编写于2017年3月8日,目的:求三角形的面积*/

# include<stdio.h>
# include<math.h>

int main(void)
{
	double a,b,c,s,area;
	
	a=3.67;
	b=5.34;
	c=6.21;
	s=(a+b+c)/2;
	area=sqrt(s*(s-a)*(s-b)*(s-c));
	printf("a=%f\tb=%f\tc=%f\n",a,b,c);
	printf("area=%f\n",area);
	
	return 0;
}

/*如果想让用户自行决定三边大小则程序如下:

# include<stdio.h>
# include<math.h>

int main(void)
{
	double a,b,c,s,area;
	
	printf("请输入三角形三边之长,以逗号分隔\n");
	scanf("%lf,%lf,%lf",&a,&b,&c);
	s=(a+b+c)/2;
	area=sqrt(s*(s-a)*(s-b)*(s-c));
	printf("a=%f b=%f c=%f\n",a,b,c);
	printf("面积为=%lf\n",area);
	return 0;
}

*/

第2题 在Visual C++ 6.0环境中输入并运行例3.5。
/此程序编写于2017年3月8日,目的解一元二次方程/

# include<stdio.h>
# include<math.h>

int main(void)
{
	double a,b,c,disc,x1,x2,p,q;
	
	scanf("%lf%lf%lf",&a,&b,&c);
	disc=b*b-4*a*c;
	p=-b/(2.0*a);
	q=sqrt(disc)/(2.0*a);
	x1=p+q;
	x2=p-q;
	printf("x1=%7.2f\nx2=%7.2f\n",x1,x2);
	
	return 0;
}

/*将此程序更改为如下:更便捷
# include <stdio.h>
# include <math.h>

int main(void)
{
	double a, b, c, delta,x1,x2;
    char ch;
	
	do	
	{	
		printf("请输入一元二次方程的三个系数:\n");
		printf("a = ");
		scanf("%lf", &a);
		
		printf("b = ");
		scanf("%lf", &b);
		
		printf("c = "); 
		scanf("%lf", &c);
		
		delta = b*b - 4*a*c;
		
		if (delta > 0)
		{
			x1 = (-b + sqrt(delta)) / (2*a);
			x2 = (-b - sqrt(delta)) / (2*a);
			printf("有两个解,x1 = %5.2lf, x2 = %5.2lf\n", x1, x2);  //5.2的含义:指定数据占用5列,小数占用2列//
		}
		else if (0 == delta)
		{
			x1 = x2 = (-b) / (2*a);
			printf("有唯一解,x1 = x2 = %5.2lf\n", x1, x2);
		}
		else
		{
			printf("无实数解!\n");
		}

		printf("您想继续么(Y/N): ");
		scanf(" %c", &ch);      /*%c前面必须得加一个空格 原因要对应输入缓冲区中的换行这条scanf前面肯定还有别的输入语句,
								  因此,在它前面的输入语句执行时你输入后按的Enter键产生的换行会带到这条scanf里面。如果
								  %c前面没有空格,那么换行符将被%c接收。为避免这种情况,就改为加上一个空格再写%c了
                                  举个例子:如果你的程序中有
                                  scanf("%c",&a);
                                  scanf("%c",&b);
                                  你如果输入
                                  0(换行)
                                  1
                                  那变量a的值是'0',变量b的值是'\n'。如果第二个scanf的引号里是先加一空格再写%c,那么
		                          0和1之间的换行就被空格接收,后面的'1'会被空格后面的%c对应变量b接收,成为变量b的值
	} 
	while ('y'==ch || 'Y'==ch);
	
	return 0;
}
*/

第3题 在Visual C++ 6.0环境中输入并运行例3.8。

/*此程序编写于2017年3月8日,目的:在窗口输出BOY三个字符*/

# include<stdio.h>

int main(void)
{
	char a='B',b='O',c='Y';
	
	putchar(a);
	putchar(b);
	putchar(c);
	putchar('\n');

	return 0;
}

第4题 在Visual C++ 6.0环境中输入并运行例3.9。

/*此程序编写于2017年3月8日,目的:键入BOY
  并从窗口输出*/

# include<stdio.h>

int main(void)
{
	char a,b,c;
	
	a=getchar();
	b=getchar();
	c=getchar();
	putchar(a);
	putchar(b);
	putchar(c);
	putchar('\n');

	return 0;
}

第5题 在Visual C++ 6.0环境中输入并运行例3.10。

/*此程序编写于2017年3月8日,目的:键入大写字母将其转换为小写字母*/

# include<stdio.h>

int main(void)
{
	char c1,c2;
	
	c1=getchar();
	c2=c1+32;
	putchar(c2);
	putchar('\n');

	return 0;
}

第6题 教材P.84习题6

/* 此程序编写于2017年3月8日,目的China密码转换*/

# include<stdio.h>

int main(void)
{
	char c1='C',c2='h',c3='i',c4='n',c5='a';
	
	c1=c1+4;
	c2=c2+4;
	c3=c3+4;
	c4=c4+4;
	c5=c5+4;
	printf("用printf语句输出的结果为:");
	printf("%c%c%c%c%c\n",c1,c2,c3,c4,c5);
	printf("用putchar语句输出的结果为:");
	putchar(c1);
	putchar(c2);
	putchar(c3);
	putchar(c4);
	putchar(c5);
	printf("\n");
	
	return 0;
}

第7题 教材P.84习题7

# include<stdio.h>

int main(void)
{
	float h,r,l,s,p,q,z;
	float pi=3.141592;
	
	printf("请输入圆的半径r,圆柱的高h,中间以逗号隔开");
	scanf("%f,%f",&r,&h);
	l=2*pi*r;
	s=r*r*pi;
	p=4*pi*r*r;
	q=3.0/4.0*pi*r*r*r;
	z=pi*r*r*h;
	printf("圆的周长为:   %5.2f\n",l);
	printf("圆的面积为:   %5.2f\n",s);
	printf("圆球表面积为: %5.2f\n",p);
	printf("圆球的体积为: %5.2f\n",q);
	printf("圆柱的体积为: %5.2f\n",z);
	
	return 0;
}

第8题 从键盘读取两个平面上两个点的坐标(x1,y1),(x2,y2),坐标值为double类型,计算两点之间的距离。

/*此程序编写于2017年3月8日,目的:从键盘读取两个平面上两个点
  的坐标(x1,y1),(x2,y2),坐标值为double类型,计算两点之间的距离。*/

# include<stdio.h>
# include<math.h>

int main(void)
{
	double x1,x2,y1,y2,k;
    
	printf("请输入第一个点的坐标,中间以逗号隔开:\n");
	scanf("%lf,%lf",&x1,&x2);
	printf("请输入第二个点的坐标,中间以逗号隔开:\n");
	scanf("%lf,%lf",&y1,&y2);
	k=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
	printf("两点间的距离为=%5.2lf\n",k);
	
	return 0;
}

第9题 从键盘读取一个以元为单位的金额数字,小数点后保留两位数字(例如85.36),将该数字换算成元、角、分输出。

/*此程序编写于2017年3月8日,目的:从键盘读取一个以元为
  单位的金额数字,小数点后保留两位数字(例如85.36),
  将该数字换算成元、角、分输出。*/

# include<stdio.h>

int main(void)
{
	double yuan;
	int a,b,c;

	printf("请输入金额(元),保留两位小数\n");
	scanf("%lf",&yuan);
	a=(int)yuan;
	b=(int)(yuan*10)%10;
	c=(int)(yuan*100)%10;
	printf("=%d元%d角%d分\n",a,b,c);

	return 0;
}

第10题 从键盘读取一个double类型的数,对该数保留小数点后三位数字,对第四位小数四舍五入处理,输出处理过后的数。

/*此程序编写于2017年3月8日,目的:从键盘读取一个double类型的数,
  对该数保留小数点后三位数字,对第四位小数四舍五入处理,输出处理
  过后的数。*/

#include <stdio.h> 

int main(void) 
{ 
	double x; 
	
	printf("请输入数字:\n");
	scanf("%lf",&x); 
	x = (int)(1000.0*x+0.5)/1000.0; 
	printf("%0.3lf\n",x);
	
	return 0;
}

/*将程序改为如下即可循环:

  #include <stdio.h> 

int main(void) 
{ 
	double x; 
	char ch;
	
	do
	{
		printf("请输入数字:\n");
	    scanf("%lf",&x); 
	    x = (int)(1000.0*x+0.5)/1000.0; 
	    printf("%0.3lf\n",x);
		
		printf("您想继续么(Y/N):\n ");
		scanf(" %c", &ch);     
	}
	while ('y'==ch || 'Y'==ch);

	
	return 0;
}
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Johnny__Wang__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值