c语言-走进编程语言第一章
在vs编辑器创建c++空项目,下的源文件里面创建 文件名.cpp 文件,就是c++文件, 即可开始学习c语言!
//程序的定义:为了让计算机执行某些操作或解决某个问题,而编写的一系列有序指令的集合。 //c语言属于高级语言:而计算机采用的是二进制系统,c语言想在电脑上运行,就需要一个编译器,将c语言代码翻译成0和1的二进制 这种过程叫代码编译 //c语言的运行过程:源代码,以“.c”结尾的文件,先将源代码编译成目标文件,后缀为“.o”或“.obj”,在和c语言函数库连接,最终生成可执行的“.exe”文件。 //c语言的特点:1.模块化的程序设计,层次清晰 2.语言简洁 3.功能强大,可以开发系统软件,也可以开发应用软件 4.移植性好,可以在不同操作系统上运行。 //include 包含,以.h结尾的文件 称为头文件。 #include <stdio.h> //预处理指令,也叫引用头文件,编译下面的c语言代码必须引入 //想要随机数:就需要引入的两个头文件 #include <stdlib.h> //随机数rand()函数所在的头文件,得到一个随机int整数, 值规定,想要发生变化需要引入时间 #include <time.h> //时间:让随机数随时间变化而变化, 不引入这个随机数虽然产生 ,但不会发生变化,一直是那个值 #define PI 3.14 //define定义常量:在程序里一直保持不变的量叫常量。语法:#define 常量名 值 int r;//定义全局变量,定义在函数体方法体外面的叫全局变量,里面的叫局部变量,区别(全局可以拿到局部去用,局部不可以拿出方法体外面来用) //自定义函数的原型声明:声明时不需要写{函数体} void jjxfb();//当自定义函数写在main函数后面的时候,main函数需要调用,就要声明放到前面来才能找到他,如果本就定义在main函数前面,就不需要声明。 //main 入口函数 所有c语言都必须有入口函数, 相当于大楼的入口 void main()//void表示没有返回值的意思 { //产生一个1-3的随机数 srand(time(NULL)); int com = rand() % 3 + 1;//随机种子 printf("随机数为:%d \n", com); printf("请输入圆的半径:"); scanf_s("%d", &r); double s = PI * r * r; printf("半径为%d的园的面积为:%.2lf \n", r, s); //定义变量 int a = 2, b = 3; double c = 5.23; //b = a++;//先赋值在自加 a=3 b=2 //b = ++a;//先自加后赋值 a=3 b=3 //a += a + b;//a=7 a+b=5 a+=5 = 2+5 = 7 //b = (a += 5, a - 5, a * 5, a / 5); //逗号运算符 b = (int)(a + c);//强制类型转换 printf("a=%d,b=%d",a,b); //数据大小排序:char 1 < short 2 < int 4 = float = long < double 8 printf("获取某个数据类型的大小:",sizeof(a));//还可以这样写sizeof a 或者是 sizeof(int) 三种写法 数据类型不能省略括号 变量名可以 int width, height, area; printf("请输入长和宽:"); //fflush(stdin);//作用:清空缓存,清楚回车键 scanf_s("%d%d", &width, &height);//不加,号就默认用空格和回车代替 if (width>0 && height>0) { area = width * height; printf("面积是:%d \n 换行", area); } else if (width == 0)//多条件分支语句 { //类似于 switch(int/char){case 值1: case 值2: ... break;case 值3: ... break; default: ... } } else { printf("输入有误! \t 转义字符打印8个空格"); } /*基本数据类型 %占位符都是小写的 整形 短整形 short int 或 short %h 2byte 表示2字节 * 整形 int %d 4字节 长整形 long int 或者 long %ld 4字节 浮点型 单精度 float %f 4字节 //最多保留7位有效数字 双精度 double %lf 8字节 //可以保留16位有效数字 字符 单引号 ‘’ 单个字节 char %c 如:'2'+'2' =d 的结果 */ //switch语法********************************************************************** int year, month, day; printf("请输入年-月:"); scanf_s("%d-%d", &year, &month); //判断月份有多少天 switch (month) { //大月 case 1: case 3: case 5: case 7: case 8: case 10: case 12: day = 31; break; //跳出结构的意思 没有break就程序会继续执行后面的代码 //小月 case 4: case 6: case 9: case 11: day = 30; break; //2月有闰年29天,平年28天 case 2: day = (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) ? 29 : 28; break; //前面所有条件都不满足的时候长这些的代码 default: break; } printf("%d 年 %d 月 有 %d 天。 \n", year, month, day); //while(条件)循环 while (true)//条件:true 就代表了死循环,可以改变其他条件 { //循环体:需要循环操作的代码,先判断条件,在这些循环体 break;//利用break;来退出循环体 } //do-while(条件)循环 do { //循环体:不管while条件是否满足,先执行一次循环体, 在去判断条件,不满足就退出,满足就继续下一次循环。 } while (false); int cont = 1; for (int i = 1; i <= 10; i++) { if (i == 5) continue;//跳出当前循环继续下一次循环 if (i > 8) break;//跳出整个循环 cont++;//外部变量 需要外部定义才能用 printf("%d ",i); //for循环里面还可以放for循环,循环 都是可以嵌套的 } printf("\n"); //一维数组 语法: 数据类型 变量名[限制的长度] = { 赋值的元素个数取决于长度} int ss[3] = { 1,2,3 }; //相当于旅馆一样给3个房间一人一个,第四个住不下, 写是第四个元素就报错 int score[] = { 1,2,3,4 };//[不赋值]表示长度不固定,取决于元素的个数,有多少个元素,长度是多少 //取数组值用索引 语法: 变量名[索引值] 其中索引值就是元素小标,0代表第一个元素,1代表第一个元素.....以此类推 索引不能大于 长度-1 jjxfb();//调用函数,封装好一部分代码的函数,拿过来main函数执行, 不调用他是不会执行的 //如果调用的函数有返回值就可以用变量来接收,如:数据类型 变量名 = 函数名();//接收函数方法的返回值 } //定义一个函数 语法: 返回值类型 函数名(参数){ 函数体代码块 } void jjxfb()//九九乘法表(无参无返的函数) { for (int i = 1; i <= 9; i++) { for (int j = 1; j <= i; j++) { printf("%d*%d=%d \t", i, j, i * j); } printf("\n"); } } /*四种函数类型 无参无返:void 函数名(){} 无参有返:返回值类型 函数名(){ return 返回值;} 有参无返:void 函数名(参数){} 有参有返:返回值类型 函数名(参数){ return 返回值;} 一个函数 要么没有返回值 或 最多只有一个返回值。 */