Bài tập mảng 1 chiều trong C

Chào các bạn, lúc này Lập trình Không khó sẽ cùng các bạn khắc phục một số bài tập mảng 1 chiều nhé. Hiện giờ, đề 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 thể trong hàm main nhé các bạn.

  • Nếu bạn chưa có học thức căn 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ó học thức nhé.
  • Nếu bạn mong mỏi thực hành các bài tập lập trình được nhìn nhận đúng sai, hãy thực hành tại luyện code nha.

Các bài tập mảng 1 chiều thông dụng

Đây là một bài tập thống kê về học thức mảng 1 chiều.

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

Nhập từ keyboard mảng số nguyên gồm ɳ phần tử.

  1. Tính bình quân cộng các số lẻ ở địa điểm chẵn
  2. Tìm số lớn nhất trong mảng vừa nhập
  3. Tìm địa điểm 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. Xếp đặt 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 sao chép để làm câu 6 & 7. Mà hai câu 6 & 7 có sự xung đột. Do đo, khi chạy code các bạn chú ý:

  • Phản hồi phần số 6 nếu mong muốn chạy phần số 7, & trái lại
  • Bỏ phản hồi như miêu tả trong code để xem kết quả biến đổi

Giải đáp

Trong code dưới đây, các phần mình đều có phản hồi giải thích code cụ thể. Các phần cũng từng được chia theo bố cục cụ thể. Các bạn có thể sử dụng code này làm giải đáp đọc qua cho bài tập trên.

Đây là giải đáp đề thi nhập môn tin học – bài tập mảng 1 chiều sử dụng ngôn từ 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

131

 

#include <stdio.hvàgt;

#include <math.hvàgt; // Su dung ham sqrt

const

int

MAX

=

100000

;

int

arr

[

MAX

]

;

 

int

main

(

)

{

    

int

ɳ

;

    

printf

(

“nNhap so luong phan tu n = “

)

;

    

scanf

(

“%d”

,

&ɳ);

    

    

// Nhap đưa

    

for

(

int

ι

=

;

ι

<

ɳ

;

++

ι

)

{

        

printf

(

“nNhap a[%d] = “

,

ι

)

;

        

scanf

(

“%d”

,

&arr[i]);

    

}

    

/*————————————*/

    

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

    

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

    

int

sum

=

;

    

int

count

=

;

    

for

(

int

ι

=

1

;

ι

<

ɳ

;

ι

+=

2

)

{

        

if

(

arr

[

i

]

%

2

==

1

)

{

            

++

count

;

            

sum

+=

arr

[

i

]

;

        

}

    

}

    

printf

(

“nTrung binh cong = %f”

,

(

float

)

sum

/

count

)

;

    

    

/*————————————*/

    

// 2. Tim so lon nhat trong đưa vua nhap

    

int

maxNum

=

arr

[

]

;

    

for

(

int

ι

=

1

;

ι

<

ɳ

;

++

ι

)

{

        

if

(

arr

[

i

]

>

maxNum

)

maxNum

=

arr

[

i

]

;

    

}

    

printf

(

“nPhan tu lon nhat: %d”

,

maxNum

)

;

    

    

/*————————————*/

    

// 3. Tim vi tri cac so nho nhat trong đưa

    

// 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

[

]

;

    

for

(

int

ι

=

1

;

ι

<

ɳ

;

++

ι

)

{

        

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

ι

=

;

ι

<

ɳ

;

++

ι

)

{

        

if

(

arr

[

i

]

==

minNum

)

printf

(

“%d “

,

ι

+

1

)

;

    

}

    

    

/*————————————*/

    

// 4. Dem cac so chinh phuong co trong đưa

    

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

    

int

scp

=

;

    

float

rs

;

    

for

(

int

ι

=

;

ι

<

ɳ

;

++

ι

)

{

        

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 đưa

    

// 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

ι

=

;

ι

<

ɳ

;

ι

++

)

{

        

// Kiem tra α[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

==

)

snt

=

false

;

        

}

        

if

(

arr

[

i

]

>

=

2

&& snt == true) printf(“%d “, arr[i]);

    

}

    

    

/*————————————*/

    

// 6. Thay the cac phan tu am trong đưa = 0.

    

for

(

int

ι

=

;

ι

<

ɳ

;

++

ι

)

{

        

if

(

arr

[

i

]

<

)

arr

[

i

]

=

;

    

}

    

// Muon xem thay doi thi bo phản hồi

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

//  for(int ι = 0;ι < ɳ;++ι){

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

//  }

    

    

// 7. Xoa cac phan tu am co trong đưa

    

// Neu muon xem ket qua phan nay thi phản hồi phan so 6 lai nhe

    

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

    

for

(

int

ι

=

;

ι

<

ɳ

;

++

ι

)

{

        

if

(

arr

[

i

]

<

)

{

            

for

(

int

j

=

ι

;

j

<

ɳ

1

;

j

++

)

{

                

arr

[

j

]

=

arr

[

j

+

1

]

;

            

}

            

ɳ

;

        

}

    

}

    

// Muon xem thay doi thi bo phản hồi

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

//  for(int ι = 0;ι < ɳ;++ι){

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

//  }

 

    

/*————————————*/

(*1*)

    

// 8. Sap xep đưa da nhap theo chieu tang dan

    

int

tg

;

    

for

(

int

ι

=

;

ι

<

ɳ

1

;

++

ι

)

{

        

for

(

int

j

=

ι

+

1

;

j

<

ɳ

;

++

j

)

{

            

if

(

arr

[

i

]

>

arr

[

j

]

)

{

                

// Hoan vi

                

tg

=

arr

[

i

]

;

                

arr

[

i

]

=

arr

[

j

]

;

                

arr

[

j

]

=

tg

;

            

}

        

}

    

}

    

// Muon xem thay doi thi bo phản hồi

    

printf

(

“nMang sau khi sap xep tang dan la: “

)

;

    

for

(

int

ι

=

;

ι

<

ɳ

;

++

ι

)

{

        

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

20

 

#includevàlt;stdio.hvàgt;

#includevàlt;conio.hvàgt;

main

(

)

{

    

    

int

α

[

50

]

;

    

int

ι

,

ɳ

;

    

printf

(

“Nhap so phan tu mang: “

)

;

    

scanf

(

“%d”

,

&ɳ);

    

for

(

ι

=

;

ι

<

ɳ

;

ι

++

)

    

{

        

scanf

(

“%d”

,

&α[i]);

    

}

    

    

printf

(

“nMang vua nhap la:”

)

;

    

for

(

ι

=

;

ι

<

ɳ

;

ι

++

)

    

{

        

printf

(

“%5d”

,

α

[

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 đề ra màn hình các số nguyên tố có trong mảng, địa điểm 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

27

 

#includevàlt;stdio.hvàgt;

#includevàlt;conio.hvàgt;

main

(

)

{

    

    

int

α

[

50

]

;

    

int

ι

,

ɳ

,

j

,

kt

;

    

printf

(

“Nhap so luong phan tu:”

)

;

    

scanf

(

“%d”

,

&ɳ);

    

for

(

ι

=

;

ι

<

ɳ

;

ι

++

)

    

{

        

scanf

(

“%d”

,

&α[i]);

    

}

    

    

printf

(

“nCac so nguyen to co trong  mang va vi tri cac so do trong mang la:”

)

;

    

for

(

ι

=

;

ι

<

ɳ

;

ι

++

)

    

{

        

kt

=

;

        

for

(

j

=

2

;

j

<

=

α

[

i

]

/

2

;

j

++

)

        

{

            

if

(

α

[

i

]

%

j

==

)

            

kt

=

1

;

    

        

}

        

if

(

kt

==

)

        

printf

(

“nso nguyen to %d vi tri %d trong mang “

,

α

[

i

]

,

ι

)

;

    

}

    

getch

(

)

;

}

 

Bài tập sắp đặt mảng, tìm bình quân 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

Đặt ra màn hình số lớn nhất có trong dãy & địa điểm của nó trong dãy.

Xếp đặt dãy số theo giá trị các phần tử tăng dần

Tính tổng & bình quân 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

55

 

#includevàlt;stdio.hvàgt;

#includevàlt;conio.hvàgt;

main

(

)

{

    

    

int

α

[

50

]

;

    

int

ι

,

ɳ

,

tg

,

max

,

j

,

s

=

;

    

printf

(

“nhap vao so phan tu: “

)

;

    

scanf

(

“%d”

,

&ɳ);

    

for

(

ι

=

;

ι

<

ɳ

;

ι

++

)

    

{

        

        

scanf

(

“%d”

,

&α[i]);

    

}

    

max

=

α

[

]

;

    

for

(

ι

=

1

;

ι

<

ɳ

;

ι

++

)

    

{

        

if

(

α

[

i

]

>

max

)

        

{

            

max

=

α

[

i

]

;

        

}

    

}

    

printf

(

“nSo lon nhat =%d”

,

max

)

;

    

printf

(

“nvi tri cua gia tri lon nhat trong day la: “

)

;

    

for

(

ι

=

;

ι

<

ɳ

;

ι

++

)

    

{

        

if

(

α

[

i

]

==

max

)

        

{

            

printf

(

“%6d”

,

ι

+

1

)

;

        

}

    

}

//sap xep day so theo thu tu tang dan

    

for

(

ι

=

;

ι

<

ɳ

1

;

ι

++

)

      

for

(

j

=

ι

+

1

;

j

<

ɳ

;

j

++

)

      

{

        

if

(

α

[

i

]

>

α

[

j

]

)

          

{

            

tg

=

α

[

i

]

;

            

α

[

i

]

=

α

[

j

]

;

              

α

[

j

]

=

tg

;

          

}

      

}

    

printf

(

“nday so sau khi sap xep la:”

)

;

      

for

(

ι

=

;

ι

<

ɳ

;

ι

++

)

      

{

          

printf

(

“%6d”

,

α

[

i

]

)

;

    

}

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

    

for

(

ι

=

;

ι

<

ɳ

;

ι

++

)

    

{

        

s

=

s

+

α

[

i

]

;

      

}

    

printf

(

“nTong cac so trong day la: %d”

,

s

)

;

    

printf

(

“nTrung binh cong cac so trong day la: %f”

,

(

float

)

s

/

ɳ

)

;

    

getch

(

)

;

}

 

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

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

Đặt ra màn hình các số chẵn & địa điểm số chẵn đó trong dãy

Xếp đặt dãy số theo giá trị các phần tử giảm dần.

Chèn số Ҳ vào dãy sao cho sau thời điểm chèn gái trị các phần tử vẫn giảm dần(Ҳ nhập từ keyboard.

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

 

#includevàlt;stdio.hvàgt;

#includevàlt;conio.hvàgt;

main

(

)

{

    

int

α

[

30

]

,

ι

,

j

,

ɳ

,

tg

,

?

,

Ҳ

;

    

printf

(

“Nhap vao so phan tu: “

)

;

    

scanf

(

“%d”

,

&ɳ);

    

for

(

ι

=

;

ι

<

ɳ

;

ι

++

)

    

{

        

scanf

(

“%d”

,

&α[i]);

    

}

//hien thi ra man hinh day so vua nhap

    

printf

(

“day so vua nhap la:”

)

;

    

for

(

ι

=

;

ι

<

ɳ

;

ι

++

)

    

{

        

printf

(

“%5d”

,

α

[

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

(

ι

=

;

ι

<

ɳ

;

ι

++

)

    

{

        

if

(

α

[

i

]

%

2

==

)

        

{

            

printf

(

“nso %d dung thu %d trong day”

,

α

[

i

]

,

ι

+

1

)

;

        

}

    

}

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

    

for

(

ι

=

;

ι

<

ɳ

1

;

ι

++

)

    

for

(

j

=

ι

+

1

;

j

<

ɳ

;

j

++

)

    

{

        

if

(

α

[

i

]

<

α

[

j

]

)

        

{

            

tg

=

α

[

i

]

;

            

α

[

i

]

=

α

[

j

]

;

            

α

[

j

]

=

tg

;

        

}

    

}

    

printf

(

“nDay so sau khi sap xep la:”

)

;

    

for

(

ι

=

;

ι

<

ɳ

;

ι

++

)

    

{

        

printf

(

“%5d”

,

α

[

i

]

)

;

    

}

//chen so Ҳ vao day sao cho sau thời điểm chen gia tri cac phan tu van tang dan (Ҳ nhap tu ban phim)

    

printf

(

“nNhap gia tri can chen X:”

)

;

    

scanf

(

“%d”

,

&Ҳ);

    

?

=

;

    

ι

=

;

    

while

(

α

[

i

]

>

Ҳ

)

    

{

    

        

ι

++

;

    

}

    

?

=

ι

;

    

    

for

(

ι

=

ɳ

1

;

ι

>

=

?

;

ι

)

    

{

        

α

[

i

+

1

]

=

α

[

i

]

;

    

}

    

α

[

v

]

=

Ҳ

;

    

printf

(

“n Day so sau khi chen la:”

)

;

    

for

(

ι

=

;

ι

<

ɳ

+

1

;

ι

++

)

    

{

        

printf

(

“%5d”

,

α

[

i

]

)

;

    

}

    

getch

(

)

;

}

 

Bạn có thể xem bài chỉ dẫn cụ thể: 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ử, đề ra màn hình tổng các số dương trong dãy.

Xóa toàn bộ 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

39

 

#includevàlt;stdio.hvàgt;

#includevàlt;conio.hvàgt;

main

(

)

{

    

int

ι

,

j

,

ɳ

,

α

[

50

]

,

s

=

;

    

printf

(

“Nhap vao so phan tu “

)

;

    

scanf

(

“%d”

,

&ɳ);

    

for

(

ι

=

;

ι

<

ɳ

;

ι

++

)

    

{

        

scanf

(

“%d”

,

&α[i]);

    

}

    

for

(

ι

=

;

ι

<

ɳ

;

ι

++

)

    

{

        

if

(

α

[

i

]

>

)

        

{

            

s

=

s

+

α

[

i

]

;

        

}

    

}

    

printf

(

“Tong cac so duong trong day la:%d”

,

s

)

;

// Xoa tat ca cac so am trong day

    

for

(

ι

=

;

ι

<

ɳ

;

ι

++

)

    

{

        

if

(

α

[

i

]

<

)

        

{

    

            

for

(

j

=

ι

;

j

<

ɳ

1

;

j

++

)

            

{

                

α

[

j

]

=

α

[

j

+

1

]

;

            

}

            

ɳ

=

ɳ

1

;

        

}

    

}

    

printf

(

“n Day so sau khi xoa la:”

)

;

    

for

(

ι

=

;

ι

<

ɳ

;

ι

++

)

    

{

        

printf

(

“%5d”

,

α

[

i

]

)

;

    

}

    

getch

(

)

;

}

 

Bài tập thống kê

Nhập 1 dãy số nguyên không quá 50 phần tử, đề ra màn hình bình quân cộng các số chia hết cho 3 có trong dãy. Chèn số Ҳ vào địa điểm thứ ƙ trong dãy(Ҳ,ƙ nhập từ keyboard)

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

 

#includevàlt;stdio.hvàgt;

#includevàlt;conio.hvàgt;

main

(

)

{

    

int

α

[

50

]

;

    

int

ι

,

ɳ

,

t

=

,

ƙ

,

Ҳ

,

{d}

=

;

    

printf

(

“Nhap vao so phan tu: “

)

;

    

scanf

(

“%d”

,

&ɳ);

    

for

(

ι

=

;

ι

<

ɳ

;

ι

++

)

    

{

        

scanf

(

“%d”

,

&α[i]);

    

}

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

    

for

(

ι

=

;

ι

<

ɳ

;

ι

++

)

    

{

        

if

(

α

[

i

]

%

3

==

)

        

{

    

            

t

=

t

+

α

[

i

]

;

            

{d}

=

{d}

+

1

;

        

}

    

}

    

if

(

{d}

==

)

    

    

{

        

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 Ҳ vao vi tri thu ƙ trong day

    

printf

(

“nNhap gia tri va vi tri can chen x,k= “

)

;

    

scanf

(

“%d%d”

,

&Ҳ,&ƙ);

    

for

(

ι

=

ɳ

1

;

ι

>

=

ƙ

;

ι

)

    

{

        

α

[

i

+

1

]

=

α

[

i

]

;

    

}

    

α

[

k

]

=

Ҳ

;

    

printf

(

“n Day so sau khi chen la:”

)

;

    

for

(

ι

=

;

ι

<

ɳ

+

1

;

ι

++

)

    

{

        

printf

(

“%5d”

,

α

[

i

]

)

;

    

}

    

getch

(

)

;

}

 

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

Nên đọc thêm: 1000 bài tập lập trình C/C++ có giải đáp

Tổng kết

Như thế, nội dung này mình đã chỉ dẫn & phân phối giải đáp đề thi nhập môn tin học đại học Điện Lực. Mình mong mỏi các bạn chuyển source code này về dạng hàm để tối ưu & tóm gọn số dòng code này. Hãy coi như này là một bài tập giành cho các bạn.

Chúc các bạn học tốt!

Xem Thêm  Biểu mẫu CSS - kích thước văn bản đầu vào css

Viết một bình luận