目录
到这里,也只是做完了《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;
}