代码改变世界

2017-2018-1 20179226 《从问题到程序》第3周学习总结

2017-12-10 10:04  20179226任逸飞  阅读(198)  评论(1编辑  收藏  举报

教材学习知识点总结

  • 变量的命名除了不能用关键字作为变量外,可以用任何标识符作为变量名。
  • 将关键字void放在函数头部写返回值类型的位置,就表示定义的是一个不返回值的函数。
  • 关系表达式成立时求出的值是1,关系不成立时值是0,关系运算符优先级低于所有算术运算符。
  • for语句中缺第一个或第三个表达式表示不做那部分动作,缺第二个表达式表示循环条件为1,也就是一个条件始终为真的循环。这种循环不会因为条件检测而终止。
  • .for循环中,for(i=1;i<=20;i++)和for(i=1;i<=20;++i)程序意义不会改变,提倡使用++i。
  • 逗号运算符是优先级最低的运算符,形式为:表达式1,表达式2。例如:for(sum=0,n=1;n<=100;n++)
  • enum定义只能定义表达整数的常量,比如NUM=10;。
  • scanf语句必须有&,且不会做值的类型转换
  • printf中double类型对应的是%f,scanf中double类型对应的是%lf。
  • putchar()把一个字符送到标准输出。getchar()是无参函数,典型使用是n=getchar()例如:
c=getchar();
putchar(c);
  • 变量有四个属性:变量的名字,变量的类型,变量的存储位置和变量的值。
  • 每个else部分总属于前面最近的那个缺少对应的else部分的if语句。
  • 几个问题:
    1.5>=3>=2输出的值是0。
    2.n=4;n++,m=++n;n的值是6。
    3.n=3;m=(n++>2)?n+5:n-1;最后n的值是4,m的值是9。

教材学习中的问题和解决过程

  • 问题1:while()语句如果是while(1<=x<=2)可不可以?
  • 问题1解决方案:while(1<=x<=2)等价于while(1<=(x<=2));所以,只要x<=2成立,结果就是真1<=1必然也成立。要想满足要求的话将while(1<=x<=2);修改成while(x>=1&&x<=2);就好了。
  • 问题2:for(sum=0,i=1;i<=100;i++,sum += n*n);为什么有两个逗号?
  • 问题2解决方案:逗号表达式并不是只能有两个表达式,可以有n个,取最后一个的值为整个表达式的值。
  • 问题3:void main()和int main(void)的区别
  • 问题3解决方案:main后面的括号是参数表的意思,空括号则表示main没有参数。实际上main是程序的入口点,所有执行代码的起点。
    1)区别是main()函数是否有返回值。
    2)void定义的函数没有返回值,int定义的函数返回整型值。
    3)void,字面意思是“无类型”,常用在程序编写中对定义函数的参数类型、返回值、函数中指针类型进行声明,有注释和限制程序的作用。
  • 问题4:变量名的命名规则书上说变量的命名除了不能用关键字作为变量外,可以用任何标识符作为变量名。那-abc还有pp.288这种命名方式可以么?
  • 问题4解决方案:百度上说变量名必须遵从以下规则:
    1)首字母必须为字母(a-z A-Z),下划线(),或者美元符号($)开始。
    2)变量名只能是字母(a-z A-Z),数字(0-9),下划线(
    )的组合,并且之间不能包含空格,数字不能放在变量名首位。
    3)不能使用关键字。