Bài tập lập trình c chèn vào mảng năm 2024

Chào các bạn, hôm nay Lập trình Không khó sẽ cùng các bạn giải quyết một số bài tập mảng 1 chiều nhé. Hiện tại, đề bài này chưa cho phép sử dụng hàm con nên code sẽ được thực thi toàn bộ trong hàm main nhé các bạn.

  • Nếu bạn chưa có kiến thức cơ bản về mảng 1 chiều, hãy đọc bài học Mảng 1 chiều trong C/C++ trước để có kiến thức nhé.
  • Nếu bạn mong muốn thực hành các bài tập lập trình được đánh giá đúng sai, hãy thực hành tại luyện code nha.

NỘI DUNG BÀI VIẾT

Đây là một bài tập tổng hợp về kiến thức mảng 1 chiều.

Bài tập lập trình c chèn vào mảng năm 2024
Đề thi nhập môn tin học phần mảng 1 chiều

Đề bài tập mảng 1 chiều như sau:

Nhập từ bàn phím mảng số nguyên gồm n phần tử.

  1. Tính trung bình cộng các số lẻ ở vị trí chẵn
  2. Tìm số lớn nhất trong mảng vừa nhập
  3. Tìm vị trí các số nhỏ nhất trong mảng
  4. Đếm các số chính phương có trong mảng
  5. Hiện thị các số nguyên tố có trong mảng lên màn hình
  6. Thay thế các phần tử âm có trong mảng bằng giá trị 0
  7. Xóa các phần tử âm có trong mảng
  8. Sắp xếp mảng đã nhập theo thứ tự tăng dần

Với bài tập mảng 1 chiều này, do mình không sử dụng ma trận copy để làm câu 6 và 7. Mà hai câu 6 và 7 có sự xung đột. Do đo, khi chạy code các bạn lưu ý:

  • Comment phần số 6 nếu muốn chạy phần số 7, và ngược lại
  • Bỏ comment như mô tả trong code để xem kết quả thay đổi

Lời giải

Trong code dưới đây, các phần mình đều có comment giải thích code rõ ràng. Các phần cũng đã được chia theo bố cục rõ ràng. Các bạn có thể sử dụng code này làm lời giải tham khảo cho bài tập trên.

Đây là lời giải đề thi nhập môn tin học – bài tập mảng 1 chiều sử dụng ngôn ngữ C.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

include <stdio.h>

include <math.h> // Su dung ham sqrt

const int MAX \= 100000;

int arr[MAX];

int main(){

int n;

printf("\nNhap so luong phan tu n = ");

scanf("%d", &n);

// Nhap mang

for(int i \= 0;i < n; ++i){

printf("\nNhap a[%d] = ", i);

scanf("%d", &arr[i]);

}

/*----*/

// 1 .Tinh trung binh cong cac so le o vi tri chan

// Chu y: Vi tri chan = chi so le

int sum \= 0;

int count \= 0;

for(int i \= 1; i < n; i+=2){

if(arr[i] % 2 \== 1){

++count;

sum += arr[i];

}

}

printf("\nTrung binh cong = %f", (float)sum/count);

/*----*/

// 2. Tim so lon nhat trong mang vua nhap

int maxNum \= arr[0];

for(int i \= 1;i < n;++i){

if(arr[i] \> maxNum) maxNum \= arr[i];

}

printf("\nPhan tu lon nhat: %d", maxNum);

/*----*/

// 3. Tim vi tri cac so nho nhat trong mang

// Can lam 2 buoc:

// 1. Tim gia tri nho nhat minNum.

// 2. In ra cac vi tri co gia tri = minNum

// Luu y: Vi tri = chi so + 1

// Tim gia tri nho nhat

int minNum \= arr[0];

for(int i \= 1;i < n;++i){

if(arr[i] < minNum) minNum \= arr[i];

}

// In ra vi tri co gia tri nho nhat

printf("\nVi tri co gia tri nho nhat la: ");

for(int i \= 0;i < n;++i){

if(arr[i] \== minNum) printf("%d ", i+1);

}

/*----*/

// 4. Dem cac so chinh phuong co trong mang

// So chinh phuong la so co can la so nguyen nhu: 1, 4, 9,...

int scp \= 0;

float rs;

for(int i \= 0;i < n;++i){

rs \= sqrt(arr[i]);

if(rs \== (int)rs) ++scp;

}

printf("\nMang co %d so chinh phuong!", scp);

/*----*/

// 5. Hien thi cac so nguyen to co trong mang

// So nguyen to la so chi co 2 uoc duy nhat la 1 va chinh no.

// So nguyen to nho nhat la so 2

printf("\nCac so nguyen to co trong mang la: ");

bool snt;

for(int i \= 0;i < n;i++){

// Kiem tra a[i] co phai so nguyen to?

// gia su no la so nguyen to

// Neu no chia het cho so bat ky trong [2, a[i]] -> khong phai so nguyen to

snt \= true;

for(int j \= 2;j < arr[i]; ++j){

if(arr[i] % j \== 0) snt \= false;

}

if(arr[i] \>= 2 && snt \== true) printf("%d ", arr[i]);

}

/*----*/

// 6. Thay the cac phan tu am trong mang = 0.

for(int i \= 0;i < n;++i){

if(arr[i] < 0) arr[i] \= 0;

}

// Muon xem thay doi thi bo comment

// printf("\nMang sau khi thay the la: ");

// for(int i = 0;i < n;++i){

// printf("%d ", arr[i]);

// }

// 7. Xoa cac phan tu am co trong mang

// Neu muon xem ket qua phan nay thi comment phan so 6 lai nhe

// Cai nay ma giai thich bang ca 1 bai van luon

for(int i \= 0;i < n;++i){

if(arr[i] < 0){

for(int j \= i; j < n-1;j++){

arr[j] \= arr[j+1];

}

--n;

}

}

// Muon xem thay doi thi bo comment

// printf("\nMang sau khi xoa phan tu am la: ");

// for(int i = 0;i < n;++i){

// printf("%d ", arr[i]);

// }

/*----*/

// 8. Sap xep mang da nhap theo chieu tang dan

int tg;

for(int i \= 0;i < n-1;++i){

for(int j \= i+1; j < n;++j){

if(arr[i] \> arr[j]){

// Hoan vi

tg \= arr[i];

arr[i] \= arr[j];

arr[j] \= tg;

}

}

}

// Muon xem thay doi thi bo comment

printf("\nMang sau khi sap xep tang dan la: ");

for(int i \= 0;i < n;++i){

printf("%d ", arr[i]);

}

}

Một số bài tập mảng 1 chiều khác

Nhập, xuất mảng 1 chiều

Nhập vào 1 dãy số nguyên. Hiển thị dãy số đó ra màn hình.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

include<stdio.h>

include<conio.h>

main()

{

int a[50];

int i,n;

printf("Nhap so phan tu mang: ");

scanf("%d",&n);

for(i\=0;i<n;i++)

{

scanf("%d",&a[i]);

}

printf("\nMang vua nhap la:");

for(i\=0;i<n;i++)

{

printf("%5d",a[i]);

}

getch();

}

Bài tập in ra các số nguyên tố trong mảng

Nhập 1 dãy số nguyên đưa ra màn hình các số nguyên tố có trong mảng, vị trí các số đó trong mảng.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

include<stdio.h>

include<conio.h>

main()

{

int a[50];

int i,n,j,kt;

printf("Nhap so luong phan tu:");

scanf("%d",&n);

for(i\=0;i<n;i++)

{

scanf("%d",&a[i]);

}

printf("\nCac so nguyen to co trong mang va vi tri cac so do trong mang la:");

for(i\=0;i<n;i++)

{

kt\=0;

for(j\=2;j<=a[i]/2;j++)

{

if(a[i]%j\==0)

kt\=1;

}

if(kt\==0)

printf("\nso nguyen to %d vi tri %d trong mang ", a[i], i );

}

getch();

}

Bài tập sắp xếp mảng, tìm trung bình cộng

Nhập 1 dãy số nguyên không quá 50 phần tử, in ra màn hình dãy số đã nhập

Đưa ra màn hình số lớn nhất có trong dãy và vị trí của nó trong dãy.

Sắp xếp dãy số theo giá trị các phần tử tăng dần

Tính tổng và trung bình cộng các số có trong dãy.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

include<stdio.h>

include<conio.h>

main()

{

int a[50];

int i,n,tg,max,j,s\=0;

printf("nhap vao so phan tu: ");

scanf("%d",&n);

for(i\=0;i<n;i++)

{

scanf("%d", &a[i]);

}

max\=a[0];

for(i\=1;i<n;i++)

{

if(a[i]\>max)

{

max \=a[i];

}

}

printf("\nSo lon nhat =%d",max);

printf("\nvi tri cua gia tri lon nhat trong day la: ");

for(i\=0;i<n;i++)

{

if (a[i]\==max)

{

printf("%6d", i+1);

}

}

//sap xep day so theo thu tu tang dan

for(i\=0;i<n-1;i++)

for(j\=i+1; j<n; j++)

{

if(a[i]\>a[j])

{

tg\=a[i];

a[i]\=a[j];

a[j]\=tg;

}

}

printf("\nday so sau khi sap xep la:");

for(i\=0;i<n;i++)

{

printf("%6d",a[i]);

}

//Tinh tong va trung binh cong cac so trong day

for(i\=0;i<n;i++)

{

s\=s+a[i];

}

printf("\nTong cac so trong day la: %d",s);

printf("\nTrung binh cong cac so trong day la: %f", (float)s/n);

getch();

}

Bài tập chèn phần tử vào mảng

Nhập 1 dãy n số nguyên (0<n<30), in ra màn hình dãy số đã nhập

Đưa ra màn hình các số chẵn và vị trí số chẵn đó trong dãy

Sắp xếp dãy số theo giá trị các phần tử giảm dần.

Chèn số X vào dãy sao cho sau khi chèn gái trị các phần tử vẫn giảm dần(x nhập từ bàn phím.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

include<stdio.h>

include<conio.h>

main()

{

int a[30],i,j, n,tg,v,x;

printf("Nhap vao so phan tu: ");

scanf("%d", &n);

for(i\=0;i<n;i++)

{

scanf("%d",&a[i]);

}

//hien thi ra man hinh day so vua nhap

printf("day so vua nhap la:");

for(i\=0;i<n;i++)

{

printf("%5d",a[i]);

}

//dua ra man hinh cac so chan va vi tri trong day

printf("\nCac so chan trong day va vi tri cac so do trong day la:");

for(i\=0;i<n;i++)

{

if(a[i]%2\==0)

{

printf("\nso %d dung thu %d trong day", a[i], i+1);

}

}

// sap xep day so theo gia tri cac phan tu giam dan

for(i\=0;i<n-1;i++)

for(j\=i+1;j<n;j++)

{

if(a[i]<a[j])

{

tg\=a[i];

a[i]\=a[j];

a[j]\=tg;

}

}

printf("\nDay so sau khi sap xep la:");

for(i\=0;i<n;i++)

{

printf("%5d",a[i]);

}

//chen so x vao day sao cho sau khi chen gia tri cac phan tu van tang dan (x nhap tu ban phim)

printf("\nNhap gia tri can chen X:");

scanf("%d", &x);

v\=0;

i\=0;

while(a[i]\>x)

{

i++;

}

v\=i;

for(i\=n-1;i\>=v;i--)

{

a[i+1]\=a[i];

}

a[v]\=x;

printf("\n Day so sau khi chen la:");

for(i\=0;i<n+1;i++)

{

printf("%5d", a[i]);

}

getch();

}

Bạn có thể xem bài hướng dẫn chi tiết: Thêm, xóa phần tử trong mảng 1 chiều

Bài tập tính tổng số dương, xóa các số âm

Nhập 1 dãy số thực không quá 50 phần tử, đưa ra màn hình tổng các số dương trong dãy.

Xóa tất cả các số âm có trong dãy.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

include<stdio.h>

include<conio.h>

main()

{

int i, j, n,a[50],s\=0;

printf("Nhap vao so phan tu ");

scanf("%d", &n);

for(i\=0;i<n;i++)

{

scanf("%d",&a[i]);

}

for(i\=0;i<n;i++)

{

if(a[i]\>0)

{

s\=s+a[i];

}

}

printf("Tong cac so duong trong day la:%d",s );

// Xoa tat ca cac so am trong day

for(i\=0;i<n;i++)

{

if(a[i]<0)

{

for(j\=i;j<n-1;j++)

{

a[j]\=a[j+1];

}

n\=n-1;

}

}

printf("\n Day so sau khi xoa la:");

for(i\=0;i<n;i++)

{

printf("%5d", a[i]);

}

getch();

}

Bài tập tổng hợp

Nhập 1 dãy số nguyên không quá 50 phần tử, đưa ra màn hình trung bình cộng các số chia hết cho 3 có trong dãy. Chèn số X vào vị trí thứ k trong dãy(x,k nhập từ bàn phím)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

include<stdio.h>

include<conio.h>

main()

{

int a[50];

int i,n,t\=0,k,x,d\=0;

printf("Nhap vao so phan tu: ");

scanf("%d", &n);

for(i\=0;i<n;i++)

{

scanf("%d",&a[i]);

}

// in ra man hinh trung binh cong cac so chia het cho 3

for(i\=0;i<n;i++)

{

if(a[i]%3\==0)

{

t\=t+a[i];

d\=d+1;

}

}

if(d\==0)

{

printf("khong co so chia het cho 3 trong day");

}

else

{

printf("TBC so chia het cho 3 trong day la %f", (float)t/d);

}

// chen so x vao vi tri thu k trong day

printf("\nNhap gia tri va vi tri can chen x,k= ");

scanf("%d%d", &x,&k);

for(i\=n-1;i\>=k;i--)

{

a[i+1]\=a[i];

}

a[k]\=x;

printf("\n Day so sau khi chen la:");

for(i\=0;i<n+1;i++)

{

printf("%5d", a[i]);

}

getch();

}

Các bạn có thể viết lời giải của các đề bài trên bằng cách sử dụng hàm nhé!

Nên tham khảo thêm: 1000 bài tập lập trình C/C++ có lời giải

Kết luận

Như vậy, bài viết này mình đã hướng dẫn và cung cấp lời giải đề thi nhập môn tin học đại học Điện Lực. Mình mong muốn các bạn chuyển source code này về dạng hàm để tối ưu và rút gọn số dòng code này. Hãy coi như đó là một bài tập dành cho các bạn.