编程最快的入门方法就是实践,实践,再实践,所需要不停的敲代码,不要怕错,错了就好好找找原因在哪里

 

刚开始不懂程序中的每段代码代表的含义也没关系,先从懂得 地方入手,然后不断对程序就行改进,达到自己的目的。

算法竞赛中:它有三部曲,输入、计算、输出,因为是计算机只判别结果,只要最终的输出结果与题目给的不一致,就是 错误的

 

1、算术表达式

程序一:实现两个数字的加法 A + B

分析:输入两个数字,让计算机进行加法运算,然后输出两个数字之和

程序(C语言解决)

#include<stdio.h>
int main()
{
    int a,b;
    scanf("%d %d",&a,&b);
    printf("%d",a+b);
    return 0;
}

 

这只是源程序,并不能帮助我们达到预期的结果,所以需要借助 dev cpp 软件(可以把上述源代码编译成计算机能够识别的机器码),然后编辑器告诉我们 0(errors),0(warming),点击运行就会出现黑框框,我们 输入1 和 2,之间用空格隔开,然后就可以得到输出的结果 3,然后这个程序放到竞赛系统里,也和我们在编辑器里的一致,说明这个问题你就解决了

 

算法竞赛知识点梳理_浮点数

问题思考:我们将程序改改,我们将 a + b 改为 a - b ,a x b,a÷b

 

然而我们发现前面两个很容易解决,后面的乘除就不能解决,其实C语言中这种表达式分别用 “*” 与 “/” 代表 乘法除法,不要问我

为什么这么打,你应该去问 C语言之父 — 丹尼斯·里奇

前面a - b , a * b,没有什么问题,到了除法就不对了。我们试试 8 ÷ 48 ÷ 5 这两个表达式。

前者结果是 2 ,后者结果是1,为1的是因为C语言中的除号用的是整除,通俗点就是小数点后面的数字省略

 

2、计算并输出8/5的值,保留小数点后一位

源程序

#include<stdio.h>
int main()
{
    printf("%.1f\n",8.0/5.0);
    return 0;
}

PS:百分号后为小数点,小数点后面为数字1,1后面为字母f,C语言中注意区分大小写

其实小数点后面的 1 代表保留1位小数,如果改为2 ,则为保留两位小数,输出结果是 1.60

 

如果我们去掉小数点与1,只留下  f  ,会发生什么呢?

答案如下:

算法竞赛知识点梳理_C_02

 

我们源程序中的 %.1f 不变,改改后面的数字看看

#include<stdio.h>
int main()
{
    printf("%.1f\n",8/5);
    return 0;
}

然而结果变成了 0.0

 

我们再试试把 %.1f 改成 %d,后面 8.0/5.0 不变是什么结果,我们再看看

算法竞赛知识点梳理_#include_03

这些实例告诉我们,整数值要用%d输出,实数(浮点数)用%f 输出

像之前的1 + 2,还有 8 / 5 这样的运算,我们要考虑它们运算的结果是整数还是浮点数

小总结:比如上面的 8 / 4 ,也就是 整数 / 整数 = 整数,但如果是  8.0 / 5.0 ,浮点数  /  浮点数  =  浮点数

这样的结论同样适用于 加法 ,减法,乘法,只不过并不像除法这样容易出错罢了

 

3、复杂表达式的运算

我们先看一个比较复杂的算式程序

#include<stdio.h>
#include<math.h>
int main()
{
    printf("%.8f\n",2-(2*sqrt(3))/(3-0.1));  //sqrt代表开方
    return 0;
}

相必很多读者也可以猜到我们计算的是这个式子算法竞赛知识点梳理_C_04 

第一个问题:多出来的math.h 是数学库函数,我们用的  sqrt(开方)函数就是调用  math.h 库中的

第二个问题: 3 - 0.1 是整数  - 浮点数码?实际上计算机是把3变成 3.0 然后进行运算           

 

总结:

今天介绍了一些简单加减乘除的基本运算还有复杂运算,其实最终的竞赛只看结果,不会看过程,错一点都不行,可能一个小数点的问题就会引起很大的麻烦,所以从一开始就约束自己有一个良好的编程规范,能给自己减少很多问题!!!