一、第一周
在第一周的四个学时的学习中,我对计算机、程序有了初步的认识。具体的收获如下:
1、信息:概率不为1的事件
2、冯诺伊曼的三句话奠定计算机的基础:
(1)数据存储需要二进制
(2)存储程序的工作原理
(3)计算机的五大组件:输入、存储、处理器(控制器、计算器)、输出
3、数位进制的换算:
(1)其他进制换算十进制:只需按照位权和基数展开(位数按照阶次相加即可)
(2)十进制换算其他进制:整数:除需要转换的进制,取余数,直到整数部分为0,从下往上写;小数:乘以需要转换的进制,取整数,剩余部分的小数继续乘,转换到题目要求的位次。
(3)二进制,八进制,十六进制为乘方关系,转换时可以按照位次进行等价替换。二进制转换八进制只需整数部分从后往前取三位合并,小数部分只需从前往后取三位合并,转换十六进制同理,只是为四位合并。
4、汇编语言,B语言(BASIC)、C语言都为面向对象的语言,是基于过程的语言,而Python是面向结果的语言,我们的老师有一个很形象的例子:要做一桌菜,C语言是从采购原料开始,买菜,切菜,炒菜,上桌;而Python更像是买回来半成品,加热后上桌。因此学会C语言,Python可以更快的学会学好,学C语言也可以更好地了解程序的运作原理,对今后我计划展开的研究(地质大数据处理)有很大的帮助。
5、课程教学演示使用的“翻译官”(即编译器)为VC++ 6.0,通过站内其他大佬的帮助,我找到了win10兼容的VC++ 6.0。老师所举的“翻译官”的例子我非常喜欢。即为了与计算机交流,我们可以利用”编译器“这个翻译官来和计算机交流。
6、C语言程序设计的核心语句:算法是程序的灵魂。我们要成为一名算法师而不是程序员。
希望我能在下一周的学习中收获更多有用的知识。
二、第二周
在周一的两个学时中,我学习了三个简单的C语言程序,老师对于代码的拆解与讲解十分细致,讲解顺序也是以一名初学者为例,通过在写程序的过程中解决一个个error,最后得到能够完美运行的程序。但这篇博客以总结为主,因此我想按照我的理解来对今天的程序进行归纳总结,而不是复刻老师的讲课的过程和PPT。
1、任何一个C语言有且只有一个“main”,即主函数。由于翻译的问题,个人认为这里的“function”应当翻译为主要功能。
要动用像是"printf"、“system”、“scanf”这样C语言自带功能的主函数,需要在头文件进行编译预处理,如:
#include<stdio.h> //编译预处理,即让这个程序包含“standard input&output”这个库,否则就会出现error 2065:undeclared indentifier 即未声明标识符。
2、“Hello world”程序解析拆解
#include <stdio.h>
#include<stdlib.h> //编译预处理,包含这个库
int main() //int为整数的意思定义主函数,括号中可放东西,操作对象
{ //开始程序执行
system("color F4"); //CMD窗口的颜色
printf("hello world"\n); //主函数的内容
system("pause"); //注意:这里的这个CMD暂停程序需要写在return 0之前,否则没有效果
return 0; //目的是为了防止随机数(垃圾数)的出现,导致程序崩溃,使程序更加规范
} //函数结束
作业1:通过C语言画一面迎风飘扬的红旗
3、C语言程序需要注意的三件事情:
- 1、英文输入法小写!
- 2、main()括号!
- 3、写完一个句子要加;
4、第二个程序:求两个整数之和
#include<stdio.h>
#include<stdlib.h>
int main()
{
printf("请输入两个数,空格间隔.\n");
int a,b,sum; //声明部分,命名三个抽屉为 a,b,c
scanf("%d%d",&a,&b); //输入变量的函数,&的意义是取地址,printf一定不要取地址
sum=a+b; //真正的运算
printf("sum = %d\n",sum); //%d是格式控制符,表示为十进制格式,\n是换行
system("pause"); //使结果能够停留在屏幕上面
return 0; /*返回函数值,有同学在这个位置出现了问题,个人理解 return值不应该影 响 输出结果,因为输出结果早在之前的printf中就已经输出了结果
这个return返回的是主函数的(?)值 ,有待商榷*/
作业二:做一个可以四则运算的计算器,可以同时输出加减乘除的数值
5、第三个程序:比较大小,让计算机自己做决定的程序
# include<stdio.h>
# include<stdlib.h>
int main() //定义主函数,即为主要的算法
{
printf("请输入两个数,逗号隔开\n"); //提示符
int max(int x,int y); //声明要调用该函数,max函数之后会定义
int a,b,c; //定义变量a,b,c
scanf("%d,%d",&a,&b); //输入函数,调用库里面的
c=max(a,b); //根据函数计算
printf("max=%d\n",c); //输出结果
system("pause"); //暂停能够看到
return 0; //主函数值归零
}
int max(int x,int y) //max函数定义
{
int z; //max函数声明部分
if(x>y)z=x;
else z=y;
return(z);
}
这个程序由两部分组成,第一部分是主函数,即我们使用的函数,第二部分为定义的max函数,因为max函数在库里面没有,需要自己定义。在编写这段程序时,发生了两个啼笑皆非的错误,放在这里供大家欣赏:
- 在执行程序时,发现”数字 空格 数字“始终输出的是前面的数字,后面复盘时发现,我们在输入函数(scanf)中的格式为:%d,%d,所以是逗号隔开的而不是空格隔开,空格隔开后应当默认是第一个数字,逗号,0了,所以输出的值始终是第一个数字。
- 之后我调试结束后,发现不报错,但是执行程序后输出值是一串数字,之后发现我竟然没有在主函数部分把”c=max(a,b)写上去,推测这样输出的值应当是c的地址
其他诸如忘记写分号,单词拼写错误(stdio,stdlib拼写成studio等等),中英文输入法等低级错误不必赘述,希望大家共勉,不要犯低级错误。(T-T)orz