1、C语言算法
if (i = 2)
{
语句;
}
//这不是判断,是赋值,结果为真
default 可以放在switch任意位置
tab/shift tab 缩进/对齐
char 也属于整型家族的,因为字符存储的时候通过ASII码存储的
case中没有brak继续下面的case程序
switch( c ) c为int long char 不能用float
#define _CRT_SECURE_NO_WARNINGS //将3个整数从大到小排序 #includevoid Swap(int* px, int* py) { int temp = &px; *px = *py; *py = temp; } int main() { int a = 0; int b = 0; int c = 0; scanf("%d %d %d", &a, &b, &c); //调整 //Swap(&a , &b) if (a < b) { int temp = a; a = b; b = temp; } //Swap(&b,&c) if (a < c) { int temp = a; a = c; c = temp; } printf("%d %d %sn", a, b, c); return 0; }
//打印1--100之间的所有3的倍数
#include//打印1--100之间的所有3的倍数 int main() { for (int i = 1; i < 101; i++) { if (i % 3 == 0) { printf("%d ", i); } } return 0; }
//求两个数的最大公约数
#define _CRT_SECURE_NO_WARNINGS #include//求两个数的最大公约数 int main() { int a = 0; int b = 0; scanf("%d %d", &a, &b); int min = (a < b) ? a : b; int m = min; while (1) { if (a % m == 0&& b % m== 0) { break; } m--; } printf("%dn", n); return 0; } //暴力求解,不能高效,时间要使用长 辗转相除法
24 % 18 = 6;
18 % 6 = 0;=> 6
#define _CRT_SECURE_NO_WARNINGS #include//求两个数的最大公约数 int main() { int a = 0; int b = 0; scanf("%d %d", &a, &b); while (a % b) { int c = a % b; a = b; b = c; } printf("%dn", b); return 0; } //最小公倍数 = a × b ÷ 最大公因数
while(真)
{
语句;//if为假,则break
}
//编写1--100中出现多少个9
#include//编写1--100中出现多少个9 int main() { int count = 0; for (int i = 0; i < 101; i++) { //判断各位是不是9 if (i % 10 == 9) { count++; }if (i / 10 == 9) { count++; } } printf("count = %dn", count); return 0; }
//计算1/1-1/2+1/3-1/4...-1/100
#includeint main() { double sum = 0; int flag = 1; for (int i = 1; i < 101; i++) { sum = sum + flag * (1.0 / i); flag = - flag; } printf("%lfn", sum); return 0; }
//求10个整数中的最大值
#includeint main() { int arr[10] = { 1,2,3,4,5,6,7,8,9,0 }; int max = arr[0]; for (int i = 0; i < 10; i++) { if (arr[i] > max) { max = arr[i]; } } printf("%dn", max); return 0; }
//在屏幕上输出9×9乘法表
#includeint main() { for (int i = 1; i < 10; i++) { for (int j = 1; j <= i; j++) { printf("%d×%-2d = %dt", i, j, i * j); } printf("n"); } return 0; }
void fun(int x)
{
//申请了空间
//使用空间
//释放空间
}
main()函数可以任意位置
栈区:局部变量,形式参数,返回值(临时用的)
堆区:动态内存分配,malloc,free,calloc,realloc
静态区:静态变量,全局变量
{ } 块中的变量不能再函数内部块外部访问
void test(int arr[])
{
arr[0] = 3; //arr[0] -> *(arr+0)
arr[1] = 4; //arr[1] -> *(arr+1)
}
2、数组
数组的创建,数组是相同类型的集合
type_t arr_name
int arr[10];
char ch[5];
double date[20];
double date2[15+5];
int n = 10;
int arr[n]; 只能在支持C99编译器下能运行,C99标准之前,数组的大小必须是常量或者常量表达式,在C99之后,数组的大小可以是变量,为了支持变长数组
int arr[10] = {1,2,3,4};//不完全初始化,剩余的元素默认初始化为零
=>int arr[10] = {1,2,3,4,0,0,0,0,0,0};
char ch[10]= {'a','b','c'};后面默初始化为' ' => a b c
char ch2[10] = "abc"; => a b c
char ch3[] = "abc"; => 'a' 'b' 'c' ' '
int arr[] = {1,2,3,4,5,6,7,8,9,10};
#includeint main() { int arr[10] = { 0 }; int size = sizeof(arr) / sizeof(arr[0]); for (int i = 0; i < size; i++) { printf("%d ", arr[i]); } //打印数组的每一个元素 for (int i = 0; i < size; i++) { printf("&arr[% d] = % pn", i, &arr[i]); } //数组在内存中是连续存放的,而且是递增的 return 0; }
可以看出元素1和元素2相差4个字节,也就是int的大小。



