[Lập trình C] Biến và kiểu dữ liệu

Posted on December 27th, 2020

Trong lập trình, biến và kiểu dữ liệu là những kiến thức cơ bản nhất cần phải nắm vững. Bài viết này sẽ giới thiệu với bạn cách để đặt tên biến, khai báo biến với một số kiểu dữ liệu hay dùng.

Lý thuyết cơ bản về biến và kiểu dữ liệu trong lập trình C

Cách đặt tên biến

  • Chữ đầu tiên luôn là chữ cái thường (a-z) hoặc chữ cái hoa (A-Z) hoặc dấu gạch chân _
  • Các chữ cái tiếp theo cũng tương tự và cộng thêm chữ số (0-9)
  • Độ dài biến tùy thuộc vào trình biên dịch
  • Biến số phân biệt hoa thường
  • Không được đặt tên biến trùng với từ khóa của C

Một số cách đặt tên biến cơ bản

  • camelCase
  • snake_case
  • PascalCase
  • CONSTANT_CASE
  • flatcase

Một số kiểu dữ liệu cơ bản

  • int: 4 bytes
  • float: 4 bytes (độ chính xác 6 chữ số)
  • double: 8 bytes (độ chính xác 10 chữ số)
  • char: 1 byte
  • void: kiểu nothing

Cách khai báo biến với kiểu dữ liệu

Datatype variableName;

Ví dụ:

int var;

Một số modifier để suy rộng kiểu dữ liệu

  • unsigned: biểu diễn kiểu dữ liệu không dấu, ví dụ: unsigned char, unsigned int
  • short: biểu diễn kiểu dữ liệu nhỏ hơn, ví dụ: short int
  • long: kiểu dữ liệu lớn hơn, ví dụ: long int, long long int

Bài tập thực hành về biến và kiểu dữ liệu trong lập trình C

Bài 1: Hãy viết câu lệnh khai báo

Cho biết char(1 byte), int(4 bytes), float(4 bytes), double(8 bytes). Hãy viết câu lệnh khai báo các biến sau, sao cho biến sử dụng có kích thước nhỏ nhất có thể. Rồi in kết quả ra màn hình.

Các trường hợp:

  • Khai báo biến kí tự a = 'Z'
  • Khai báo số tự nhiên b = 100
  • Khai báo số nguyên c = -1000
  • Khai báo số nguyên d = -1000000000
  • Khai báo số nguyên e = 3000000000
  • Khai báo số thực f = 1.23456
  • Khai báo số thực g = 1.23456789

Phân tích miền biểu diễn ứng với từng kích thước dữ liệu

  • Có dấu 1 byte: -128 -> 127
  • Không dấu 1 byte: 0 -> 255
  • Có dấu 2 bytes: -32768 -> 32767
  • Không dấu 2 bytes: 0 -> 65536
  • Có dấu 4 bytes: -2147483648 -> 2147483647
  • Không dấu 4 bytes: 0 -> 4294967295

Code

#include <stdio.h>

int main() {
	char a = 'Z';
	short int b = 100;
	short int c = -1000;
	int d = -1000000000;
	unsigned int e = 3000000000;
	float f = 1.23456;
	double g = 1.23456789;
	
	printf("a=%c\n", a);
	printf("b=%hd\n", b);
	printf("c=%hd\n", c);
	printf("d=%d\n", d);
	printf("e=%u\n", e);
	printf("f=%f\n", f);
	printf("g=%lf\n", g);
	return 0;
}

Bài 2: Tính điểm trung bình cộng và in kết quả ra màn hình

Nhập vào điểm thi các môn: toán, lý, hóa, tin học, tiếng anh. Tính điểm trung bình cộng và in kết quả ra màn hình.

Phân tích

  • Điểm có thể là số thực nên chọn kiểu dữ liệu float
  • Điểm trung bình cộng = (toán + lý + hóa + tin học + tiếng anh) / 5

Code

#include <stdio.h>

int main(int argc, char *argv[])
{
	float toan, ly, hoa, tin, anh, tbc;
	
	printf("Nhap diem toan: ");
	scanf("%f", &toan);
	
	printf("Nhap diem ly: ");
	scanf("%f", &ly);
	
	printf("Nhap diem hoa: ");
	scanf("%f", &hoa);
	
	printf("Nhap diem tin: ");
	scanf("%f", &tin);
	
	printf("Nhap diem anh: ");
	scanf("%f", &tin);
	
	tbc = (toan + ly + hoa + tin + anh) / 5;
	printf("Ket qua: %f\n", tbc);
	
  return 0;
}

Bài 3: Nhập vào 2 số tự nhiên, tính và in kết quả các biểu thức

Nhập vào 2 số tự nhiên x, y thỏa mãn (0 < x, y <= 50000). Tính giá trị các biểu thức sau rồi in kết quả ra màn hình (đúng kiểu dữ liệu, với giả sử số nhập vào thỏa mãn yêu cầu)

x + y
x - y
x * y
x / y

Phân tích

  • Đầu vào là số nguyên x, y nên ta chọn kiểu int;
  • Kết quả tối đa của phép nhân có thể là: 50000 * 50000 = 2500000000, nên chọn kiểu dữ liệu unsigned int cho kết quả phép nhân
  • Kết quả của phép trừ, có thể là số âm, nên chọn kiểu int
  • Kết quả của phép chia có thể là số thực, nên chọn kiểu float

Code

#include <stdio.h>

int main(int argc, char *argv[])
{
	int x, y, sum, sub;
	unsigned int mul;
	float div;
	
	printf("Nhap vao x: ");
	scanf("%d", &x);
	
	printf("Nhap vao y: ");
	scanf("%d", &y);
	
	sum = x + y;
	sub = x - y;
	mul = x * y;
	div = (1.0 * x) / y;
	
	printf("Ket qua sum: %d\n", sum);
	printf("Ket qua sub: %d\n", sub);
	printf("Ket qua mul: %u\n", mul);
	printf("Ket qua div: %f\n", div);
	
    return 0;
}

Bài 4: Nhập vào 2 số tự nhiên lưu vào 2 biến. Hoán đổi giá trị của rồi in kết quả ra màn hình

Phân tích

  • Input: nhập vào 2 số tự nhiên
  • Output: in ra giá trị mới của 2 số sau khi hoán đổi giá trị

Có 2 cách để giải bài toán

  • Cách 1: sử dụng biến trung gian
  • Cách 2: sử dụng toán tử cộng, trừ

Code

Cách 1: sử dụng biến trung gian
#include <stdio.h>

int main(int argc, char *argv[])
{
	int x, y, tmp;
	
	printf("Nhap vao x: ");
	scanf("%d", &x);
	
	printf("Nhap vao y: ");
	scanf("%d", &y);
	
	tmp = x;
	x = y;
	y = tmp;
	
	printf("Ket qua x: %d\n", x);
	printf("Ket qua y: %d\n", y);
	
    return 0;
}
Cách 2: sử dụng toán tử cộng, trừ
#include <stdio.h>

int main(int argc, char *argv[])
{
	int x, y;
	
	printf("Nhap vao x: ");
	scanf("%d", &x);
	
	printf("Nhap vao y: ");
	scanf("%d", &y);
	
	x = x + y;
	y = x - y;
	x = x - y;
	
	printf("Ket qua x: %d\n", x);
	printf("Ket qua y: %d\n", y);
	
    return 0;
}