Hỏi về return 0 và getch()

Cho em hỏi return 0; và getch() là sao ạ
Coi thấy có 1 số ng dùng 1 trong 2 cái đó
Em học tới vòng lập for r mà còn chưa biết return 0; nó có ý nghĩa gì có thể bỏ nó đi dc k ạ

2 Likes

Chào bạn
1: _getch() là cú pháp dừng màn hình (để xem kết quả,để coi lại gì đó hoặc đơn giản là dừng(giống lệnh system(“pause”),muốn dùng bạn phải gọi coni.h
2: return là cú pháp trả về giá trị cho 1 hàm(đôi khi dùng trong cả hàm đệ quy,theo kiến thức hạn hẹp nông cạn của mình nó dùng để trả về kết quả cho 1 hàm hoặc thủ tục trong hàm đệ quy
VD:

 # include  < iostream>
 #include < conio.h>
int main()
{
_getch();
return 1;
}

Trên đây là chia sẻ kiến thức hạn hẹp của mình,nếu có sai sót xin mọi người đừng chê cười
link tham khảo cho bạn mới học:https://www.youtube.com/watch?v=jrn6bXC6sTU&list=PLyiioioEJSxHVTaeL-ELYy6Io-I8diIVZ

1 Like
  1. về từ khóa return, để biết rõ mời bạn tham khảo lại cách định nghĩa hàm. Ở đây mình đoán là bạn thắc mắc trong hàm main(), return 0 ám chỉ chương trình chạy không lỗi
  2. về hàm getch(); hàm này dùng để nhập dữ liệu từ bàn phím, nếu chưa rõ thì có thể google: getch() in C là sẽ có đầy đủ. Còn ở đây thường họ đặt getch(); ở cuối chương trình để dừng màn hình console lại để xem kết quả, nếu không thì sẽ k kịp thấy gì cả
5 Likes

cảm ơn bạn đã giúp mình hiểu thêm về 2 hàm này :slight_smile:

Mà bác ơi có vd về return 0; k ạ chứ học cơ bản như em k thấy nó # biệt quá lớn khi bỏ hoặc k bỏ nhưng nếu dùng int main() thì bắt buộc phải có

systeam(“pause”) chỉ trong bộ dịch của Micro thôi , theo chuẩn là ko có nó với _getch() , ký tự _ chỉ có trong bộ dịch Micro

Vì bạn chưa dùng kết quả trả về nên không thấy ý nghĩa của nó.

Khi bạn gọi một hàm( kể cả hàm main) thì mỗi hàm nó sẽ có một giá trị nào đó.
Vd:

int trave(int a){
return a
}

Hàm trên có giá trị bằng 1 số nguyên interger nào đó(a), để xác đính giá trị của nó thì bạn phải return (trả về) cho nó 1 giá trị.(rẻtun a;)
Ngoài ra hàm có kiểu là “void" thì bạn ko cần xác định giá trị của nó (ko cần return). Vì các hàm kiểu void chủ yếu dùng để in, xuất ra màn hình.
Vd:

void xuat(int a){
cout<< a;
}

Hiện tại có lẽ bạn hay thấy nguời ta thuờng khai báo hàm main duới dạng:

int main(){
.......
.......
return 0;
}

Thì cái return 0; hiểu đơn giản là hàm đuợc gán bằng giá trị 0 thôi.:slight_smile:
Như khi bạn khai báo một biến thì bạn phải khởi tạo giá trị cho nó

float a=3.456f; 

Hàm thì thế này:

float a(){
return 3.456;
}

Thì bạn hiểu cái return nó tuơng đuơng với phép gán thôi.

2 Likes

“bộ dịch Micro”:từ này mình không hiểu lắm,mong bạn nói rõ hơn

ví dụ return 0:

# include  < iostream>
# include < conio.h>

using namespace std;
int ChiaHetCho2(int n);


int main()
{
	int x;
	cout << "\nNhap vao 1 so nguyen: ";//thông báo người  dùng nhập vào 1 số
	cin >> x;//nhập số vào biến số nguyên x
	int kq = ChiaHetCho2(x);//gán biến kq bằng hàm chia hết cho 2
	if (kq == 1)//nếu kết quả =1
		cout <<endl<< x << " chia het cho 2.\n";//xuất ra thông báo chia hết
	else//nếu kết quả =0
		cout << endl << x << " khong chia het cho 2.\n";//xuất ra thông báo không chia hết
	_getch();
	return 1;
}
//tạo 1 hàm kiểm tra việc chia hết cho 2,
//nếu chia hết trả về 1
//nếu không chia hết trả về 0
int ChiaHetCho2(int n)
{
	if (n % 2 != 0)//nếu mà số nhập vào chia hết cho 2
		return 0;//Hàm chia hết cho 2 trả về giá trị 1
	else
		return 1;//nếu không trả về 0
}

và khi chạy:

Chúc bạn may mắn :slight_smile:

Như bạn trên nói là đúng rồi, mình bổ sung một tí:

  • getch() là lệnh nhập lieu, ở đây là 1 kí tự kiểu char. Người ta dung nó để dừng chương trình cho đến khi ta nhấn 1 phím nào đó.
  • return 0(Ở HÀM MAIN) tức là trả về 0, 0 ở đây hiểu nôm na là Không lỗi, chương trình chạy “an toàn”.
  • “Bộ dịch Microsoft” mình hiểu là bạn đang nói về chuẩn của Visual Studio. :smiley:
3 Likes

Ra z cảm ơn bạn rất nhiều
Kiến thức nông cạn mong bạn đừng cười chê :slight_smile:

Không biết thì hỏi mới giỏi đc, không biết mà giấu dốt mới là dở :slight_smile:

1 Like

complier đó của microsoft , ko phải chuẩn chung nên ko có systeam(“pause”)

có cách nào để getch() nhận dữ liệu theo kiểu float không ạ?

Sao không dùng scanf bạn :slight_smile:

2 Likes

Do getch() không hiển thị khi nhập. :slight_smile:

2 Likes

vì mình không muốn ký tự được hiển thị khi nhập

Vậy bạn tham khảo hàm getf() của mình. :slight_smile:

#include <stdio.h>
#include <conio.h>
#include <ctype.h>

double getf(void) {
    char c = 0, sign = 1;
    double res1 = 0, res2 = 0;
    for (int first = 1; c = getch();) {
        if (first && c == '-') {
            sign = -sign;
            continue;
        } else first = 0;
        if (c == '.') break;
        if (!isdigit(c)) return res1 * sign;
        res1 = 10 * res1 + c - '0';
    }
    
    if (c != '.') return res1;

    for (double tenpow = 10;; tenpow *= 10) {
        c = getch();
        if (!isdigit(c)) return (res1 + res2) * sign;
        res2 += (double)(c - '0') / tenpow;
    }
}

int main() {
    double a = getf();
    printf("%g\n", a);
    return 0;
}
3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?