Bài tập hay quá anh, biến hóa thì thôi luôn :))
//Bài 9: đáp án chỗ {i – abs(h – j)} em biến đổi sang bài của em nó ra số âm;
Em làm {i -abs(i-k)} mà nó ra:
for(i = 1; i <= ccao; i++){
for(j = 1; j <= ccao – i; j++){
printf(" ");
}
for(k = 1; k <= 2*i-1; k++){
printf(" %d ", i – abs(i – k));
}
printf("\n");
}
trong vòng lặp e làm như sau:
for (i = a; i <= b; i++) {
isprime = 1;
if (i < 2) {
isprime = 0;
}
else {
int bound = sqrt(i);
for (j = 2; j <= bound; j++) {
if (i % j == 0) {
isprime = 0;
break;
}
}
}
if (isprime) {
printf("%5d", i);
count++;
}
}
mỗi lần lặp biến isprime sẽ reset lại nên phải để nó trong vòng lặp mới đúng được.
e học thêm kĩ năng debug ở trong khóa học để hiểu hơn luồng chương trình nhé.
Tại sao code trong if lại dùng || mà không dùng &&.
int main() {
int i, j;
for (i = 1; i < 7; i++) {
for (j = 1; j <= 7; j++) { // vẽ trên 6 hàng
// chỉ in ra * ở hàng đầu, hàng cuối, cột đầu, cột cuối
if (!(i == 1 && (j == 1 || j == 4 || j == 7) ||
(i == 4 && (j == 1 || j == 7)) ||
(i == 5 && (j = 6)) ||
(i == 6 && j != 4))) {
printf(” * “); // in ra các dấu *
}
else { // những vị trí còn lại in dấu cách
printf(” “); // in ra ba dấu cách
}
// dành bao nhiêu kí tự in dấu * thì dành bấy nhiêu kí tự in dấu cách
}
printf(“\n”); // in xuống dòng
}
}
9 Comments
Bài tập hay quá anh, biến hóa thì thôi luôn :))
//Bài 9: đáp án chỗ {i – abs(h – j)} em biến đổi sang bài của em nó ra số âm;
Em làm {i -abs(i-k)} mà nó ra:
for(i = 1; i <= ccao; i++){
for(j = 1; j <= ccao – i; j++){
printf(" ");
}
for(k = 1; k <= 2*i-1; k++){
printf(" %d ", i – abs(i – k));
}
printf("\n");
}
e để chiều cao là 1 số nguyên dương và in ra 3 dấu cách chứ k phải 1 nha
printf(” “);
Ở bài 8 ai giải thích dòng nay hộ em với ại trả hiểu j . em cảm ơn :
if (abs(h – j) <= i – 1) { }
e nên học debug kết hợp với vẽ ra giấy các bước thực hiện của bài tập thì sẽ hiểu nhé. Nhân tiện đó là bài khó nên e k cần phải vội hiểu ngay.
#include
#include
int main() {
int a, b;
printf(” Nhap vao hai so duong a va b: “);
scanf(“%d%d”, &a, &b);
int i, j;
int isprime = 1;
int count = 0;
for (i = a; i <= b; i++) {
if (i < 2) {
isprime = 0;
}
else {
int bound = sqrt(i);
for (j = 2; j <= bound; j++) {
if (i % j == 0) {
isprime = 0;
break;
}
}
}
if (isprime) {
printf("%d", i);
count++;
if (count == 2) {
break;
}
}
}
if (count == 0) {
printf(" khong co so nguyen to nao ");
}
}
// anh cho em hỏi tại sao em để khai báo isprime = 1 ở trên đầu thì chương trình chạy lại lỗi ạ? em cảm ơn ạ
trong vòng lặp e làm như sau:
for (i = a; i <= b; i++) { isprime = 1; if (i < 2) { isprime = 0; } else { int bound = sqrt(i); for (j = 2; j <= bound; j++) { if (i % j == 0) { isprime = 0; break; } } } if (isprime) { printf("%5d", i); count++; } }
mỗi lần lặp biến isprime sẽ reset lại nên phải để nó trong vòng lặp mới đúng được.
e học thêm kĩ năng debug ở trong khóa học để hiểu hơn luồng chương trình nhé.
Học cách tư duy thuật toán là học môn nào trong ngành CNTT vậy anh …Em cảm ơn …
Tại sao code trong if lại dùng || mà không dùng &&.
int main() {
int i, j;
for (i = 1; i < 7; i++) {
for (j = 1; j <= 7; j++) { // vẽ trên 6 hàng
// chỉ in ra * ở hàng đầu, hàng cuối, cột đầu, cột cuối
if (!(i == 1 && (j == 1 || j == 4 || j == 7) ||
(i == 4 && (j == 1 || j == 7)) ||
(i == 5 && (j = 6)) ||
(i == 6 && j != 4))) {
printf(” * “); // in ra các dấu *
}
else { // những vị trí còn lại in dấu cách
printf(” “); // in ra ba dấu cách
}
// dành bao nhiêu kí tự in dấu * thì dành bấy nhiêu kí tự in dấu cách
}
printf(“\n”); // in xuống dòng
}
}
điều kiện mình tự phân tích và chuyển đổi logic có được sang code.