C 语言基础
现在有院校的学生过来学习C语言,所以整理了一下资料,希望对大家有所帮助吧
// 生成一个输出 Hello World! 的 C 程序
#include <stdio.h>
// 引入 头文件
// <stdio.h> 标准输入输出库
// std standard 标准
// io input output 输入输出
// .h 引入头文件 header
//
// * 编程语言: 高级编程语言C
// * 最基础的编程语言
// * Linux shell编程
// * 语言
// * C++
// * Java
// * Python
// * Go
// * Swift
// * Scala
// * R
// * SQL
// * 云计算 网络安全 数据分析 ...
// * 学习核心:
// * 逻辑-- 解决问题的思路 过程 方法
// * 学习:
// * 1 打印语句
// * 2 输入输出 交互
// * 3 逻辑 数据类型 变量
// * 运算符 分支语句 循环语句 函数
// * C 语言的代码的构成
// * 1. 预处理指令
// * 2. 主函数
//
// int main(){} 主函数
// 有返回值的函数
// 执行C 程序的唯一入口
// 函数: 能够完成一定功能或者性能的代码块
// 通过调用函数来实现函数的功能
// int 表示整数的数据类型
// 是main函数的返回值类型 跟它对应的是
// 在{} 的内部 return 0;
// 返回一个整型的数值0
// main() 函数名() 函数的写法
// {} 函数体 函数的内容
int main() {
// 在终端中打印输出 Hello World!
//并且换行(\n换行符)
// printf 函数 () 里面的内容是参数
// printf 函数是打印输出的函数
// 当前的参数是 字符串类型的值
// "Hello World!\n" 现实中的文本
// 使用的时候必须加英文的双引号
printf("Hello World!\n");
printf("Tom and Jerry.\n");
return 0;
}
#include <stdio.h>
#include <stdbool.h>
// 引入bool类型的头文件,就可以使用bool类型
// 数据类型 为了方便管理数据,
// C语言中对现实中的数据分门别类,
// 方便管理就形成了数据类型
// C语言中常用的数据类型有:
// 表示整数的类型 按照范围划分:
// 整型:int
// 短整型 short
// 长整型 long
// 长长整型 long long
// 表示小数的类型:
// 双精度浮点型:double
// 单精度浮点型:float
// 字符型:char 表示存储一个字符
// 布尔型:bool 表示真假的类型
// 表示数值的类型分为两种 一种带 +- 的(signed)
// 一种没有负数的(unsigned)
// 如果没有特殊说明 指的是包含负数的
// 各个数据类型在系统所占的空间 单位 字节
// sizeof(数据类型) 获取数据类型的字节数
int main() {
// 使用占位符来输出 %d 一个整数的占位符
// 输出int所占的空间 int: 4
printf("int: %d\n", sizeof(int));
// 输出short所占的空间 short: 2
printf("short: %d\n", sizeof(short));
// 输出long所占的空间 long: 4
printf("long: %d\n", sizeof(long));
// 输出long long所占的空间 long long: 8
printf("long long: %d\n", sizeof(long long));
// 输出double所占的空间 double: 8
printf("double: %d\n", sizeof(double));
// 输出float所占的空间 float: 4
printf("float: %d\n", sizeof(float));
// 输出char所占的空间 char: 1
printf("char: %d\n", sizeof(char));
// 输出bool所占的空间 bool: 1
printf("bool: %d\n", sizeof(bool));
printf("Hello World!\n");
printf("Tom and Jerry.\n");
return 0;
}
#include <stdio.h>
#include <stdbool.h>
// 占位符
// %c 字符的占位符
// %d 整数的占位符 有符号的十进制整数
// %f 浮点数的占位符 float double( %lf)
// %e 科学计数法的浮点数
// %E 科学计数法的浮点数
// %ld 长整型的占位符 long
// %s 字符串的占位符
int main() {
// 输出字母A
printf("%c\n", 'A');
// 输出十进制数 10
printf("%d\n", 10);
// 输出浮点型值 3.14
printf("%f\n", 3.14);
//输出double型值 3.14 %lf
printf("%lf\n", 3.14);
// 输出小数以科学计数法的形式输出 3.14
printf("%e\n", 3.14);
// 输出小数以科学计数法的形式输出 光的速度
printf("%E\n", 3333.9999);
// 输出长整型的数值 999999
printf("%ld\n", 999999);
// 输出字符串 Tom and Jerry
printf("%s\n", "Tom and Jerry.");
printf("Tom and Jerry.\n");
return 0;
}
#include <stdio.h>
#include <stdbool.h>
// 变量 : 一个代词 代表它保存的值,
// 在程序的执行过程中,变量的值可以被改变
// 一个变量必须声明并且赋值后才可以使用
// 在同一时刻,一个变量只能保存一个值
// 变量的定义 : 数据类型 变量名 = 值;
// C语言是一个强类型的语言,声明变量的时候必须指定类型
int main() {
// 变量声明 声明一个变量age并且赋值为99
int age = 99;
// 输出变量age的值
printf("age = %d\n", age);
age = 100;
printf("age = %d\n", age);
// 定义一个变量tall来保存身高
float tall = 1.88;
printf("tall = %f\n", tall);
// 定义一个变量name来保存名字
// char[10] 字符类型的数组
// 数组 保存了一组同类型数组的容器
char name[10] = "Tom";
printf("name = %s\n", name);
// 定义一个字符类型的变量 c来保存字母 z
char c = 'z';
printf("c = %c\n", c);
printf("Tom and Jerry.\n");
return 0;
}
#include <stdio.h>
#include <stdbool.h>
// 作业:
// 1. 使用变量保存自己的个人信息,并且使用占位符输出自己的个人信息
// 个人信息包含 姓名 年龄 身高 体重 爱好
// 2. 写出你知道数据类型 并且举例使用占位符输出
// 3. 写出你知道数据类型所占的字节数
// 4. 写出变量的定义 数组的定义
// 变量 代词 代表它保存的值,一个变量在
//同一时刻只能保存一个值, 变量总是保存最新一次的值
// 在程序的执行过程中变量的值可以被改变
// 数组 是保存了一组相同类型数据的容器
int main() {
char name[10] = "Tom";
int age = 18;
float height = 1.75;
float weight = 70.5;
char hobby[10] = "football";
printf("name:%s, age:%d, height:%f, weight:%f, hobby:%s\n", name, age, height, weight, hobby);
// 短整型 2字节 short
short a = 1;
printf("a:%d\n", a);
// 整型 4字节 int
int b = 1;
printf("b:%d\n", b);
// 长整型 4字节 long
long b1 = 1;
printf("b1:%ld\n", b1);
// 长长整型 8字节 long long
long long b2 = 1;
printf("b2:%lld\n", b2);
// 单精度浮点型 4字节 float
float b3 = 1.0;
printf("b3:%f\n", b3);
// 双精度浮点型 8字节 double
double b4 = 1.0;
printf("b4:%lf\n", b4);
// 布尔型 1字节 bool
bool b5 = true;
printf("b5:%d\n", b5);
// 字符型 1字节 char
char b6 = 'a';
printf("b6:%c\n", b6);
// 输出字符型的字节数
printf("sizeof(char):%d\n", sizeof(char));
printf("Tom and Jerry.\n");
return 0;
}
// 打印输出 Hello World
#include <stdio.h>
#include <stdbool.h>
// 变量的命名要求
// 1. 命名只能使用字母、数字、下划线
// 2. 命名不能以数字开头
// 3. 命名不能使用关键字 int short long char float double
// 4. 命名不能使用保留字
// 5. 命名不能使用空格
// 6. 长度不能超过63个字符
// 7 . 区分大小写
// 运算符
// 算术运算符 + - * / %
// +
// -
// *
// /
// %
int main(void)
{
// +
int a = 1;
int b = 2;
int c = a + b;
printf("%d\n", c);
// short类型的两个值相加
short d = 7;
short e = 2;
short f = d + e;
printf("%d\n", f);
// 有浮点型的值参与的加法
int g = 5;
float h = 2.3;
float i = g + h;
printf("%f\n", i);
// -
int j = 5;
int k = 2;
int l = j - k;
printf("%d\n", l);
float m = 5.0;
float n = 2.0;
float o = m - n;
printf("%f\n", o);
bool b1 = true;
// true --> 1
int b2 = a + b1 ;
printf("%d\n", b2);
b1 = false ;
// false -- > 0
b2 = a - b1 ;
printf("%d\n", b2);
// *
c = a * b;
printf("%d\n", c);
f = d * e;
printf("%f\n", f);
// / 整数值相除的结果还是一个整数
a = 8;
int m1 = 3;
c = a / m1;
printf("%d\n", c);
f = d / e;
printf("%f\n", f);
// % 模 取余 5 / 3 = 1 ... 2 5 % 3 = 2
c = a % m1;
printf("%d %% %d = %d\n", a,m1,c);
printf("%d %% %d = %d\n", 10,2,10%2);
printf("%d %% %d = %d\n", 9,3,9%3);
printf("Hello World\n");
return 0;
}
// 打印输出 Hello World
#include <stdio.h>
#include <stdbool.h>
int main(void)
{
// 使用变量完成练习 已知 圆的直径是16,
//求出圆的面积和周长,圆周率使用3.14
int diameter = 16;
float pi = 3.14;
float area = pi * diameter * diameter / 4;
float perimeter = pi * diameter;
printf("area = %f\n", area);
printf("perimeter = %f\n", perimeter);
//从终端输入数据的方法 scanf() 扫描器方法
// 输入数据到变量 a 变量a的声明和初始化
int a = 0;
// 提示用户的输入信息
printf("please input a integer:");
// 输出数据保存到变量a中
scanf("%d", &a);
printf("your number is:%d\n", a);
// 从终端输入姓名保存到变量name中
char name[20];
printf("please input your name:");
scanf("%s", name);
printf("your name is:%s\n", name);
// 从终端输入一个身高保存到变量tall中并且输出
float tall = 0.0;
printf("please input your tall:");
scanf("%f", &tall);
printf("your tall is:%f\n", tall);
printf("%d %% %d = %d\n", 9,3,9%3);
printf("Hello World\n");
return 0;
}
#include <stdio.h>
#include <stdbool.h>
int main(void)
{
//输入一个两位数保存到变量num中,
//输出num每个位置上的数值
int num;
printf("请输入一个两位数:");
scanf("%d",&num);
printf("num = %d\n",num);
printf("num / 10 = %d\n",num/10);
printf("num %% 10 = %d\n",num%10);
//输入一个三位数保存到变量num中,
//输出num每个位置上的数值
printf("请输入一个三位数:");
scanf("%d",&num);
// 百位上的数值为b
int b = num / 100;
// 十位上的数值为s
int s = num / 10 % 10;
// 个位上的数值为g
int g = num % 10;
printf("%d = %d * 100 + %d * 10 + %d\n",num,b,s,g);
printf("%d %% %d = %d\n", 9,3,9%3);
printf("Hello World\n");
return 0;
}
#include <stdio.h>
#include <stdbool.h>
// 10 = ()B
// 除基取余逆排法
// 10 = 1*2^3+0*2^2+1*2^1+0*2^0 = 1010B
// short类型 存储的时候是
// 0000000000001010 B 10
// 移位运算符
// 左移运算符 << 规则: 左移n位,则结果为原数左移n位,
// 如果n大于sizeof(int) * 8,则结果为0
// 最右边补n个0 前面舍弃掉相应位数的值
// 右移运算符 >> 规则:
// 右移n位,则结果为原数右移n位,
//如果是正数 右边补零,如果负数则右移n位,左边补n个1
int main(void)
{
int n = 10;
// n左移2位 保存到m中,输出m
int m = n << 2;
printf("%d\n", m);
// 如何快速求出2的立方
int m1 = 2 << 2;
printf("%d\n", m1);
// 右移运算符练习
// 00000010 00000000
int m2 = 2 >> 2;
printf("%d\n", m2);
// 11111111
//+ 11111111
// = 11111110 = 00000001+1=00000010 = 2
// 00001000 11110111+1 = 11111000 = 11111111 =-1
int m3 = -8 >> 3;
printf("%d\n", m3);
printf("Hello World\n");
return 0;
}
#include <stdio.h>
#include <stdbool.h>
int main(void)
{
// 赋值运算符 = 把等号右边的值
// (表达式的结果/已经有值的变量的值)
// 保存到左边的变量中
int a = 10;
int b = 10 + 10;
printf("a = %d, b = %d\n", a, b);
// 复合赋值运算符
// += -= *= /= %=
// 把a+10的结果保存到变量a中
// a = a + 10;
a += 10;
b -= 10;
printf("a = %d, b = %d\n", a, b);
a *= 10;
b /= 10;
printf("a = %d, b = %d\n", a, b);
a %= 10;
b %= 10;
printf("a = %d, b = %d\n", a, b);
printf("Hello World\n");
return 0;
}
#include <stdio.h>
#include <stdbool.h>
int main(void)
{
// 单目运算符 ! - + & sizeof ~ -- ++
// ! 逻辑非 非真即假 非假即真
bool a = true;
bool b = !a;
printf("a = %d, b = %d\n", a, b);
// - 负号
int x = -10;
printf("x = %d\n", x);
x = -x;
printf("x = %d\n", x);
// + 正号
int y = +10;
printf("y = %d\n", y);
// & 取地址 -1501562272
int z = 10;
printf("z = %d\n", &z);
// sizeof 获取变量大小
printf("sizeof(int) = %d\n", sizeof(int));
printf("sizeof(char) = %d\n", sizeof(char));
printf("sizeof(x) = %d\n", sizeof(x));
// ~ 按位取反 00000001 11111110
int m = 1;
printf("~m = %d\n", ~m);
// -- 自减一 只针对变量有效
int n = 10;
// 后-- 先赋值后自减
//n--这个式子也是有值的,它等于n的初始值
// n-- 结束后 n的值-1
int z1 = n --;
printf("n = %d\n", n);
printf("z1 = %d\n", z1);
// 前-- 先自减后赋值 --n的值是n-1
//整个式子运行结束后n的值是n-1
int n1 = 10;
int z2 = --n1;
printf("n1 = %d\n", n1);
printf("z2 = %d\n", z2);
// ++ 自加一 只针对变量有效
// 前++ 先自增后赋值
int n2 = 10;
int z3 = ++n2;
printf("n2 = %d\n", n2);
printf("z3 = %d\n", z3);
// 后++ 先赋值后自增
int n3 = 10;
int z4 = n3 ++;
printf("n3 = %d\n", n3);
printf("z4 = %d\n", z4);
printf("Hello World\n");
return 0;
}