Bootstrap

C语言学习笔记03-C代码框架结构、简单计算、变量(附常见问题解决提示)

C语言的程序框架结构介绍及编写一些简单代码

1. 第一个C语言程序——“Hello World!”——来了!

在这里插入图片描述

  这是一个C语言程序的标准框架,helloworld也通常被用来测试编程环境可以正常运行。
       简要说明一下,# 是预处理指令,include表示包含,在<>中填写调用的函数库如:stdio.h,它是标准输入输出(standard input output)库的头文件(.header)名。include会在编译预处理过程中把头文件包含的内容原封不动地插入到这一行后。
       接下来就是main函数(主函数),读C代码首先找到main函数然后逐行往下读(特朗普说:下一个!哈哈)。main函数是程序的唯一入口,一个C语言项目内有且只能有一个main函数。在VS2022中创建了一个C++项目写C源代码,怎么在项目内可以运行多个含有main的源文件呢?就是分别执行,运行第二个文件的main函数时,可以将第一个的main函数名改为main_1,这样就不用每次都重新创建项目或需要删除前面的练习了。特别的补充说明:C语言中main函数的三种正确写法:最标准的是int main(int argc, char *argv[]), 其次是int main()或signed main(),最后可以是main()【不推荐】。关于void main()是错误的,虽然vc6可以通过编译,但绝大部分编译器会报错且C/C++中从来未定义过void main()。

在这里插入图片描述

       最后就是main函数中的printf输出函数语句了,print打印,format格式化,function函数、功能。""中的内容叫做字符串,printf会将其原封不动输出,'\n’表示换行。
运行结果截图:
在这里插入图片描述

注意,中国初学者常见错误:使用了中文标点符号。编程语言使用的符号都是英文的、半角符号。缓解这一问题的一个方法——推荐使用大小16号的Consolas字体。

2. 写个程序做点计算

  计算是计算机的老本职工作了,先写个C语言程序来做点简单计算(加、减、乘、除、取余)。
在这里插入图片描述
结果:
在这里插入图片描述

说明:%d和%f是占位符,分别表示此处需要一个整数和一个实数。printf函数可以有多个参数,使用英文逗号隔开,逗号后的参数会依次填充进字符串中的占位符的位置。运算中的"%"符号(算术运算符)对常数算子的计算表示取余。含有运算符的式子叫做表达式(expression),详见C语言学习笔记05。

  思考:上面使用程序做计算时,如果用于计算的数据需要改变,我们需要在程序中修改后重新编译,之后才能做新的计算。那么有什么方法可以使程序做计算时的数据可以不用修改源代码就改变呢?
  至少我们要做到三件事:1. 在程序运行时有办法输入数字。(程序运行前和运行后应该没可能的)2. 要有个地方存着输入的数字。(输入了不能直接没有了,输入数字参与计算的前提)3. 输入的数字能参与到计算中。(保证这个数起作用的需求)下面,我们来看C语言中的具体实现。

3. 变量的使用——100元找零

在这里插入图片描述
在这里插入图片描述

说明:

  1. 在终端窗口(控制台窗口)输入数字并回车。输入以行为单位,行的结束标志是回车键,在你回车前程序不会读到任何东西。

  2. 变量,变量是保存数据的地方,定义变量的形式是:<变量类型> <变量名称> = <初始值>; 。可以为变量赋初值,如:为变量price赋初始值0。变量名称是一种“标识(志)符”,它的构造规则是可以由大小写字母、下划线、数字三种元素组成,其中数字不能放在开头,除此外C语言的关键字(保留字)不能被用作标识符。C语言中变量在使用前必须定义或声明,定义的变量只能用来存放指定数据类型的数据,如:int类型(integer-整型)。C++/Java中更严格注重变量类型,而Python中就不需要定义类型。
    变量命名规范:(1)下划线命名法。注:尽量不要在前缀或后缀处加 _或 __ ,易误判成标准库函数参数 如: _a __a a (预定义宏); (2)帕斯卡命名法(驼峰命名法)。 (3)匈牙利命名法=小写缩写类型名+帕斯卡命名法。最好用英文,并一行一注释,养成好习惯。有时对多个变量的声明可以用逗号换行声明,这样方便注释。
    在这里插入图片描述

  3. scanf函数,scan扫描,scanf(“格式声明”, <地址列表>)。&此处用作取地址符,输入的整数数据被存入变量price的内存地址中。(遇到空格、tab、换行时停止读入)

  4. 关于赋值动作使用=(赋值运算符),与数学的“等于”状态并不相同。在程序设计中,a=b与b=a意义完全相反。

  初学者遇到程序出错怎么办?一、根据错误提示猜错误的可能原因。二、给程序打断点查看相关量的变化,做debug调试。三、向他人询问、查找网上解决方法、查阅参考书等。

交换两数”(套路:借助临时变量;还有一种就是 两次逆运算 eg: ^= )程序打断点测试,不同版本调试界面大致相同:
在这里插入图片描述

选择调试运行,单步进入,鼠标移至变量上即可看到此时变量的值(选中变量右击添加查看也行):
在这里插入图片描述
在这里插入图片描述

4. 一个计算并输出的小练习

  需求:输入两数,输出两数对应四则运算的结果。
  实现:
在这里插入图片描述
在这里插入图片描述
可以关注一下%.2f,占位符的具体细节说明见后面的笔记。

  附:初学者常见的可能的问题。

  1. VS2022中需要使用scanf_s,如果仍希望使用scanf,需要在文件首行添加#define _CRT_SECURE_NO_WARNINGS 1。 可以参考我的C语言学习笔记02。

  2. Devcpp运行时中文显示是乱码,需要修改文件的编码格式。dev一般是ANSI(4.9版应该是),检测到中文后会用UTF-8,但控制台窗口默认解码是GBK,编码解码格式不一致导致问题,可能需要GBK编码才能正常显示中文,具体方法有cmd命令行调整暂时编码格式或dev中选择“工具”-“编译选项”-“编译时加入以下命令”:-fexec-charset=gbk,还有就是注册表修改(这个轻易不要用,有风险)

  3. Dev运行窗口一闪而过的解决除了加system的pause或getchar外,直接在连接器中修改产生调试信息也可以,VS中也可做类似的修改。
    在这里插入图片描述

  4. 蓝桥杯版5.4Devcpp一键注释快捷键没效果,可能是和环境不兼容:如下修改新的快捷键,直接重新输入即可。修改后,一键注释功能可以正常使用。
    在这里插入图片描述
    在这里插入图片描述

;