Nhờ mọi người giải đáp thắc mắc trong code c

Mọi người ơi em có mấy bài tập thế này, em code ra rồi chạy rồi mà nó cứ mắc lỗi sai khi em chạy chương trình.
Đây là đề bài:

Bài làm:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
	
void ho_ten_can_nang();
void diem();
void nuoc();


int main(){
	int tiepTuc;
	do{
		system("cls");
	printf(" 1.Bai 1\n 2.Bai 2\n 3.Bai 3\n 4.Bai 4\n 5.Bai 5\n 6.Thoat Khoi He Thong \n");
	int dapAn;
	printf("Moi ban nhap so tu 1 den 6 de vao bai tap tuong duong : \n");
	scanf("%d",&dapAn);
	switch(dapAn){
		case 1: printf("Chao mung ban den voi bai toan 1 \n");
				ho_ten_can_nang();
				break;
		case 2: printf("Chao mung ban den voi bai toan 2 \n");
				diem();
				break;
		case 3: printf("Chao mung ban den voi bai toan 3 \n");
				nuoc();
				break;
		case 4: goto Finish;
				break;
		default : printf("Moi ban nhap lai dap an : \n");
				break;
				
	}
 	printf("Ban co muon tiep tuc chuong trinh? 1.Yes  0.No \n");
 	scanf("%d",&tiepTuc);
 }
  	while(tiepTuc==1);
  	Finish:
	return 0;
	
}


void ho_ten_can_nang(){
	char ho_ten[30];
	double can_nang;
	printf("Moi ban nhap ho ten : ");
	scanf("%s",&ho_ten);
	printf("Ho ten cua ban la %s %s \n ",&ho_ten);
	printf("Moi ban nhap so can nang : ");
	scanf("%lf",&can_nang);
	printf("Can nang cua ban la %lfkg \n",&can_nang);
}

void diem(){
	float diem;
		system("cls");
		printf("Moi ban nhap so diem : ");
		scanf("%f",&diem);
	if(diem>=50 || diem<=100){
     	printf("So diem la %.1f! Ban da nhap du lieu thanh cong \n",diem);
	}else{
		printf("Ban da nhap sai, moi ban nhap lai:\n");
	}
}

void nuoc(){
	float nuoc,tien;
	printf("Moi ban nhap so m3 nuoc da su dung: ");
	scanf("%f",&nuoc);
	if(nuoc>=0 || nuoc<=10){
		tien= (nuoc*6000);
		tien+=tien*0.1;
		printf("So tien quy khach phai thanh toan la : %.1f \n",tien);
	}
	else if(nuoc>=11 || nuoc<15){
		tien=(10*6000) + ((nuoc-10)*7000);
		tien+=tien*0.1;
		printf("So tien quy khach phai thanh toan la : %.1f \n",tien);
	}
	else if(nuoc>=15 || nuoc<=20){
		tien = (10*6000)+(4*7000)+((nuoc-14)*8000);
		tien+=tien*0.1;
		printf("So tien quy khach phai thanh toan la : %.1f \n",tien);
	}
	else{
		tien = (10*6000)+(4*7000)+(5*8000)+((nuoc-19)*10000);
		tien+=tien*0.1;
		printf("So tien quy khach phai thanh toan la : %.1f \n",tien);
	}
}

Vấn đề em gặp phải trong bài kèm chi tiết bằng hình ảnh lỗi :
Bài 1 :
Em nhập được mỗi họ tên chứ không nhập được cân nặng và in ra thì nó thành thế này( Em muốn nhập và in ra họ tên, cân nặng)

Bài 2: Em muốn nhập giá trị nằm ngoài đoạn 50-100 thì hệ thống báo nhập sai và yêu cầu nhập lại. Nhưng e nhập giá trị nào vào cũng in ra là nhập đúng.

Bài 4,5: Em không làm được, ai có thể giúp em được không?

merged to the #1 post by noname00

Bài 1

Ý bạn là nó chỉ nhập họ thôi chứ gì? Vì %s chỉ nhận chuỗi không có khoảng trắng. Tức là khi gặp khoảng trắng, nó sẽ dừng nhận chuỗi. Mà Họ và Tên thì có khoảng trắng.
Hàm gets() sẽ giúp bạn nhập chuỗi có khoẳng trắng trên 1 dòng.
Dùng thêm fflush(stdin) để loại bỏ kí tự xuống dòng sau khi nhập chuỗi sẽ nhập được giá trị số tiếp theo.

Bài 2

Phép toán luận lý VÀ (&&)/HOẶC (||). Xét cho kĩ.

Bài 3

Bạn làm cho ra kết quả đúng!
Chỉ có vấn đề là bạn làm dài dòng. Rút gọi đi rất nhiều bằng cách để những thứ giống nhau (2 dòng) trong if - else ra sau if - else.

Bài 4

Bạn biết cách khai báo mảng rồi chứ! Và cả vòng lặp duyệt mảng nữa!

int a[10];

Giờ chỉ thêm số lượng phần tử là biến thôi.

int n;
// Nhập n
int a[n];
// Lặp và nhập giá trị cho a[i]

Bài 5

Bạn biết cách nhập chuỗi rồi! So sánh chuỗi thì có hàm: strcmp().
Nhập và so sánh. Chỉ có vậy. Và chú ý phép toán luận lý &&/||.

5 Likes

Em đã sửa được !
Em cảm ơn

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?