Thầy giáo e ra đề bài thế này: nhập vào chương trình 1 số nguyên, nếu giá trị 1 in ra " lap vong for", nếu giá trị 0 in ra " lap vong while", nếu giá trị k phải là 1 hoặc 0 thì in ra " nhap lai". Chương trình chạy liên tục, chỉ thoát khi người dùng bầm phím “q” trên bàn phím.
E làm bài mà k biết nên khai báo biến ở kiểu gì? Ở lớp e mới học câu lệnh if, while, for.
Tìm kiểu dữ liệu cho biến
while(true){
char s[10];
scanf("%s",s);
if(strcmp(s,“0”)) puts(“for”);
else if(strcmp(s,“1”)) puts(“while”);
else if(strcmp(s,“q”)) break;
}
Bạn ơi, mình code bằng C++ như thế này nhưng lại báo lỗi, mình sửa như thế nào vậy bạn?
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
while (true)
{char a[10];
cin >> a;
if (a=="q")
break;
if (a==0)
cout <<"for";
** else if (a==1)**
cout<< "while";
else cout <<"lai";
}
return 0;
}
Lỗi thông báo là: [Error] ISO C++ forbids comparison between pointer and integer [-fpermissive] tại chỗ mình đánh dấu trong bài code.
#include <iostream>
using namespace std;
int main() {
while (true)
{char a;
cin >> a;
if (a=='q')
break;
if ((int)a-'0'==0)
{
cout <<"for"<<endl;
cout<<"nhap lai"<<endl;
}
else if ((int)a-'0'==1)
{
cout<< "while"<<endl;
cout<<"nhap lai"<<endl;
}
}
}
Bạn xem thế này được ko
Bạn ơi, bài của bạn chạy rồi nhưng mình k hiểu đoạn này lắm ((int)a-‘0’==0) hay ((int)a-‘0’==1)
Sao phải khai báo lại biến a theo kiểu int và có dấu trừ ở đoạn sau?
Nếu như sau nay mình muốn code chương trình mà có cả số và kí tự thì mình nên dùng kiểu dữ liệu nào để xử lí?
Mình cảm ơn bạn 
Trong cái code C++ gốc của bạn, bạn khai báo a là dạng char
- Nhưng ở lệnh a==“q”, bạn so sánh với double quote “q” là string.
- Ở dưới bạn lại so sánh vs 0, và 1 là integer nên mình nghĩ nó bị lỗi là đúng rồi.
Trong code của mình, mình chèn thêm (int) a -‘0’ mục đích là chuyển đổi từ char sang integer thôi, sau đó mới thực hiện so sánh vs số 0 là integer
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?