CS50 2016-Week 2 学习笔记

来源:互联网 发布:jsp和javascript的用途 编辑:程序博客网 时间:2024/05/21 11:23

这一课先讲了调试程序(Debug),然后讲了代码正确性、代码设计、代码风格,最后讲了数组的概念。


DeBug

核心思想是程序报错后,能找到哪儿错了,怎么错的。

如果是语法错误,根据报错信息,大概能找到怎么错的。

如果是逻辑错误,可以自己在脑海中过一遍程序运行的流程,看哪儿有逻辑错误,或者自己在可能有问题的地方写测试代码。

C语言软件中有调试模式,可以帮助找错。

Python中的异常处理,try and except 可以在可能会出错的地方提供解决方案,或者报错。


代码风格

对于初学者,只要代码正确、能运行就挺好了。
代码风格,关于空格、缩进、适当地换行、核心的地方写注释、合适的命名这些。

C语言中代码风格至少要保证结构清晰、方便阅读。

Python中有PEP8编码规范,要多学习,多看别人好看的代码,自然会按照规范书写代码。



ASCII码

C语言中使用使用标准ASCII码,用7位二进制数来表示128个可能的字符。

C语言中%c 输出格式为字符,%i输出格式为整型。在最后输出时可以实现整型字符的转换,利用这个特性,可以查看0~127在ASCII码中对应的字符:

#include <stdio.h>int main(void){    int i;    for (i = 0; i <128; i++)    {        printf("%c in ASCII is %i\n",i, i);    }}

这里写图片描述

97~122对应着a~z; 65~90对应着A~Z。(大小写相差32)

利用这个特性可以自己写大小写的转换,把所有字母转换成小写字母,或者把所有字母转换成大写字母。

如,将混在一起的大小写字母转换成大写字母:

#include <stdio.h>main(){    char C[50] = "AhgiAgbkBKLujbYKBKbKbgkb";    int len = strlen(C);    int i;    for (i = 0; i < len; i++)    {        if ('a' <= C[i] && C[i] <= 'z')        {            printf("%c",C[i]-32);        }        else        {            printf("%c",C[i]);        }    }    printf("\n");    printf("%s (The original string)",C);}

运行结果:

这里写图片描述


字符数组

上节课有C语言中几种变量类型,整型变量、实型变量、字符变量等。

可以使用char * 来定义字符串:char * s = "FengWeilei"; 修改于2017/09/07

C语言中不能直接定义字符串变量,只有char字符变量,一个char变量能存储一个字节,即一个字母(ASCII码)。

可以用数组来实现字符串的定义,每一个字符对应数组中的一个元素。

如下面代码:

#include <stdio.h>  //导入stdio头文件(标准库)int main(void)  // 定义main函数,void表示运行时不需要传递参数{    char s[20] = "FengWeilei";   // 定义有20个元素的数组,初始化前11个字符元素为FengWeilei\0;\0表示Null,标志字符串的结尾    int i;    for (i = 0; i < strlen(s); i++)  // strlen(s)计算s元素个数,这里是10,最后Null没有算。    {        printf("%c\n",s[i]);  //逐个输出s数组中前10个元素    }    printf("%s\n",s ); // 输出整个字符串    printf("The length of s is %i\n",strlen(s) );}

运行结果:

这里写图片描述