cuốn sách gpt4 ai đã làm

c - Logic đằng sau câu lệnh này là gì: for (--index; index >= 0; --index)?

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 03:20:27 29 4
mua khóa gpt4 Nike

Tôi tìm thấy ví dụ này trong một cuốn sách ngôn ngữ C. Mã này chuyển đổi cơ số đầu vào và lưu trữ nó trong một mảng.

#include 

int main(void)
{
const char base_digits[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A ', 'B', 'C', 'D', 'E', 'F'};
int đã chuyển đổi_number[64];
số int dài_to_convert;
int next_digit, cơ sở, chỉ số = 0;

printf("nhập số cần chuyển đổi: \n");
scanf("%ld", &number_to_convert);

printf("Cơ sở\n");
scanf("%i", &base);

do
{
số_đã chuyển đổi[chỉ mục] = số_to_convert % cơ sở;
++ chỉ số;
số_to_convert = số_to_convert / cơ sở;
}
while (number_to_convert != 0);

// bây giờ hiển thị số
printf("số đã chuyển đổi = :");

cho (--index; chỉ mục >= 0; --index )
{
next_digit = số_đã chuyển đổi[chỉ mục];
printf("%c", base_digits[next_digit]);
}

printf("\n");
return 0;
}

Tôi không thể hiểu vòng lặp for cuối cùng. Nó sẽ giúp đảo ngược mảng, nhưng tôi không hiểu làm thế nào!

Dòng này có nghĩa là gì:cho (--index; chỉ mục >= 0; --index)?

câu trả lời hay nhất

Hãy nghĩ lại,for Tiêu đề có ba phần:

  • Phần khai báo/khởi tạo được thực thi một lần trước vòng lặp,
  • một trình kiểm tra điều kiện cuối được thực thi trước mỗi lần lặp và
  • Phần chuyển vòng lặp sang lần lặp tiếp theo

Thông thường, phần khai báo/khởi tạo sẽ thiết lập một biến vòng lặp mới. Tuy nhiên, điều này là không cần thiết. Đặc biệt, khi nhiều vòng lặp chia sẻ cùng một biến vòng lặp, phần khởi tạo sẽ điều chỉnh giá trị hiện có hoặc bị thiếu hoàn toàn.

Đây chính xác là tình huống của bạn. do/while Vòng lặp sẽ chỉ mục Tiến tới một sau khi kết thúc mảng. Nếu bạn cần số_đã chuyển đổi Bắt đầu xử lý sau, bạn cần giảm dần trước khi vào vòng lặp chỉ mục, sau đó giảm dần sau mỗi lần lặp.

Lưu ý rằng một khả năng khác là sử dụng while vòng lặp và trong chỉ mục Thực hiện giảm trước trên:

trong khi (chỉ mục > 0) {
next_digit = số_đã chuyển đổi[--index];
printf("%c", base_digits[next_digit]);
}

Về c - logic đằng sau câu lệnh này là gì: for (--index; index >= 0; --index)?, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/46868312/

29 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress