C语言X天学习计划——基础通关

万丈高楼平地起,打好基础不费力

写在前面:本文主要是结合郝斌老师的教程所写。如有不恰当的地方,欢迎大家指点批评。

铁子是否单片机之路遇到阻塞了?

在这里插入图片描述

C语言——通往有钱人的阶梯

在这里插入图片描述

不说胡话

在这里插入图片描述

加油 奥利给

在这里插入图片描述

C语言预备知识

  1. CPU、内存条、硬盘、显卡、主板、显示器之间的关系?
    win98后CPU不能直接操作硬盘中的数据。
    详细阐述上述之间的关系
  2. 简单程序如何运行起来?
    vc++ 6.0 中的compile+build生成一个.exe文件
    !调用CPU运行.exe文件
Created with Raphaël 2.2.0 输入C程序 编辑 源程序(.c文件) 编译(编译器) 目标程序(机器代码 .obj文件) 连接器(<--------其他文件或者库函数协助) 可执行程序(.exe文件)
  1. 数据类型?
    数据存储前对数据进行分类:
    int(整数4字节) ----- short int(短整型2字节) ----- long int(长整型8字节)
    float(单精度浮点数4字节) ------ double(双精度浮点数8字节)
    char(字符1字节)
    复合数据类型:结构体、 枚举、 共用体
  2. 变量?
    内存中的一些存储空间
  3. 内存条、软件vc++ 6.0 、操作系统的关系?
    编程软件向操作系统发出请求,操作系统的内存条分配空闲空间,变量与空间的地址一一对应
  4. 变量的初始化?
    变量赋初值,没有赋初值时会有填充值: -858993460
    return; 作用相当于break;
    return 0; 用于返回非void的函数的值。
  5. 定义变量?
    数据类型 变量名 = 值;
    int i = 3;
    int i , j;
    i = j = 5;
  6. 进制?
    X进制:逢X进一
  7. 常量?
    数的表示:整数、浮点、科学计数。字符:“AB”,“A”==‘A’ + '\0’
    字符常量:单引号’ ’ 字符串常量:双引号" "
  8. 常量以什么样的二进制代码存储在计算机中?
    字符、整数以补码的方式存储在计算机中
    实数以IEEE754标准转化为二进制代码存储在计算机中

    科学计数与IEEE754渊源
  9. 字节?
    存储数据的单位,并且是硬件所能访问的最小单位
    1byte = 8 bit
    1K = 1024 byte
    1M = 1024K
    1G = 1024M
  10. 不同数据类型间的赋值?
    整型数据
整型
字符串char
短整型 short int
整型 int
长整型 long int
无符号短整型 unsigned short
无符号整型 unsigned int
无符号长整型 unsigned long
有符号数据类型
  • 占据范围大的赋值给占据字节小的
int a = 2147483648;		// 超出了int 定义的范围 程序会报错输出
int b;
printf("a = %d\n", a);	// %d 上限范围小于a的值

b = a;
printf("b = %u\n", b);	// %u 无符号类型 范围更大
/*
在vc++6.0中运行结果为:
a = -2147483648
b = 2147483648
*/
  • 占据范围小的赋值给占据字节大的
# include <stdio.h>

int main(void)
{
	char a = 255;		
	short b;	// char 占据1*8位,short 占据2*8位 高位用1填充

	b = a;
	printf("b = %d\n", b);

	return 0;
}
/*
在vc++6.0中运行结果为:
b = -1
*/

b = -1的来历
13. ASCII?
字符与整数的对应法则
A—65 a------97

14. 字符的存储?
字符与整数的存储方式一致
15. 输入输出函数?
printf() 用法

/*
	2020年12月31日
	printf的用方法简介
*/

# include <stdio.h>

int main(void)		// 入口函数是int main 必须有返回值 return 0;
{

	int i = 169;
	
	printf("i = %d\n", i);	
	printf("i = %o\n", i);
	printf("i = %x\n", i);
	printf("i = %X\n", i);
	printf("i = %#X\n", i);		//推荐

	//printf("Hello World!\n");


	return 0;	// 返回值
}

/*
--------------------------------------
在VC++6.0中测试结果:
i = 169
i = 251
i = a9
i = A9
i = 0XA9
Hello World!
--------------------------------------
*/

输出控制符意义?
~ 01 组成的代码既可以作为数据也可以作为指令
~输出控制符不同,代表的数据不同

scanf()用法

一个输入

/*
	2020年12月31日
	scanf一个输入的用法

*/
# include <stdio.h>

int main(void)
{
	int i;

	scanf("%d", &i);	//输入数据以字符样式存储,输出控制符将字符转为十进制整数
	printf("i = %d\n", i);


	return 0;
}



/*
------------------------------
在VC++6.0中运行的结果:
12
i = 12
------------------------------
*/

多个输入

/*
	2020年12月31日
    	scanf多个输入的用法

*/
# include <stdio.h>

int main(void)
{

	int i, j , k;
	
	printf("请输入三个数字中间用空格分隔!\n");

	scanf("%d %d %d", &i, &j, &k);		//非输出控制符原样输出

	printf("i = %d, j = %d, k = %d\n", i, j, k);

	return 0;
}

/*
-------------------------------------------
在VC++6.0中运行的结果:
请输入三个数字中间用空格分隔!
15 6 8
i = 15, j = 6, k = 8
-------------------------------------------
*/

防止用户输错数据

/*
	2020年12月31日
		getchar()用于防止用户输错数据
*/

# include <stdio.h>

int main(void)
{

	int i;
	char ch;
	scanf("%d", &i);
	printf("i = %d\n", i);

	// 用于防止第一个用户输错数据
	while ((ch=getchar()) != '\n')
		continue;
	int j;
	scanf("%d", &j);
	printf("j = %d\n", j);

	return 0;

}

/*
---------------------------------
在VC++6.0中运行结果:
456
i = 456
95
j = 95
---------------------------------
*/
  1. 运算符
    算数运算符: +、 - 、 、 / 、 %
    关系运算符: > 、< 、 >= 、 <=、 !=(不等) 、==(等于)
    逻辑运算符:&&(与)、||(或)、!(非)
    赋值运算符: = 、 += 、 -=
    优先级别:算数 > 关系 > 逻辑 > 赋值
    *
    ~ 除法(被除数、除数只要有一个为浮点数则商为浮点数):
    16/5 == 3
    16/5.0 == 3.20000
    -16/5 == -3
    -16/-5 == 3

    ~取余(运算对象必须为整数,符号与被除数相同):
    13%3 == 1
    13%-3 == 1
    -13%3 == -1

    ~&&:有假即假
    ||:一真则真

    三目运算符 A ? B : C(A成立执行B否则执行C)
    逗号表达式 A, B, C, D (执行最后一个D)
/*
	2021年1月5日
	逗号运算符
*/

# include <stdio.h>

int main(void)
{
	int i;
	int j = 5;

	i  = (j++, ++j, j+2, j-3);	// j++,++j都完成了j=j+1操作,j+2 != (j+=2)所以j+2是临时将j+2但不赋值给j
	printf("i = %d\n", i);

	return 0;
}

/*
---------------------------------------------
在VC++6.0中运行结果为:
i = 4
过程:j++、++j后j变为7 输出最后一个j-3则为4
---------------------------------------------
*/

&&前面为假后面不执行,||前面为真后面不需要执行

/*
	2020年12月31日
	&&的短路特性
*/
# include <stdio.h>

int main(void)
{
	int i = 2;
	int j = 5;
	int m;

	m = (1>2) && (j = 6);	//前面的表达式错误不在运行j = 6;
	printf("m = %d, j = %d\n", m, j);

	return 0;

}


/*
----------------------------------------
在vc++6.0中运行结果:
m = 0, j = 5
----------------------------------------
*/

例1:一元二次方程

// 一元二次方程
# include <stdio.h> 
# include <math.h>

int main(void)
{
	//系数
	int a = 1;
	int b = 9;
	int c = 3;
	double delta;	// b*b - 4*a*c
	double x1;
	double x2;

	delta = b*b - 4*a*c;
	if(delta>0)
	{
		x1 = (-b + sqrt(delta)) / (2*a);
		x2 = (-b - sqrt(delta)) / (2*a);
		printf("该一元二次方程有两个解, x1=%f,x2=%f\n", x1, x2);
	}
	else if (delta == 0)
	{
		x1 = (-b) / (2*a);
		x2 = x1;
		printf("该一元二次方程有唯一解, x1=x2=%f\n", x1, x2);
	}
	else
	{
	printf("该一元二次方程无解\n");	
	}

	return 0;
}

例2:任意半径求圆的周长

/*
	2020年12月31日09:21:57
	目的:计算圆的周长
*/
# include <stdio.h>
# include <math.h>
# define PI 3.14	//宏定义

int main(void)

{
	int radius;
	float circum;

	scanf("%d", &radius);
	circum = 2 * PI * radius;
	printf("变量radius地址是%d\n", &radius);	//&取地址
	printf("半径开方值是%f\n", sqrt(radius));	
	printf("半径是%d, 周长是%.2f\n", radius, circum);	//%.2f取小数点后2位,默认取小数点后6位
	
	return 0;
}

/*
------------------------------------
在VC++6.0中运行结果是:
5
变量radius地址是1703724
半径开方值是2.236068
半径是5, 周长是31.40
------------------------------------
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想前

看客 多少意思意思

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值