第三章练习题和习题错误合集

目录

练习3-3 统计学生平均成绩与及格人数

练习3-5 输出闰年 

习题3-5 三角形判断


到这里,也只是做完了《C语言程序设计(第3版)》题目集中第三章的练习题和习题,主要是对选择结构的练习。下面几点是个人在这些天的一些想法。

  • 对任何的一个小错误都要通过调试或者搜索去解决它,这不仅会培养自己的搜索能力,同时让自己熟悉debug。
  • 有一个认知问题:刚开始做题肯定慢,一定要耐住性子,做的多自然就快了。
  • 对于一个题目,如果看了十分钟还没有思路,可以直接看参考答案,看看别人是怎么解决的。做题的目的之一不就是见多识广嘛。就好像你看高手打王者一样,你只有见过了他的操作并学习,你才有可能自己用出来。
  • 语法学习只是学习过程中的一小部分,刷题才是提升的正确道路。刷题也要从基础的开始,到提升再到进阶。先让自己成为一个“中手”,学习数据结构才有可能成为“高手”。
  • 编程和天赋真的没什么关系,只要你肯努力。当然也要找到一条正确的学习路线。否则这条路可能走到一半就放弃了。
  • 吃一堑长一智,人都是在不断的试错中成长的。编程能力也是在不断的错误中慢慢提升的。

 

练习3-3 统计学生平均成绩与及格人数

在练习3-3 统计学生平均成绩与及格人数中,由于变量total初始化的时候没有赋值,但是后面又出现在赋值运算的右边参与运算,所以oj没有通过。好习惯:在定义变量的时候最好初始化。

#include <stdio.h>

int main()
{
	int number,grade,total = 0;
	double average;
	int cnt = 0;
	scanf("%d",&number);
	//printf("\n");
	if(number > 0){
		for(int i = 1;i <= number; i++){
		scanf("%d",&grade);
		total += grade;
		if(grade >= 60){
			cnt++; 
			}
		average = (1.0*total) / number;
		}
	}
	
	printf("average = %.1f\ncount = %d",average,cnt);
	
 	return 0;
 } 

练习3-5 输出闰年 

错把一个世纪当成1000年,我也是醉了。如图所示,oj给出的结果。遇到这种情况,应该去检查条件的边界值。

正确的程序如下所示

#include <stdio.h>

int main()
{
	int year;
	scanf("%d",&year);
	int cnt = 0;
	int i = 0;
	if(year > 2000 && year <= 2100)
	{
		for(i = 2001; i <= year; i++)
		{
			if(((i%4==0)&&(i%100!=0)) || (i%400==0))
			{
				printf("%d",i);
				cnt++;
				if(i < year)
				{
					printf("\n");
				}
			}
		}
		if(cnt == 0)
		{
			printf("None\n");
		}
	}
	else
	{
		printf("Invalid year!\n");
	}
	return 0;	
} 

习题3-5 三角形判断

  • 判断三角形成立的条件:任意两边之和都要大于第三边。如果有一个不成立,则不能构成三角形。
  • 利用海伦公式去计算三角形的面积。

#include <stdio.h>
#include <math.h>
 
int main()
{
 	double x1,y1,x2,y2,x3,y3;
 	double a,b,c,L,A;
 	scanf("%lf %lf %lf %lf %lf %lf",&x1,&y1,&x2,&y2,&x3,&y3);
 	
 	a=sqrt(pow((x1-x2),2)+pow((y1-y2),2) );
 	b=sqrt(pow((x1-x3),2)+pow((y1-y3),2) );
 	c=sqrt(pow((x3-x2),2)+pow((y3-y2),2) );
 	
 	if((a+b)<=c||(a+c)<=b||(c+b)<=a){
 		printf("Impossible");
 	}else{
 		L=a+b+c;
 		A=sqrt(0.5*L*(0.5*L-a)*(0.5*L-c)*(0.5*L-b));//海伦公式 
 		printf("L = %.2f, A = %.2f",L,A ); 
 	}
 	
 	
    return 0;
}
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

吾日叁問

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

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

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

打赏作者

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

抵扣说明:

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

余额充值