【个人回顾】C语言程序设计-第三版-何钦铭主编-3

        写在开头:本文不以分享为目的,只是记录自己课程学习过程中觉得重要的部分知识点或者知识体系,以及可能存在的没有解决的问题,欢迎大家来进行交流和指正,其中ps部分为个人将其他学科与其构建联系的个人理解,因此也欢迎您能花费一部分时间帮我进行查漏补缺或者进行指点,学生拜谢。Orz
        ·本章内容同步于浙江大学何钦铭教授编写的第三版C语言程序设计中第三章的内容,包括课后习题自己所编写的代码将会放在最后。

正文部分

        通过前两章的学习,我们对C语言的基本内容有了初步的了解,可以使用三种基本结构来简单的设计和编写一些程序。在第三章中,我们需要展开来了解分支结构,同时学习相关表达式的用法。

本章要点

        1、什么是分支结构?作用是什么?

                答:分支结构是根据条件来选择要执行的语句,一般分为二分之结构和多分支结构。

        2、switch语句中break起什么作用?

                答:用break来跳出switch语句。

        3、逻辑运算和关系运算的相同之处是什么?它们之间又有什么不同?

                答:相同之处:都可以用来描述判断给定的条件。

                       不同之处:关系运算是用来比较大小,相等性的叫关系运算,返回逻辑真假值,逻

                                          辑运算是对一组逻辑真假值操作,根据逻辑表达式返回真假值

        4、字符型数据在内存中是如何存储的?

                答:通过ASCII码的形式来进行存储。

个人知识点总结部分

        1、书写时,采用多层缩进的书写格式,使程序层次分明。

        2、if语句可以省略else,也可以在else语句后继续嵌套if-else语句。else和if的匹配规则为else将会与最靠近它的、没有与其他else匹配过的if相匹配。

        3、输入double型数据需要用%lf来指代。

        4、运算符不是数值型而是字符型输入数据。字符型常指单个字符,用一对单引号及其所括起来的字符来表示。ASCII码表列出了所有可以使用的字符,一共256个,每个字符都有唯一的次序值,即ASCII码。注意区分数字和数字字符。在定义时,字符型变量需要用类型名 char。输入输出可以调用函数scanf(),printf(),getchar(),putchar(),格式控制说明为%c。要注意,getchar(),putchar()只能处理单个字符的输入和输出。

        5、switch语句可以简单、清晰的实现多分支选择,其两个或者多个常量表达式可以共用一个语句段。它的表达式和常量表达式的值一般是整型或者字符型,所有的常量表达式的值都不能相当,每个与局端可以包括任意条语句(包括空语句)。在语句中,default可以省略,省略了以后如果表达式的值与任何一个常量表达式的值都不相等时,就什么都不执行。break可以用来中止switch语句的继续执行,一般放在语句段最后,用于跳出正在执行的switch语句。因此灵活应用break语句可以减小程序的体量。

习题部分

        (选填部分均正确,就不放出了。)

1、比较大小:输入3个整数,按从小到大的顺序输出。试编写相应程序。

#include<stdio.h>
int main (void)
{
int a,b,c;
int max,min,mid;
printf("enter first number:");
scanf("%d",&a);
printf("enter second number:");
scanf("%d",&b);
printf("enter third number:");
scanf("%d",&c);
if(a>b&&a>c)
	{if(b>c)
{max=a;mid=b;min=c;}
else {max=a;mid=c;min=b;}}
else if(b>a&&b>c)
{	if(a>c)
{max=b;mid=a;min=c;}
else {max=b;min=a;mid=c;}}
else if(c>a&&c>b)
{if(a>b)
{	max=c;mid=a;min=b;}
	else 
	{max=c;mid=b;min=a;}}
else;
printf("%d<%d<%d\n",min,mid,max);

}

2.高速公路超速处罚:按照规定,在高速公路上行使的机动车,超出本车道限速的10%则处200元罚款;若超出50%,就要吊销驾驶证。请编写程序根据车速和限速自动判别对该机动车的处理。

#include<stdio.h>
int main (void)
{
	int a,b;
	double speed,limit;

		printf("enter the limit speed:");
	scanf("%lf",&limit);

	printf("enter ur speed:");
	scanf("%lf",&speed);

	a=limit*1.1;
	b=limit*1.5;
	if(speed>=a)
			if(speed>=b)	printf("吊销驾照\n");
			else printf("罚款200\n");
	else	printf("速度正常.\n");
	return 0;
}


3.出租车计价:某城市普通出租车收费标准如下:起步里程为3公里,起步费10元;超过起步里程后10公里内,每公里2元;超过10公里以上的部分加收50%的空驶补贴费,即每公里3元;营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。运价计费尾数四舍五入,保留到元。编写程序,输人行驶里程(公里)与等待时间(分钟),计算并输出乘客应支付的车费(元)。

#include<stdio.h>
int main (void)
{
int t,price;
double x,y,
sum;
printf("请输入行驶里程数x=");
scanf("%lf",&x);
printf("请输入等待时间数t=");
scanf("%d",&t);
y=price=sum=0;
if(x<=3)	y=10;
else if (x<13)y=2*x+4;
else y=3*x-9;
price=t/5;

sum= y + price ;

printf("总车费为%.2lf\n",sum);
}


4.统计学生成绩:输人一个正整数n,再输人n个学生的成绩,统计五分制成绩的分布。百分制成绩到五分制成绩的转换规则:大于或等于90分为A,小于90分且大于或等于80分为B,小于80分且大于或等于70为C,小于70分且大于或等于60为D,小于60分为E。试编写相应程序。

#include<stdio.h>
int main (void)
{
int i,n;
double grade;
printf("请输入学生数n=");
scanf("%d",&n);
printf("grade  rank");
for(i=1;i<=n;i++)
	{
			printf("请输入学生成绩:");
			scanf("%lf",&grade);
			if(grade>=60&&grade<70)	printf("%.2lf  D\n",grade);
	else	if(grade>=70&&grade<80)	printf("%.2lf  C\n",grade);
	else	if(grade>=80&&grade<90)	printf("%.2lf  B\n",grade);
	else	if(grade>=90&&grade<=100)	printf("%.2lf  A\n",grade);
	else	if(grade>100)	printf("Wrong grade!\n");
			else printf("%.2lf  E\n",grade);
			
	}
return 0;
}


5.三角形判断:输人平面上任意三个点的坐标(x1, y1)、(x2, y2)、(x3, y3), 人检验它们能否构成三角形。如果这3个点能构成一个三角形,输出周长和面积(保留2位小数);否则,输出“Impossible"。试编写相应程序。
        提示:在一个三角形中,任意两边之和大于第三边。三角形面积计算公式如下:

                area=\sqrt{s(s-a)(s-b)(s-c)},其中s=(a+b+c)/2

#include<stdio.h>
#include<math.h>
int main (void)
{	
	double x1,x2,x3,y1,y2,y3;//三个点的x和y坐标
	double a,b,c;	
	double C,S,s;

	printf("Enter  point 1(x1,y1):");
	scanf("%lf%lf",&x1,&y1);
	printf("Enter  point 2(x2,y2):");
	scanf("%lf%lf",&x2,&y2);
	printf("Enter  point 3(x3,y3):");
	scanf("%lf%lf",&x3,&y3);
	
	a=sqrt(pow(y2-y1,2)+pow(x2-x1,2));
	b=sqrt(pow(y3-y2,2)+pow(x3-x2,2));
	c=sqrt(pow(y1-y3,2)+pow(x1-x3,2));

	//设置断点printf("a=%fb=%fc=%f\n",a,b,c);

	if(a+b>c&&b+c>a&&a+c>b)
	/*断点	printf("It's  a triangle\n");
	else
		printf("It's not a triangle\n");*/
	C=a+b+c;
	s=C/2;
	S=sqrt(s*(s-a)*(s-b)*(s-c));
	printf("area=%f,C=%f",S,C);

return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值