Code trên mình viết hoàn chỉnh luôn muk.Vừa nhập mảng ,vừa kiểm tra tính đối xứng của mảng đã nhập.Nếu như bạn chỉ cần phần đối xứng thì chỉ cần quan tâm tới hàm:
int doi_xung(int so_nguyen[],int so_phan_tu)
.thôi.
Nhờ sửa lỗi bài tìm dãy đối xứng
anh giải thích cái kia đi
Ta có cú pháp của if-else
if(biểu thức)
statement 1;
else
statement 2;
Khi bắt đầu làm việc thì việc đầu tiên là đánh giá biểu thức
,nếu giá trị trả về khác 0
thì statement 1
được thực hiện ngược lại nếu giá trị trả về bằng 0
thì thực hiện statement 2
.
Trong trường hợp trên mình viết:
if(doi_xung(so_nguyen,so_phan_tu))
Khi đó doi_xung(so_nguyen[],so_phan_tu)
có nghĩa là mình đang gọi hàm int doi_xung(int so_nguyen[],int so_phan_tu)
và đã truyền vào hàm này 2 đối số đó là mảng so_nguyen
và số phần tử của mảng so_phan_tu
.Khi đó hàm sẽ thực hiện quá trình kiểm tra mảng nếu mảng đối xứng hàm sẽ trả về hàm main đã gọi nó 1 giá trị bằng 1,cụ thể là:
if(doi_xung(so_nguyen,so_phan_tu))
lúc này sẽ thay doi_xung(so_nguyen,so_phan_tu)
bằng số 1
và bắt đầu kiểm tra,1
khác 0
nên sẽ thực hiện lệnh: printf("Mang da nhap la mang doi xung.");
, ngược lại nếu trả về 1 giá trị bằng 0
thì sẽ thực hiện lệnh printf("Mang da nhap la mang khong doi xung.");
phía sau else.
Mọi người cho em hỏi bài này nếu làm bằng đệ quy thì sao ạ.
Ý tưởng:
- Nếu độ dài dãy số <= 1 thì trả về True
- Nếu số đầu khác số cuối, trả về False
- Trả về dãy số mà đã lược bỏ đi số đầu và số cuối.
VD: 123321
- Xét số đầu và cuối : 1 = 1, vẫn chưa sai
- Trả về 2332
- Xét 2 = 2 => vẫn đúng
- Trả về 33
- Xét và thấy 3 = 3
- bỏ đi 3, dãy không còn số nào nên <= 1, trả về True
Nhưng vấn đề của em ở đây là làm sao lấy số đầu và làm sao bỏ đi số đầu và cuối
Đơn giản thôi, bạn chuyển số thành chuỗi số bằng hàm itoa rồi thao tác với chuỗi là được mà. easy đúng ko
Còn cách dùng thì hỏi anh @Google nhé :3