#前言:
作者是一个PYTHON选手开端接触编程语言的,在学习C语言过程中遇到了“些许风霜”,作者将把C语言的部分知识要点,学习心得以文章形式发表,由于作者目前还是一个菜鸟,难以避免错误和存在观点片面的时候,非常感谢读者指正!希望能在这里与大家共同进步,早日成为“大佬”!
编程语言:
我建议先使用 Dev C++这一款编译器,较为方便(适合小白那种),要是有一些基础了,为了真正的方便(有一些提词功能),可以使用VS或者Clion(大家可以找资源白嫖)。当然这不是重点要是有实力记事本也可以用。
1.第一个C语言程序:
这是每一个C语言程序所必须的模板。(附上代码)
#include<stdio.h>
int main()
{
return 0;
}
2.数据类型:
1.概述
在C语言中,数据类型可以分为:基本数据类型(整型、浮点型/实型、字符型)、构造数据类型(数组、指针、结构体、共用体、枚举)以及空类型(万能类型void)。常用的有:整形(int)、字符型(char)、短整型(short)、长整型(long)、单精度浮点型(float)、双精度浮点型(double)。
在C语言中,数据类型的精确度主要取决于它们在内存中的存储空间和所支持的数值范围。以下是几种基本数据类型在C语言中的精度特点:
整型(int):通常占用4字节(32位),可以表示的范围因平台而异,一般为-2^31到2^31-1(有符号)或0到2^32-1(无符号)。例如,在大多数系统上,
int
类型的精度较低。长整型(long int):占用8字节(64位),提供了更大的整数范围,但具体范围仍取决于平台,如-2^63到2^63-1(有符号)或0到2^64-1(无符号)。
无符号整型(unsigned int):同整型,但只表示非负数值。
浮点型(float):通常占4字节,精度较差,能表示大约6-7位有效数字,例如IEEE 754标准的32位单精度浮点数。
双精度浮点型(double):占用8字节,精度较高,通常有15位小数精度,例如单精度的两倍。
长双精度浮点型(long double):提供最高的精度,但不是所有系统都支持,其大小和精度取决于编译器。
char//字符数据类型//就是不是数字的字符
short//短整型//就是数字小(绝对值)的整数,很少用
int //整型//就是整数
long//长整型//就是数字(绝对值)大的整数
long long//更长的整型//很少用
float//单精度浮点数//就是小数
double//双精度浮点数//小数位数多的小数
2.定义一个数据类型:
定义要先声明数据类型,还要加分号,%是占位符
%c:字符。
%d:十进制整数。
%i:整数,基本等同于%d。
%f:小数(包含 float 类型和 double类型) 。
%hd:十进制 short int型。
%ho:八进制 short int型。
%hx:十六进制 short int类型。
%Lf: long double类型浮点。
%0:八进制整数。
%p:指针。
%s:字符串。
%u:符(unsigned int)。
%x:十六进制整数。
%%:输出一个百分号。
#include<stdio.h>
int main()
{
int num;
num=9;
float nums;
nums=9.4449;
printf("%d\n",num);
printf("%.3f\n",nums);
return 0;
}
3.枚举常量 - enum
在C语言中,枚举(enumeration)是一种用户自定义的数据类型,它将整数值赋给一组命名的标识符,也就是枚举常量。这些常量可以帮助程序员更好地理解和管理代码中的状态或选项。
#include <stdio.h>
int main()
{
enum day
{
shu = 23, s, k, l, ss = 99
};
printf("%d %d %d %d %d", shu, s, k, l, ss);
return 0;
}
23 24 25 26 99
4,符号常量 - #define:
在C语言中,常量是使用频率很高的一个量。常量是指在程序运行过程中,其值不能被改变的量。常量常使用#define来定义。
使用#define定义的常量也称为符号常量,可以提高程序的运行效率。
1)#define 宏名 宏值
2)#define 宏名(参数列表) 表达式
(1)提前声明一个常量
#define N 100
(2)提前声明一个函数
#define anxian(x,y) x*y
...
A = anxian( 2+3, 1+2 );
5.数据类型-字符串
注意点:数组中存在的后置0、'\0'
#include <stdio.h>
int main()
{
char arr1[] = "anxian";
//错误情况char arr2[6] = { 'a','n','x','i','a','n' };//错误--示范,后面有一个后置0******
char arr22[7] = { 'a','n','x','i','a','n' };//写出具体数组大小
char arr3[] = { 'a','n','x','i','a','n','\0' };//不写出具体大小
printf("%s\n", arr1);
printf("%s\n", arr2);
printf("%s\n", arr22);
printf("%s\n", arr3);
printf("%d\n", sizeof(arr3));
printf("%d\n", sizeof(arr22));
printf("%d\n", sizeof(arr1));
return 0;
}
6.转义字符
\n
- 表示换行符(Newline),在控制台上相当于按下Enter键。\t
- 表示制表符(Tab),通常用于对齐。\'
- 用于表示单引号,因为单引号本身在字符串中用于引用字符。\"
- 用于表示双引号\0
- 表示字符串的结束,也称为NULL字符\b
- 退格符,向左移动一格。\f
- 形式喂食(Form Feed),在打印机中用于分页。\r
- 回车符,相当于按下Enter键。
char str[] = "Hello\nWorld";
printf("%-5s", "Tab"); // 输出 "Tab ",注意空格是由制表符产生的
char quoteChar = '\'';
printf("A single quote: %c", quoteChar);
char doubleQuote = '\"';
printf("A double quote: %c", doubleQuote);
7.判断选择语句-if else else if switch
#include <stdio.h>
int main()
{
int n;
printf("输入该学生成绩:");
scanf("%d", &n);
if (n >= 0 && n <= 101)
{
if (n >= 90)
printf("成绩为A");
else if (n >= 80 && n < 90)
printf("成绩为B");
else if (n >= 70 && n < 80)
printf("成绩为C");
else if (n >= 60 && n < 70)
printf("成绩为D");
else
printf("成绩为E");
}
else
printf("数据错误");
return 0;
}
#switch:循环从case中开始寻找,结束需要出现break,否则会持续向下判断输出。
//(2)switch //循环从case 中开始寻找,结束需要break,否则会持续向后寻找并输出
#include <stdio.h>
int main()
{
int day;
printf("输入一个数字:");
scanf("%d", &day);
switch (day)
{
case 1:printf("星期一\n"); break;
case 2:printf("星期二\n"); break;
case 3:printf("星期三\n"); break;
case 4:printf("星期四\n"); break;
case 5:printf("星期五\n"); break;
case 6:printf("星期六\n"); break;
case 7:printf("星期天\n"); break;
default:printf("数据错误"); break;
}
return 0;
}
8.循环语句 for while do...while
1.for
//输出0到七
#include <stdio.h>
int main()
{
int i, j, k;
for (i = 0; i <= 7; i++)
{
printf("%d\n", i);
}
return 0;
}
2.while
#include <stdio.h>
int main()
{
int i = 0;
while (i <= 9)
{
i += 1;
printf("%d\n", i);
}
return 0;
}
3.do...while
先执行do语句里面的内容,再执行while语句的判断
#include <stdio.h>
int main()
{
int i = 10;
do
{
i += 1;
printf("%d\n", i);
} while (i < 20);
}
-----------------------系列第一篇,点个关注不迷路。