献给……?”

这是一句你往往能在书的扉页上看到的话。

——那么,这部“书”又是献给谁的呢?

如你所知,“持篙试水,偶得浅水,弃了筏子,跳上岸来”,对于未从纠缠态释放的水深,:monkey:尚需试水;同理,对于自己不为所知的C语言甚乃至整个程序设计领域,新手同学们需要具体尝试与实际操作才能找到自己的感觉。

所以,此文是献给想学C语言但又对编程知识感到陌生的同学的。它是一个基础的汇总,可为新手提供一条较便捷通俗(但也简略而缺乏细节)的通道。望部分基识的武装可为新手适应C语言这样广阔的水域尽一份微薄之力。


可推广原理

想编程必然是有事情想让电脑代劳。但你说的是人话,电脑只能理解二进制的东西,所以你为了配合它就得学一门计算机语言。只要语法和逻辑没毛病,你用这种语言下达的指令会经过以下步骤被乖乖执行:point_down:
avatar


程序=数据结构+算法?

看到这个公式小白们可能会有点儿懵:这都是啥和啥?

首先,你的让计算机帮你运算的东西里肯定会有数字、有由你来命名的未知项啊等等。这些项,加上它们之间的相互关系组成的就是“数据结构”,为计算机组织与储存起模范作用。

第二,由于计算机只会帮你“死的部分”,灵活的逻辑问题应由你自己解决。将求解问题的步骤描述出来,形成一个指令的有限序列,这就是所谓的“算法”。

可以看出,这两项指标的配置都相当灵活。合适的数据结构搭配高效的算法可以加速运行和存储。但是这些优化都是同志们身经百战后才做到“冷暖自知”的。今日面新,咱们多谈谈描述“解题步骤”中常用的语法知识和数据结构中各种数据类型吧:muscle:


C语言语法:new_moon_with_face:

一.构成

c语言程序由函数构成,每个函数可以实现一个或多个功能。可以有多个函数,但是有且只有一个主函数。

下面介绍几个基本语句的同时会穿插例子。请大家感受其中的规律与共性。

1.1输入输出型语句
(1)printf型

printf语句的作用很简单,就是可以输出你想要打印的东西。

作为第一个介绍的语句,我们先来看看其构造模板:

#include <stdio.h> //预处理指令(stdio:stadard input output标准输入输出;.h:头文件)
int main()          //定义主函数
{                   //函数开始的标志
    printf("This is a C program.\n")
    return 0;       //函数执行完毕返回函数值0
    }               //函数结束的标志

/*唠唠叨叨强调下以后写什么都要注意的事项:
    一个说明或一个语句占一行,例如:包含头文件、一个可执行语句结束都需要换行;
    函数体内的语句要有明显缩进,通常以按一下Tab键为一个缩进;
    括号要成对写,如果需要删除的话也要成对删除;
    当一句可执行语句结束的时候末尾需要有分号;
    代码中所有符号均为英文半角符号;
    多加注释,便于日后理解(双斜杠//后可添加单行注释;两组斜杠加星号内可添加多行注释)。*/

有了上述实例,希望你们可以举一反三地迁移出更多写法:)。

以下语句将以其特点或模板呈现:point_down:

(2)scanf型

scanf的使用方法及作用与printf的大同小异,都可输出“”内内容。但这种语句也叫阻塞式语句,意思是语句执行时会等待用户输入之后才能进行,不同于printf的直接输出。

注意事项:

  • 接收单个变量时在输入值之前,输入的空格,回车和制表符都会被忽略。
  • 默认多个值之间用空格分隔。中间的空格回车制表符都会被忽略。
  • 如果格式控制符设置为,分隔,在输入的时候需要使用。
  • %c跳过一个字符,%d 跳过一个整数(参看数据类型部分讲解)。
  • 在使用scanf时不能使用 \n(参看数据类型部分讲解)。
1.2赋值语句

赋值语句就像方程中的设值,用于给你的变量赋值。

模板:

简单赋值  变量名=表达式  
条件赋值  变量名=条件表达式?表达式T:表达式F;  

在数据类型的实例中你将看到大量此类语句。

1.3选择语句
(1)if语句

if语句可用于判断:如果表达式为真,就执行已定语句;如果表达式为假,就不执行已定语句。

eg:

#include <stdio.h>
int main(void)
{
    if (3>2)
    {
        printf("You will definitely fall in love with the C Programming Language.\n");
    }
    return 0;
}

if语句还可以在同一函数多次使用,与以上用法相同,表示多种可能。

如要表达“除以上列举情况以外的所有情况”,将if改成else,else后面不跟条件(即不带括号)。其他用法不变。

还有一种else if的判断语句,与if的使用方法完全相同。But for instance:

if (条件1) 
{
    //语句1
}
else if (条件2)
{
    //语句2
}

if 块和 else if 块本质上是互斥。也就是说,一旦语句1得到了执行,程序会跳过 else if 块,else if 块中的判断语句以及语句2一定会被跳过;同时语句2的执行也暗含了条件1判断失败和语句1没有执行;当然还有第3个情况,就是条件1和条件2都判断失败,语句1和语句2都没有得到执行。

(2)switch开关语句

switch语句与if语句的作用相似,但switch语句的优势在于可以更方便地应用于多个分支的控制流程。比如你看,这是switch语句的使用模板:

switch(表达式){  
    case 常量1:           //第一种情况:与1相等时
    语句序列1;       //若符合情况则输出的语句
    break;          //若符合情况则终止,跳出整个switch结构
    ...  
    case 常量n:           //第n种情况:与n相等时
    语句序列n;       //...以此类推
    break; 
    default:        //检查默认情况,或者处理错误情况,不加break
    语句序列n+1;
}  

从case 1到case n,分支再多也无所畏惧233

但可以看出,switch 语句只能够测试是否相等,因此,case 语句后面只能是整型或字符型的常量或常量表达式;而在 if 语句中还能够测试关系与逻辑表达式

二.标识符

标识符就是你解方程中反复代替数字使用的的x和y,代表着一个变量。在数据结构的实例中你将看到很多。

2.1命名原则
  • 只能有字母,数字,下划线和$组成。
  • 不能以数字开头。
  • 不能与关键字(那些已有规定作用的英文)重名。
  • 严格区分大小写。
    (建议望文生义,取与变量性质相关的标识符)

C语言数据类型

一.使用

(仅对编程者而忽略电脑而言)每个数据类型都有一种用于定义此类数据的关键字,即其英文名称(eg:int,float)。好比小学老师天天揪着小孩不要忘写“设”字,定义每个变量的时候都必须使用。

二.分类

avatar
千变万化的数据类型中,我们重点谈谈基本类型。

2.1“整”“非整”“非数”的区别

“整”“浮点”“非数”间区别:该数据属于整数,小数,还是数以外的其他东西(此处只有单个字符可以使用,后面会有说明)。

2.2整型中各类数据的区别

列举之前必须明确几个概念:

  • 下表中的位数指其类型内可输出数据的占地大小。
  • 8bit(比特)=1byte(字节)
整型int 短整型short 长整型long longlong int
位数 32bit 16bit 32bit 64bit
2.3浮点型(or非整型)中各类数据的区别
单精度型float 双精度型double
(小数点后)位数 32 64
字符类型char

char型对应位数只有8bit。也就是说,此类数据只为单个字符eg:“人”,大写“”,空格“ ”等。

这样下来,数据类型的丰富使得大家可以各取所需,便利定义。

三.示范

示范前有一些常用元素需加了解:
– 好比小学学的运算符号,C语言也有自己的表现形式和运算法则:point_right : 运算符及其优先级参考
C语言各种带反斜杠的符号作用了解一下(此外:\输出\;%%输出%)

好了让我们快点用一段简单的码感受一下8:

...
    int num1 = 10,int num2 = 8;//定义变量并对其初始化
    printf("%d口心思\n%目共赏d\n",num1,num2);
...
输出结果:
10口心思
8目共赏
/*可先定义变量后初始化eg:
int a,b;
a=10;
b=20;
也可使用变量对变量初始化eg:
int a=10;
int b=a;
还能变量连续赋值eg:
int a=b=10;*/

再来:

...
    char ch;
    ch ='65';
    printf("What we wanna print is%c.\n",ch);
...
输出结果:
What we wanna print is A.

but:
...
    char ch;
    ch ='A';
    printf("What we wanna print is%d.\n",ch);
...
输出结果:
What we wanna print is 65.

结合以上例子,我们可以获得以下信息:

  • %d为整型通用输出的格式控制符。除此以外,float的为f%;char为c%。还有更多其他的格式控制符可以稍作了解。
  • 一句话可多次出现同一输出符,按“”后的变量地址列表,也就是标识符的排列顺序输出(“”后记得要打逗号呀)。
  • ASCII码表中,用char定义用%d输出可获得图形;用%c输出可获得原数字(十进制)

THE END

学完这篇内容,新手们大概能有所收获吧
不论看到了什么都要表现得津津有味bu

阐述过程中,部分知识我没有编入大纲,而是随一些例子的举出附在后面,初衷是想让大家能自行在实际问题中总结知识。如果造成了结构不清晰望读者们包涵。

最后送给你们一些来自《C程序设计(第五版)》学习C语言的建议。虽然此书为某些专业人士所诟病,但对于新手而言的确值得采纳——

“要把重点放在解题的思路上,通过大量的例题学习怎样设计一个算法、构造一个程序。初学时更不要在细节上死背死抠。一开始就要学会看懂程序,编些简单程序,然后逐步深入。编程技巧是需要较长期的实践才能熟练掌握的。”

要大胆下水,加油

最后修改日期: 2020年1月31日

作者

0 0 投票数
文章评分
订阅评论
提醒
0 评论
内联反馈
查看所有评论