C语言 汇总笔记(小甲鱼:带你学C带你飞)

C语言 汇总笔记(从零开始自学)

1.打印Hello World

#include <stdio.h>
int main()
{
    printf("Hello World!\n");
    return 0;
}

2.变量

在这里插入图片描述

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

#include <stdio.h>
int main()
{
    int a;
    char b;
    float c;
    double d;
    a = 520;
    b = 'H';
    c = 3.14;
    d = 3.141592653;
    printf("整形:%d\n", a);
    printf("字符型:%c\n", b);
    printf("单精度浮点型:%.2f\n",c);
    printf("双精度浮点型:%.9f\n", d);
    return 0;
}

3.常量和宏定义

在这里插入图片描述

#include <stdio.h>
#define URL "www.baidu.com"
#define NAME "百度"
#define BOSS "李彦宏"
#define YEAR 2020
int main()
{
    printf("年份:%d\n网站:%s\n名称:%s\nCEO:%s\n", YEAR,URL, NAME, BOSS);
    return 0;
}

4.数据类型

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

#include <stdio.h>
int main()
{
    int i;
    char j;
    float k;
    i = 123;
    j = 'C';
    k = 3.14;
    printf("int:%d\n",sizeof(int));//4字节
    printf("%d\n", sizeof(i));//4字节
    printf("char:%d\n", sizeof(char));//1字节
    printf("%d\n", sizeof(j));//1字节
    printf("float:%d\n", sizeof(float));//4字节
    printf("%d\n", sizeof k);//4字节
    return 0;

}
#include <stdio.h>
int main()
{
    printf("short:%d\n", sizeof(short));//字节:2
    printf("int:%d\n",sizeof(int));//字节:4
    printf("long:%d\n", sizeof(long));//字节:4
    printf("long long:%d\n", sizeof(long long));//字节:8

    printf("char:%d\n", sizeof(char));//字节:1
    printf("_Bool:%d\n", sizeof (_Bool));//字节:1
    printf("float:%d\n", sizeof(float));//字节:4
    printf("double:%d\n", sizeof(double));//字节:8
    printf("long double:%d\n", sizeof(long double));//字节:12
    return 0;

}

在这里插入图片描述

  1. signed意思为有符号的,也就是第一个位代表正负,剩余的代表大小,例如:signed int 大小区间为-128-127

  2. unsigned意思为无符号的,所有的位都为大小,没有负数,例如:unsigned int 大小区间为:0-255

  3. 默认为signed

#include <stdio.h>
int main()
{
    signed short i;
    unsigned short j;
    i = -1;
    j = -1;
    printf("有符号的:%d\n",i);
    printf("无符号的:%u\n", j);
    return 0;
}
//有符号的:-1
//无符号的:65535

5.取值范围

在这里插入图片描述
在这里插入图片描述
二进制、十进制、十六进制的表示
1、十六进制(英文dao名称:Hexadecimal),是计算机中数据的一种表示方法。同我们日常生活中的表示法不一样。它由0-9,A-F组成,字母不区分大小写。
2、十六进制与10进制的对应关系是:0-9对应0-9;A-F对应10-15;N进制的数可以用0~(N-1)的数表示,超过9的用字母A-F。
在这里插入图片描述
符号位
在这里插入图片描述

#include <stdio.h>
#include<math.h>
int main()
{
    int result = pow(2, 32)-1;
    printf("result:%d\n", result);
    return 0;
}
//result:2147483647
#include <stdio.h>
#include<math.h>
int main()
{
    unsigned int result = pow(2,32)-1;
    printf("result:%u\n", result);
    return 0;
}
//result:4294967295

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

6.字符和字符串

字符

#include <stdio.h>
int main()
{
    char a = 'A';
    char b = 66;
    char c = 97;
    printf("%c=%d\n", a, a);
    printf("%c=%d\n", b, b);
    printf("%c=%d\n", c, c);
    return 0;
}
//A=65
//B=66
//a=97
#include <stdio.h>
int main()
{
    char height;//取值范围:-128~127
    unsigned char heights;
    height = 188;
    heights = 188;
    printf("错误身高:%d\n", height);
    printf("正确身高:%d\n", heights);
    return 0;
}
//错误身高:-68
//正确身高 : 188

字符串

#include <stdio.h>
int main()
{
    char name[] = { 'A','P','P','L','E','\0' };
    char names[] = { "ORANGE" };
    printf("%s\n", name);
    printf("%s\n", names);
    return 0;
}
//APPLE
//ORANGE

7.运算符

算术运算符
在这里插入图片描述
关系运算符
在这里插入图片描述
在这里插入图片描述
逻辑运算符
在这里插入图片描述
复合的赋值运算符
在这里插入图片描述
自增和自减运算符
在这里插入图片描述

#include<stdio.h>
int main()
{
	int a = 5;
	int b;
	b = ++a;
	printf("b= %d\n",b);//6

	int c = 5;
	int d;
	d = c++;
	printf("d= %d\n", d);//5
	return 0;
}

条件运算符
在这里插入图片描述

#include<stdio.h>
int main()
{
	int max = 0;
	printf("请输入两个整数:");
	int a = 0;
	int b = 0;
	scanf("%d", &a);
	scanf("%d", &b);
	//if (a > b)
	//{
	//	max = a;
	//}
	//else
	//{
	//	max = b;
	//}
	max = a > b ? a : b;
	printf("最大的值为:%d", max);
	return 0;
}
//请输入两个整数:3213 32
//最大的值为 : 3213

8.if语句

#include <stdio.h>
int main()
{
    int a;
    printf("请输入你的成绩:");
    scanf("%d", &a);
    if (a>=90 && a<=100)
    {
        printf("优");
    }
    else if (a >= 80 && a < 90)
    {
        printf("良");
    }
    else
    {
        printf("及格");
    }
    return 0;
}
//请输入你的成绩:89
//良

9.switch语句

#include <stdio.h>
int main()
{
    char a;
    printf("请输入你的成绩:");
    scanf("%c", &a);
    switch (a)
    {
    case 'A':
        printf("优");
        break;
    case 'B':
        printf("良");
        break;
    case 'C':
        printf("中等");
        break;
    case 'D':
        printf("及格");
        break;
    default:
        printf("不及格");
        break;
    }
    return 0;
}
//请输入你的成绩:B
//良

10.while语句和do while语句

#include <stdio.h>
int main()
{
    int i = 1; 
    int sum = 0;
    while (i<=100)
    {
        sum = sum + i;
        i = i + 1;
    }
    printf("结果是:%d", sum);
    return 0;
}
//结果是:5050
#include <stdio.h>
int main()
{
    int count = 0;
	printf("请输入一行英语字符:");
	while (getchar()!='\n')
	{
		count = count + 1;
	}
	printf("你总共输入%d个字符!\n", count);
    return 0;
}
//请输入一行英语字符:iphone12
//你总共输入8个字符!
#include <stdio.h>
int main()
{
    int a = 10;
    do
    {
        printf("a 的值: %d\n", a);
        a = a + 1;
    } while (a < 20);
    return 0;
}
//a 的值: 10
//a 的值: 11
//a 的值: 12
//a 的值: 13
//a 的值: 14
//a 的值: 15
//a 的值: 16
//a 的值: 17
//a 的值: 18
//a 的值: 19

11.for语句和循环嵌套

#include<stdio.h>
int main()
{
	for (int i = 1; i <= 10; i++)
	{
		printf("%d\n",i);
	}
	return 0;
}
//1
//2
//3
//4
//5
//6
//7
//8
//9
//10
#include<stdio.h>
int main()
{
	for (int i = 1; i <= 3; i++)
	{
		for (int j = 1; j <= 3; j++)
		{
			printf("i=%d,j=%d\n", i, j);
		}
	}
	return 0;
}
//i = 1, j = 1
//i = 1, j = 2
//i = 1, j = 3
//i = 2, j = 1
//i = 2, j = 2
//i = 2, j = 3
//i = 3, j = 1
//i = 3, j = 2
//i = 3, j = 3

12.break语句和continue语句

continue语句

#include<stdio.h>
int main()
{
	for (int i = 1; i <= 5; i++)
	{
		if (i == 3)
		{
			printf("Hello World\n");
			continue;
		}
		printf("%d\n", i);
	}
	return 0;
}
//1
//2
//Hello World
//4
//5

break语句

#include<stdio.h>
int main()
{
	for (int i = 1; i <= 5; i++)
	{
		if (i == 3)
		{
			printf("Hello World\n");
			break;
		}
		printf("%d\n", i);
	}
	return 0;
}
//1
//2
//Hello World

13.goto语句

#include<stdio.h>
int main()
{
	int i;
	for (i = 0; i <= 10; i++)
	{
		if (i > 5)
		{
			goto A;
		}
	}
	A:printf("i=%d", i);
	return 0;
}
//i = 6

14.数组

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

#include<stdio.h>
int main()
{
	int a[5];
	int b[] = {4,3,2,1,0};
	int c[] = { [1] =315,[2] = 5213 ,[3]=326,[0] = 313 ,[4] = 66 };
	for (int i = 0; i <5; i++)
	{
		a[i] = i;
	}
	for (int i = 0; i < 5; i++)
	{
		printf("%d ", a[i]);
	}
	printf("\n");
	for (int i = 0; i < 5; i++)
	{
		printf("%d ",b[i]);
	}
	printf("\n");
	for (int i = 0; i < 5; i++)
	{
		printf("%d ", c[i]);
	}
	return 0;
}
//0 1 2 3 4
//4 3 2 1 0
//313 315 5213 326 66

15.字符串处理函数

#include<stdio.h>
int main()
{
	char str1[10] = { 'A','P','P','L','E','\0' };//初始化字符数组的每个元素
	char str2[] = { 'A','P','P','L','E','\0' };//可以不写元素的个数,因为编译器会自动计算
	char str3[] = { "APPLE" };//使用字符串常量初始化字符数组
	char str4[] = "APPLE";//使用字符串常量初始化,可以省略大括号
	printf("str1=%s\n", str1);
	printf("str2=%s\n", str2);
	printf("str3=%s\n", str3);
	printf("str4=%s\n", str4);

	return 0;

}
//str1=APPLE
//str2=APPLE
//str3=APPLE
//str4=APPLE

在这里插入图片描述

#include<stdio.h>
#include<string.h>
int main()
{
	char str[] = "I Love You!";
	printf("sizeof str=%d\n", sizeof(str));
	printf("strlen str=%d\n", strlen(str));
	return 0;

}
//sizeof str = 12 包含字符串最后一个字符\0
//strlen str = 11 不包含字符串最后一个字符\0

在这里插入图片描述

strcpy

#include<stdio.h>
#include<string.h>
int main()
{
	char str1[] = "Remember ONE";
	char str2[] = "Remember TWO";
	char str3[100];

	strcpy(str1, str2);/* 复制 str2 到 str1 */
	strcpy(str3,"Copy Successful");/* 复制 Copy Successful 到 str3 */

	printf("str1:%s\n",str1);
	printf("str2:%s\n",str2);
	printf("str3:%s\n",str3);
	return 0;

}
//str1:Remember TWO
//str2 : Remember TWO
//str3 : Copy Successful

注意:str1和str2的字符数组长度一定要相同,str3的字符数组长度也要大于要复制字符数组的长度,如果长度不相同会出现报错的情况

strncpy

#include<stdio.h>
#include<string.h>
int main()
{
	char str1[] = "Remember ONE";
	char str2[30];

	strncpy(str2, str1,8);
	str2[8] = '\0';//追加一个结束符
	printf("str2=%s\n", str2);

	return 0;
}

//str2=Remember

在这里插入图片描述

strcat

#include<stdio.h>
#include<string.h>
int main()
{
	char str1[15] = "Hello ";//这里要设置长度,vs2019会溢出
	char str2[] = "World!";

	strcat(str1, str2);

	printf("str1:%s\n", str1);
	return 0;
}
//str1:Hello World!

strncat

#include<stdio.h>
#include<string.h>
int main()
{
	char str1[15] = "Hello ";//这里要设置长度,vs2019会溢出
	char str2[] = "World!";

	strncat(str1,str2,5);

	printf("str1:%s\n", str1);
	return 0;
}
//str1:Hello World

在这里插入图片描述

strcmp

#include<stdio.h>
#include<string.h>
int main()
{
	char str1[] = "Fly";
	char str2[] = "Fly";

	if (!strcmp(str1, str2))//strcmp(str1, str2) 返回为0 取反为1
	{
		printf("两个字符串完全一致\n");
	}
	else
	{
		printf("两个字符串存在差异\n");
	}
	return 0;
}
//两个字符串完全一致


strncmp

#include<stdio.h>
#include<string.h>
int main()
{
	char str1[] = "Fly";
	char str2[] = "Fly!";

	if (!strncmp(str1, str2,4))//strcmp(str1, str2) 返回为0 取反为1
	{
		printf("两个字符串完全一致\n");
	}
	else
	{
		printf("两个字符串存在差异\n");//加了!
	}
	return 0;
}
//两个字符串存在差异

16.二维数组

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

#include<stdio.h>
int main()
{
	int a[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };//3行4列
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 4; j++)
		{
			printf("%d ", a[i][j]);
		}
		printf("\n");
	}
	return 0;
}
//1 2 3 4
//5 6 7 8
//9 10 11 12
#include<stdio.h>
int main()
{
	int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};//3行4列
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 4; j++)
		{
			printf("%d ", a[i][j]);
		}
		printf("\n");
	}
	return 0;
}
//1 2 3 4
//5 6 7 8
//9 10 11 12

在这里插入图片描述

#include<stdio.h>
int main()
{
	int a[3][4] = {{1},{5},{9}};//3行4列
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 4; j++)
		{
			printf("%d ", a[i][j]);
		}
		printf("\n");
	}
	return 0;
}
//1 0 0 0
//5 0 0 0
//9 0 0 0
#include<stdio.h>
int main()
{
	int a[3][4] = {0};//3行4列
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 4; j++)
		{
			printf("%d ", a[i][j]);
		}
		printf("\n");
	}
	return 0;
}
//0 0 0 0
//0 0 0 0
//0 0 0 0
#include<stdio.h>
int main()
{
	int a[3][4] = { [0] [0] = 1,[1][1] = 2,[2][2] = 3};//3行4列
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 4; j++)
		{
			printf("%d ", a[i][j]);
		}
		printf("\n");
	}
	return 0;
}
//1 0 0 0
//0 2 0 0
//0 0 3 0

在这里插入图片描述

#include<stdio.h>
int main()
{
	int a[][4] = { {1,2,3,4},{5,6,7,8},{9,10,11,12} };//3行4列
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 4; j++)
		{
			printf("%d ", a[i][j]);
		}
		printf("\n");
	}
	return 0;
}
//1 2 3 4
//5 6 7 8
//9 10 11 12

17.指针

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

#include<stdio.h>
int main()
{
	char a = 'F';
	int f = 123;

	char *pa = &a;
	int *pb = &f;
	printf("a=%c\n", *pa);
	printf("f=%d\n", *pb);

	*pa = 'C';
	*pb += 1;
	printf("now a=%c\n", *pa);
	printf("now f=%d\n", *pb);

	printf("sizeof pa=%d\n", sizeof(*pa));//*pa获取的是a的大小  a是char类型当然是1个字节
	printf("sizeof pb=%d\n", sizeof(*pb));//*pb获取的是f的大小  f是int类型当然是4个字节
	printf("sizeof pa=%d\n", sizeof(pa));//4个字节存放一个地址
	printf("sizeof pb=%d\n", sizeof(pb));//4个字节存放一个地址

	printf("the addr of a is:%p\n",pa);//%p打印地址类型的数据
	printf("the addr of a is:%p\n", pb);//%p打印地址类型的数据
	return 0;
}
//a = F
//f = 123
//now a = C
//now f = 124
//sizeof pa = 1
//sizeof pb = 4
//sizeof pa = 4
//sizeof pb = 4
//the addr of a is : 00BBF6EF
//the addr of a is : 00BBF6E0
  • 19
    点赞
  • 152
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值