CS50 2016-Week 2 学习笔记

124 篇文章 0 订阅

这一课先讲了调试程序(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) );
}

运行结果:

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值