2024年java和c语言的基础语法

java和c语言的基础语法C 语言的语句分为五类 表达式语句 函数调用语句 控制语句 复合语句 空语句 C 语言是结构化 的程序设计语言 存在三种结构顺序结构 选择结构 循环结构 再 C 语言表示语句的结束 分支语句 if 条件控制语句 0 表示假 1 表示真 当要执行多条语句时 使用代码块 用 括起来

大家好,我是讯享网,很高兴认识大家。



C语言的语句分为五类:

  • 表达式语句
  • 函数调用语句
  • 控制语句
  • 复合语句
  • 空语句

C语言是结构化的程序设计语言,存在三种结构顺序结构、选择结构、循环结构

; 再C语言表示语句的结束


分支语句

if条件控制语句:

0表示假,1表示真

当要执行多条语句时,使用代码块(用{  }括起来)。

 
讯享网 

switch语句

case只是一个入口,没有终止执行的能力,需要break来跳出当前的switch。

!!!没有break或者default,switch只会不断进行!!!

多个case公用一个break,可以实现同一句的执行效果。

switch允许嵌套使用。

形成良好习惯:

  • 在最后一个case后加上一个break。
  • 在每个switch最后都加一个default。

switch的条件必须是整型表达式,case必须是整型常量表达式。

  • 这里的整型包括char(存放的是ASCII码值,本质上是整型)和int。java和c语言的基础语法
讯享网

循环语句

while循环
 

break:会跳出本层循环。是永久的终止循环。在嵌套循环中,break打破的是break所在的循环。

continue:跳过本次循环,直接去判断部分。是跳过本次循环后面的代码,直接进行下一次循环的判断。


while和getchar清理缓冲区

getchar(),是从缓冲区中读取一个字符。可以是空格、换行、回车等。

putchar(),是输出读取的字符。

讯享网

eg:输入密码

此时,getchar从缓冲区读取的是 ' ' ,此时没有第二次输入。

 若缓冲区是一串字符,则不能用getchar直接清理。应用上述清理缓冲的循环清理。

scanf 和 printf 函数,只是在初识C语言中,对代码进行测试的输入输出语句,在以后得开发中并不重要。(不需要花费太大精力)。

通过scanf函数的%m格式控制可以指定输入域宽,输入数据域宽(列数),按此宽度截取所需数据;通过printf函数的%0格式控制符,输出数值时指定左面不使用的空位置自动填0。


for循环
 

初始化:初始化循环变量。

判断:循环的终止条件,判断循环的下一步操作。

调整:变更循环变量。

  1. 不可在for循环更改循环变量,防止for循环失去控制。
  2. 建议for循环控制变量的取值采用“前闭后开”的写法。

for循环的变种

省略

省略会带来一些意想不到的后果,尽量避免省略。

循环变量的初始化最好放在for循环的外面:一些编译器不支持该操作。

可以多个变量控制一个循环。


do while 循环

do while循环先执行一次在判断循环条件。

 

利用循环查找有序数列数据

 

折半查找就是利用循环实现的,每次查找数据减少一半。

  • 循环的终止条件:必须含有等号。
  • mid的值必须定义在循环里面。
  • mid=(left+right)/2,可能会越界(mid的最终值超过数组长度)
 

数组传参时传递的是数组首元素的地址


利用循环猜数字

 

时间戳:是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数(不考虑闰秒),用于表示一个时间点。然而,这种格式对于人类阅读并不友好,因此需要转换成可读的日期和时间格式。

利用时间戳使用随机数:

 

time函数的头文件:<time.h>

rand、srand的头文件:<stdlib.h>

time函数每次使用时,最好使用空指针参数;

srand函数的参数是unsigned int 型的,利用时间戳要强制转换;


goto语句

goto语句不能跨函数跳跃,在实践中尽量避免goto语句(容易大量报错)。

goto语句常用于终止深层的嵌套循环;(break只能一层层的跳出循环)。

debug是调试版本——是程序调试的版本;

release是发布版本——是发布用户使用的版本;


函数

  • 在计算机科学中,函数是一个子程序,有一个或多个语句块组成,完成某项特定的任务,具有相对的独立性。
  • 一般有输入参数和返回值,提供对过程的封装和细节的隐藏。

一个工程里面,可以有多个.c文件,但只能有一个main函数。

函数的分类:

1、库函数:

        C语言封装的函数,方便程序员的使用。(IO函数、字符串操作函数、字符操作函数、内存操作函数、时间日期函数等)。        

        库函数的使用必须使用 #include 包含对应的头文件。

        库函数的学习利用:https://cplusplus.com/ 或 msdn 或 cppreference.com

虚拟机:虚拟出来一台电脑。

虚拟出来的电脑(.vmk文件)。

2、自定义函数

        程序员自己设计的函数,函数的基本组成包含函数名、函数体、函数参数、返回类型。


实参和形参

函数传参时,可以是表达式:

(2,3)是一个逗号表达式,表示一个数组。

实参:真是传给函数的参数。实参可以是常量、变量、表达式、函数。

形参:函数名后括号内的参数。在函数调用完后就自动销毁了。

当实参传递给形参时,形参是实参的一份拷贝--->形参的改变不会影响实参

当函数传递的参数是指针--->改变实参

px、py是指针变量,也是形参。它们存放的是啊a、b的地址。

&px、&py才是形参的地址。

*px、*py是对a、b地址的的解引用。


函数调用

1.传值调用

函数的形参和实参分别占用不同的内存块,对形参的修改不会影响实参。

2.传址调用

把函数外部创建的变量的地址传给函数参数,使得在函数内部可以直接操作函数外部的变量

C语言在C99之后引入布尔类型 bool ,在头文件#include<stdbool.h>中。

bool类型不是C语言的内置类型,本质上是0和1的封装,只占1个字节。


函数嵌套

函数可以嵌套调用,不能嵌套定义。


链式访问

把函数的返回值作为另一个函数的参数。

若函数没有返回类型(void),则没有办法实现链式访问。

main函数本质上还是有参数的:

 

函数声明

函数定义放在调用的后面,则需要在调用前声明。

  • 函数声明:是告诉编译器函数叫什么,参数是什么,返回类型是什么。函数声明不能决定该函数具体是否存在。
  • 函数的声明一般在函数使用之前,满足先声明后使用
  • 函数的声明一般放在头文件。
  • 函数的定义指函数的具体实现。

 将函数的声明、函数的实现、主函数分开存放,可以提高程序的可读性、实现程序模块化、方便多个程序员的协作完成。

声明和定义的分割:可以使程序以静态库的形式出售项目。

 

静态库和动态库:静态库与动态库的区别与优缺点_静态库和动态库的优缺点-CSDN博客 


函数递归

程序调用自己

递归的核心思想:大事化小。

函数的调用都会在栈上申请空间:函数栈帧的创建和销毁。

当递归没有出口时,会产生如下报错,表示:栈溢出。

递归的必要条件

  • 存在限制条件,当满足限制条件时,递归不再继续。
  • 每次递归调用后,越来越接近该限制条件。

不用创建变量的方法求字符串的长度:

 
递归与迭代

循环是一种迭代,而迭代不等于循环。

递归如果没有明显的缺陷,而且代码简洁,就不用考虑迭代。

当递归栈溢出时,解决的方法

  1. 将递归改写为非递归
  2. 使用static对象(堆对象)替代nostatic局部对象(栈对象),减少每次递归调用和返回是产生和释放的nostatic对象的开销(减少栈的开销)。

小讯
上一篇 2024-12-27 09:20
下一篇 2024-12-23 20:50

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/4113.html