数据的类型主要是int, double , float,这个据我所知在各类语言中表示符号都是这个,表示字符似乎有些不同,不过字符类型基本和算法无关,不多做讨论。
- int
内存大小4byte,所能存储的最大值为2147483647,最小值是-2147483648,也就是2^31-1和-2^31,为什么负的比正的多一,各家写的都不太好理解(都挺绕,有说废话的嫌疑,至少百度前几个都是),简而言之就是0在这里算数轴右半边,俩边加一起刚好是2^32,1byte=8bit,也就2^8,4byte也就2^(8*4),挺好懂。
另外的,在python中,要表示列表中的值时,左数第一个值是list[0],大概是同样的设计。
#include<stdio.h>
int main()
{
int a ;
scanf("%d",&a);
printf("%d",a);
return 0 ;
}
按照课本上的,自己尝试,输入比最大值更大的数,看看会输出什么。
- float & double
float是单精度浮点型,double是双精度浮点型,float存储4byte,double存储8byte。float最多可存储6位小数,也就是7位有效数字,double可最多存储15位有效数字(整段照搬百度)。这里注意的是浮点型输入输出的是 %nf (n表示小数点后保留位数)。
这一方面没有太多可思考的内容,算法竞赛中最为注意输出的结果,也就是输出的值,所以说浮点型的小数点位数需要关注,和我们中学时代做数学题老师一直有提醒注意题目要求的保留有效位数类似。
(分割线,下次我会做个好看点的图作为分割线)
- 鸡兔同笼
这是一道经典的算术题,印象里最早学习方程思想,老师就是拿这个做例题的。
今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?
设鸡的数量为x,兔的数量为y,开始求解,很简单。但是写代码时我们发现一个问题,如果写2x + 4y = 94 ; x + y = 35 , 是不行的。 我们都很清楚 , c/c++中 ”=“ 的意思是把右边的值赋给左边,这也就意味着未知量只能有一个,而且在左边。换句话说,算法就是在找一个合适的表达式,表达需要的值。
#include<stdio.h>
int main()
{
int c , r , l , h; //c=鸡的数量,r =兔子的数量,l表示足的数量,h表示头的数量
scanf("%d%d",&l,&h);
r = ( l - 2*h ) / 2 ;
c = h - r ;
printf("%d %d",c,r);
return 0 ;
}
这里需要注意的是输出函数中“% %”中的空格,如果没有会把俩个数在一起输出,比如输入“12 4”,输出的就是“22”,实际上我们要的是“2 2”,在竞赛中答案只有值,而且为了争取时间代码中也不需要注释,在平时使用时(平时用不到其实)当然可以用
printf ("the number of chicken is %d . nthe number of rabbits is %d", c,r)
以上,老实说我这次离开始太晚了,内容也不多。年轻人还是更努力点才是,我自己的学习还没有结束,这方面的学习还要继续。没有写确实是又被一些事耽搁,但终归是自己怠惰导致。
——2020/4/2