**写在前面:**本系列内容均为自学内容,旨在补一下C语言知识,以便更好的学习STM32单片机,笔者没有系统的看过相关教学视频,所以不会有太多的理论解释,并且可能会存在很多问题,如果有大佬路过发现了,还望帮忙指正,感谢各位。
学习目标
1、实现输入和输出;
2、进行简单的加减乘除操作(任选其一即可);
3、尝试输出二维数组。
使用的软件为《Visual Studio 2022》和《Code:Blocks》
一、输入和输出
先看一下C语言中的几种基本的数据类型,这里只列举4中,其他等后面用到的时候在看:
表1-1:
数据类型 | 长度(bit) | 范围 |
---|---|---|
char(字符型) | 8 | ASCII字符 |
int(整型) | 16 | -32768~32767 |
float(单精度型) | 32 | 约精确到6位数 |
double(双精度型) | 64 | 约精确到12位数 |
上述表格中我们使用的是int类型的;
在C语言中输出函数位printf();输入函数位scanf();,此外在使用输出输入函数时还需要注意格式,这是就要用到格式字符:
表1-2:
格式字符 | 用法 |
---|---|
%d | 十进制整型输出 |
%ld | 十进制长整型输出 |
%o | 以八进制数形式输出 |
%x | 以十六进制数形式输出 |
%u | 以十进制unsigned(无符号)型输出 |
%c | 输出一个字符 |
%s | 输出一个字符串 |
%f | 输出一个实数,以小数形式输出,默认保留小数点后6位 |
%.100f | 保留小数点后100位 |
%e | 以指数形式输出 |
%g | 根据大小自动选择f格式或者e格式,且不输出0 |
以上表格来自网络,笔者只使用了%d类型,其他并未使用验证;
看一下程序:
#include "stdio.h" //c语言库文件
int a; //定义一个整型变量
int main()
{
printf("input there data:\n"); //输出一段英文
scanf("%d",&a); //手动输入一个整型数字
//scanf_s("%d",&a); //vs2022软件使用这个函数输入
printf("%d", a); //将输入的数字显示在屏幕上
}
上述程序需要注意的是,软件如果使用VS2022,那么输入函数要使用scanf_s(),否则可能没办法编译通过,程序中“\n”表示后面的内容在下一行显示,下面是正确操作后的最终界面,使用的软件是:《Code:Blocks》:
图1-1:
我们主要看前三行:第一行是程序中的第一个输出函数所输出的内容,第二行的1是手动输入的数字,输入完成后按下回车键就会显示第三行的1,这是程序中第二个输出函数输出的内容,第四行不用管,第五行是说,按下任意键退出这个界面,以结束程序的运行;
二、简单的运算
在这个目标中我们要完成以下计算:1×2×3×4×5,直接看程序:
#include "stdio.h" //包含c语言库文件
int b=1 ,c; //定义变量,并将其中一个赋值
int main()
{
//这个for循环就是为了计算1*2*3*4*5,先让1*2,然后用得出的数据×3,再用相同的方法与4和5相乘,最后得到结果
for(c = 2; c < 6; c++)
{
b = b * c;
}
printf("%d", b);
}
这个就不放运算结果的截图了,这个运算最后结果为120;
三、尝试输出二维数组
先看一下数组:a[8]={1,2,3,4,5,6,7,8},其中a[ ]表示数组,中括号中的8表示有8个成员,等号后面的大括号里的数字就是这8个成员,当然这是个一维数组;二维数组与之类似:b[2][2]={{1,2},{3,4}},其中b[2][2]表示二维数组有两行两列,前面是行,后面是列,后面大括号中,{1,2}表示第一行的数据是1和2,{3,4}表示第二行数据,二维数组定义时,行数可以不写,但列数一定要写;在数组中,位数从0开始数,比如上述数组a,其成员分别为a[0]~a[7],共8位;
#include "stdio.h" //包含c语言库文件
int i;
int j,g[8] = { 4, 6, 8, 5, 2, 3, 10, 5 };
int s1=0, s2=0, ss[][2] = { {1,2},{3,4},{5,6},{7,8} };
int main()
{
//在一维数组中找出数字大于等于5的,并将位置标出来,位置从1开始数
for (j = 0; j < 8; j++)
{
if (g[j] >= 5)
{
i = (j + 1);//用i表示位置,编号从1开始
printf("%d,%d\n", g[j], i);
}
}
printf("\n\n"); //将一维数组和二维数组的结果分开
//输出二维数组,并输出指定位数的数字
for (s1 = 0; s1 < 4; s1++)//行数
{
for(s2 = 0; s2 < 2; s2++)//列数
printf("%-4d", ss[s1][s2]);
printf("\n");//每输出完一行就输出一次\n,防止输出成1行
}
printf("%d", ss[3][1]);
printf("\n\n");
}
在上述程序中,我们同时操作了一维数组和二维数组,对一维数组,主要是取出其中大于等于5的数,并将其在数组中的位置输出出来,二维数组,主要是将上面定义的数组输出到屏幕上,并将其中一位数输出,下面看结果:
图1-2:
图片中,前5行是一维数组的计算结果,前面是数据,后面是位置,中间用逗号隔开;后5行中,6~9行是定义的二维数组,共4行2列,最后的8是输出的指定数据。
以上仅作笔记参考,不做教学,感谢观看。