基本数据类型和顺序程序设计
1. C语言基本数据类型
C语言中的数据类型可以分为两类:
- 基本数据类型(Primitive Data Types):包括整型、字符型、浮点型等。
- 派生数据类型(Derived Data Types):例如数组、指针、结构体等。
2. 基本数据类型
2.1 整型(Integer)
整型用于存储整数值。根据存储的大小不同,C语言提供了多个整型数据类型:
int:标准整型,通常为4字节(32位)。short:短整型,通常为2字节。long:长整型,通常为4字节。long long:更长的整型,通常为8字节。
每种类型有无符号和有符号之分,默认情况下,int 是有符号的。
示例程序:
#include <stdio.h>
int main() {
int a = 10; // 定义一个整数变量a
short b = 32767; // 定义一个短整型变量b
long c = 100000L; // 定义一个长整型变量c
long long d = 1000000000LL; // 定义一个长长整型变量d
printf("int: %d\n", a);
printf("short: %d\n", b);
printf("long: %ld\n", c);
printf("long long: %lld\n", d);
return 0;
}
2.2 字符型(Character)
字符型用于存储单个字符。C语言使用 char 数据类型来表示字符。char 类型通常占用1个字节。
char:用于表示单个字符,存储ASCII码。unsigned char:无符号字符类型,存储0到255之间的值。signed char:有符号字符类型,存储-128到127之间的值。
示例程序:
#include <stdio.h>
int main() {
char ch = 'A'; // 定义字符变量ch,存储字符A
unsigned char uch = 255; // 无符号字符变量
printf("char: %c\n", ch); // 输出字符
printf("unsigned char: %u\n", uch); // 输出无符号字符值
return 0;
}
2.3 浮点型(Floating Point)
浮点型用于存储实数。C语言提供了两种浮点类型:
float:单精度浮点数,通常占用4字节。double:双精度浮点数,通常占用8字节。long double:扩展精度浮点数,通常占用12或16字节。
示例程序:
#include <stdio.h>
int main() {
float a = 3.14f; // 定义一个浮点型变量a
double b = 3.1415926535; // 定义一个双精度浮点型变量b
long double c = 3.141592653589793; // 定义一个扩展精度浮点型变量c
printf("float: %.2f\n", a); // 输出浮点数,保留两位小数
printf("double: %.10f\n", b); // 输出双精度浮点数,保留十位小数
printf("long double: %.15Lf\n", c); // 输出扩展精度浮点数,保留十五位小数
return 0;
}
2.4 布尔型(Boolean)
C语言本身不直接提供布尔类型,但可以通过 stdbool.h 头文件定义布尔类型。
bool:布尔类型,值为true或false。true和false是在stdbool.h中定义的。
示例程序:
#include <stdio.h>
#include <stdbool.h> // 引入stdbool.h头文件
int main() {
bool isEven = true; // 定义一个布尔型变量isEven
bool isOdd = false; // 定义一个布尔型变量isOdd
if (isEven) {
printf("The number is even.\n");
}
if (!isOdd) {
printf("The number is not odd.\n");
}
return 0;
}
2.5 空类型(Void)
void 是一种特殊的数据类型,表示“没有类型”。void 通常用于函数返回类型,表示该函数不返回任何值。
- 用于函数的返回类型,表示该函数没有返回值。
- 用于指针类型,表示指针指向未知类型的数据。
示例程序:
#include <stdio.h>
void printMessage(void) { // 返回类型为void,表示函数没有返回值
printf("Hello, this function doesn't return anything!\n");
}
int main() {
printMessage();
return 0;
}
3. 总结
- 整型:用于存储整数,常见的有
int、short、long、long long。 - 字符型:用于存储单个字符,通常使用
char。 - 浮点型:用于存储实数,常用的有
float和double。 - 布尔型:用于存储真或假,可以通过
stdbool.h使用bool类型。 - 空类型:用于表示函数没有返回值或指针类型不确定。
通过理解和掌握这些基本数据类型,你可以为后续的C语言学习打下坚实的基础。
4. 课后练习
- 编写一个程序,输入一个整数,判断它是正数、负数还是零。
- 修改一个程序,输入一个浮点数,判断它是整数还是小数。
- 编写一个程序,使用
unsigned int数据类型,输出一个无符号整数的值。
C语言常量与变量
1. 常量与变量的基本概念
1.1 常量(Constant)
常量是指在程序执行过程中其值不发生变化的数据。常量的定义通常在声明时赋值,并且不能在程序的后续部分修改。
常量的种类:
- 字面常量(Literal Constants) :直接在程序中写出的常量值,例如整数
10、字符'A'等。 - 常量变量(Constant Variables) :使用
const关键字定义的常量变量,值在初始化后不可修改。
定义常量的方式:
-
字面常量:
- 直接使用常量值,例如
10、3.14、'A'等。
- 直接使用常量值,例如
-
常量变量:
- 使用
const关键字,定义不可修改的常量。
const int MAX_SIZE = 100; // 定义常量MAX_SIZE - 使用
示例程序:
#include <stdio.h>
int main() {
const int MAX_SIZE = 100; // 定义常量MAX_SIZE
int arr[MAX_SIZE]; // 使用常量MAX_SIZE作为数组的大小
printf("The maximum size of the array is: %d\n", MAX_SIZE);
// MAX_SIZE = 200; // 错误:尝试修改常量的值
return 0;
}
1.2 变量(Variable)
变量是程序中可以存储并改变数据的内存位置。变量有名称、类型、作用域和生命周期。与常量不同,变量的值可以在程序的执行过程中多次修改。
定义变量的格式:
type variable_name; // 声明一个变量,类型为type,名称为variable_name
示例程序:
#include <stdio.h>
int main() {
int x = 10; // 定义一个整型变量x,并初始化为10
float y = 3.14f; // 定义一个浮点型变量y,并初始化为3.14
char ch = 'A'; // 定义一个字符型变量ch,并初始化为'A'
printf("x = %d\n", x);
printf("y = %.2f\n", y);
printf("ch = %c\n", ch);
x = 20; // 修改变量x的值
printf("Updated x = %d\n", x);
return 0;
}
2. 常量与变量的区别
| 特性 | 常量(Constant) | 变量(Variable) |
|---|---|---|
| 定义 | 在程序中一旦赋值后,值不能改变 | 值在程序执行过程中可以改变 |
| 使用 | 用于存储固定不变的值(如数学常数、数组大小等) | 用于存储可能变化的值(如计数器、用户输入等) |
| 定义方式 | 使用 const 关键字定义 | 使用普通数据类型定义 |
| 修改性 | 不可修改 | 可以修改 |
| 初始化 | 必须在定义时初始化 | 可在定义时或稍后赋值 |
3. 常量与变量的应用场景
3.1 常量的应用场景
常量通常用于:
- 数学常数,例如
PI。 - 程序中的配置值,例如数组大小、最大值、限制条件等。
- 程序中不希望被修改的值,例如错误代码、日期、常见字符等。
示例:使用常量定义PI值
#include <stdio.h>
#define PI 3.14159 // 使用宏定义常量PI
int main() {
float radius = 5.0;
float area = PI * radius * radius; // 使用常量PI来计算圆的面积
printf("The area of the circle is: %.2f\n", area);
return 0;
}
3.2 变量的应用场景
变量通常用于:
- 存储用户输入的数据。
- 存储需要在程序中动态改变的值。
- 用作临时数据存储,例如循环计数器、条件判断等。
示例:计算矩形的面积
#include <stdio.h>
int main() {
float length, width, area;
// 用户输入矩形的长度和宽度
printf("Enter the length of the rectangle: ");
scanf("%f", &length);
printf("Enter the width of the rectangle: ");
scanf("%f", &width);
area = length * width; // 计算面积
printf("The area of the rectangle is: %.2f\n", area);
return 0;
}
4. 常量与变量的总结
- 常量用于存储不变的数据值,例如物理常数、程序配置等。常量的值在程序执行过程中不可改变,因此适合用于固定值的存储。
- 变量用于存储可能变化的数据值,程序中的变量值可以随时修改,因此适合用于动态计算和用户交互。
重点回顾:
- 常量使用
const关键字进行定义,不能被修改。 - 变量可以修改,存储程序执行过程中需要频繁更改的数据。
5. 课后练习
- 编写程序,定义一个常量
MAX_SIZE表示数组的最大大小,并使用该常量来创建数组。 - 编写程序,要求用户输入一个整数,输出该整数的平方。
- 修改上一个程序,添加常量
PI,然后计算输入半径的圆的面积。