30/09/2018, 16:24
thắc mắc về lệnh switch
mình đang làm bài toán vẽ một tam giác bằng dấu *. chương trình mình viết như thế này:
#include <stdio.h>
#include <stdlib.h>
void main(void)
{
int n,i;
n=9;
for(i=0;i<=n;i++)
{
int j,a,b;
for(j=1;j<=(2*n);j++)
{
a=n-j;
b=n+j;
switch (j)
{
case (a): case (b): { printf("*");
break;
}
default: break ;
}
}
}
return 0;
}
mình thắc mắc chỗ lệnh switch, mình chọn các giá trị case như vậy nó lại báo lỗi đó không phải là hằng số trong khi trước lệnh switch mình đã gắn cho giá trị a, b một số rất rõ ràng, a=n-j và b=n+j với n=9 và j=1 sau đó j thay đổi tăng dần sau mỗi vòng lặp.
mong mọi người giải thích vì sao lại như vậy.
Bài liên quan
trong switch @kakashi_cpl phải cho hằng số vào. Tức là số hoặc là biến hằng.
nó vẫn báo lỗi như vậy anh Đạt
http://codepad.org/ASLZw93u
và cả trong codeblocks.
Vậy là anh nhớ nhầm, code trên chỉ chạy được với C++, không chạy được với C. Em bắt buộc phải dùng số cho vào switch.
Nếu em muốn dùng biến, thì em chuyển sang sử dụng if được không?
em cũng đang chuyển sang dùng lệnh if anh. Ban đầu em nghĩ lệnh switch bắt mình phải nhập vào một giá trị để nó có thể xác định và thực hiện nên trước khi vào lệnh switch em đã gán cho nó một giá trị. Giờ thì em hiểu cẩn phải là số chứ không phải là một giá trị nào đó mà mình gán cho nó.