Tôi có mã do trường cung cấp và tôi cần mã này làm đầu ra: Digital Double Star 0 là 000, 1 là 001, 2 là 010, 3 là 011, 4 là 100, 5 là 101, 6 là 110, 7 là 111 (3 mọi người)
Tôi cần làm việc với các vòng lặp for, đây là đoạn mã đã cho:
#include
#include
#define ZERO '0'
#xác định MỘT '1'
int main(void)
{
char rij[8][4];
int n, m;
strcpy(rij[0], "000" );
printf( "%s\n", rij[0] );
vì ( n=1; n<8; n++ )
{
strcpy( rij[n], rij[n-1] );
printf( "%s\n", rij[n] );
// *CHỈ CÓ THỂ KIẾM VÀO ĐÂY!!!!
}
cho( n=0; n<8; n++ )
{
printf( "%i %s\n", n, rij[n] );
}
return 0;
}
Tôi không biết cách tạo vòng lặp for sử dụng bit. vậy hãy nói vì(n = 0; n < 8; n++)
Cách tạo một dạng vòng lặp 000
至 001
至 010
.
Mặc dù có nhiều cách để tạo chuỗi nhị phân, nhưng nhiệm vụ ở đây có vẻ phức tạp (hoặc gây thú vị) bởi thực tế là bạn chỉ có thể sửa đổi mã tại các vị trí được chỉ định và khởi tạo từng chuỗi liên tiếp bằng nội dung của chuỗi trước đó.
Những mảng này không phục vụ mục đích nào khác ngoài việc khiến bạn phải suy nghĩ - đây là một bài tập thuần túy mang tính học thuật hơn là một ứng dụng thực tế. Mỗi chuỗi được khởi tạo với nội dung của chuỗi trước đó (mã bạn phải thêm vào sẽ sửa đổi chuỗi đó) và mục đích của bài tập là thực hiện phép "tăng thêm 1" nhị phân trên mỗi lần lặp.
Với mục đích này, hãy bắt đầu từ LSB (rij[n][2]
) bắt đầu nếu số đó là KHÔNG
, sau đó đặt thành MỘT và chuyển sang phần tiếp theo n
, nếu không thì đặt nó về 0 và "mang" một cho chuỗi n
Lặp lại quy trình trên cho bit quan trọng nhất tiếp theo trong .
Bạn có thể thực hiện việc này trong một vòng lặp từ chỉ mục LSB (2) đến chỉ mục MSB (0) và đặt bất kỳ bit nào thành Thoát khỏi vòng lặp khi ONE< (break
)/
.
Hoặc chỉ với ba chữ số, bạn có thể hủy vòng lặp:
if( rij[n][2] == ZERO )
{
rij[n][2] = MỘT;
}
khác
{
rij[n][2] = ZERO;
if( ... // kiểm tra bit tiếp theo [1] - tôi nghĩ là đủ gợi ý rồi.
Tôi là một lập trình viên xuất sắc, rất giỏi!