01/10/2018, 00:19

Cho em hỏi sao chương trình này lại không chạy được cái hàm thứ 2

#include<stdio.h>

	float nhap_so(float a,float b,float c)
		{
		printf("nhap so a "); scanf("%f",&a);
		printf("nhap so b "); scanf("%f",&b);
		printf("nhap so c "); scanf("%f",&c);
		}
	float lonnhat(float a, float b, float c)
	{
		float max;
		max =a;
		if (max <b) max=b;
		if (max < c) max=c; 
		printf("%f",max);
		
		
	}
	main()
	{
		float a,b,c;
		nhap_so(a,b,c);
		lonnhat(a,b,c);
	
	}
X viết 02:27 ngày 01/10/2018

Chưa chạy code nhưng thấy có nhiều chỗ sai.

  1. Hàm float nhưng không thấy trả về gì cả.
  2. a, b, c trong main, hàm nhập số chạy xong thì a, b, c vẫn không nhận được giá trị gì => &a, &b, &c

P/s: Sau này khi vừa vào thì thuộc lòng rồi gõ y cái sườn này :v

#include <stdio.h>
...
int main()
{
   // your code...
   return 0;
}
Long Dragon viết 02:27 ngày 01/10/2018

Thứ 1: Bạn học lại cách trình bày code nhé

float nhap_so(float a,float b,float c)
		{
		printf("nhap so a "); scanf("%f",&a);
		printf("nhap so b "); scanf("%f",&b);
		printf("nhap so c "); scanf("%f",&c);
		}

Bạn đặt kiểu trả về của hàm là float thì trong hàm sau khi xử lý phải có return x; với x là biến kiểu float.

Còn trong hàm, bạn thực hiện thao tác nhập giá trị cho tham số thì trên danh sách tham số bạn phải truyền tham chiếu cho nó: float nhap_so(float &a,float &b,float &c).
Nhưng chú ý là tham chiếu chỉ có ở C++, bên C không có. Nếu bạn code trên Visual Studio thì không cần quan tâm vấn đề này do file bạn đang code là file.cpp rồi, còn nếu bạn code bằng CodeBlocks thì nên sử dụng tham số là con trỏ, còn không thì tạo file.cpp chứ file.c chắc không cho truyền tham chiếu đâu

float lonnhat(float a, float b, float c)
	{
		float max;
		max =a;
		if (max < b) max=b;
		if (max < c) max=c; 
		printf("%f",max);	
	}

Hàm này cũng vậy. Do bạn in ra ngay trong hàm đó và không trả về kết quả xử lý nên để kiểu trả về của hàm là void , như thế này: void lonnhat(float a, float b, float c)

Thêm 1 điều nữa là trong hàm main bạn nên để kiểu trả về là int và thêm dòng return 0; ở cuối hàm nhé. Còn muốn chương trình dừng nữa thì để thêm dòng getch(); hoặc getchar();

int main()
	{
		float a,b,c;
		nhap_so(a,b,c);
		lonnhat(a,b,c);
                getchar();
	        return 0;
	}

Cố lên nhé bạn

Tuổi Già Ta Vẫn Xông Pha viết 02:27 ngày 01/10/2018

Sai là đúng rồi chứ còn gì nữa
Hàm nhập
Nếu bạn muốn nhập 1 lúc cả 3 số thì phải truyền tham biến và dùng kiểu void

void nhap(float &a,float &b,float &c)
{
printf(:Nhap vao a: “); scanf(”%f",&a);
printf(:Nhap vao b: “); scanf(”%f",&b);
printf(:Nhap vao c: “); scanf(”%f",&c);
}
Nếu bạn muốn in ra giá trị max luôn thi dùng void còn không thì phai rturn giá trị max để hàm main sử dụng

Mai Hữu viết 02:22 ngày 01/10/2018

Bạn nên học lại về hàm nha. biến a,b,c của bạn trong ct ko truyền dc vô ct con đâu

Bài liên quan
0