Discuss: Anh em chỉnh lại cho đẹp giúp mình!

Xin chào mọi người, mình chỉ mới tập tành học code, ở đây mình đang muốn ứng dụng condition If else và vòng lặp While nên nảy ra ý tưởng viết 1 chương trình yêu cầu người dùng nhập vào 1 số chẵn và in nó ra màn hình console !!!

Hix hix, nói đừng cười chứ, nghe đơn giản vậy thôi nhưng với gà mờ như mình cũng phải mất 2 ngày nay mới viết được thành công, và mình vẫn chưa hài lòng vì:

1/ Code mình viết có cảm giác nó rối rắm thế nào ấy !!! Ko biết các bạn khác đọc vào thì thấy code mình vậy có quá rối ko ???
2/ Ở cái else cuối cùng, mình thật sự không biết có cách code nào khác không vì ở cái else này mình muốn viết linh tinh gì vào cũng được và chương trình đã ngừng lại trước đó rồi !!! Cả cái câu lện trong else cuối cùng này cũng sẽ không bao giờ được in ra !!!

Mong các bạn hội ý giúp đỡ chỉ dẫn mình những bước đầu tập tễnh nhé !!!
Many thanks mọi người !!!

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(int argc, char* argv[])
{
    printf("Vong lap While!\n\n");

    int socannhap, sodu;

    printf("Nhap mot so chan!!!\n\n");
    scanf("%d", &socannhap);
    sodu = socannhap % 2;

    if(sodu == 0)
    {
        printf("So chan co gia tri la: %d\n\n", socannhap);
        long a = 0;
        while (a<5)
        {
            printf("Xin chuc mung ban!!!\n");
            a++;
        }
    }
    else
    {
        int socannhap1, sodu1;
        printf("Xin nhap lai so khac!\n\n");
        scanf("%d", &socannhap1);
        sodu1 = socannhap1 % 2;
        if (sodu1 !=0 )
        {
            while(sodu1 != 0)
            {
                printf("Xin nhap lai so khac!\n\n");
                scanf("%d", &socannhap1);
                sodu1 = socannhap1 % 2;
            }
            printf("So chan co gia tri la: %d\n\n", socannhap1);
            long a = 0;
            while (a<5)
            {
                printf("Xin chuc mung ban!!!\n");
                a++;
            }
        }
        else
        {
            printf("Khong con gi de noi nua!");
        }
    }
    return 0;
}
2 Likes

Theo đúng như yêu cầu của bạn đó là: viết chương trình yêu cầu nhập vào một số nguyên bất kỳ nếu là số chẵn thì in ra màn hinh (sử dụng if-else và vòng lặp while).Đây là code của mình, code cho phép nếu không phải là số chẵn thì yêu cầu nhập lại.

#include<stdio.h>
#include<conio.h>
void main()
{
int so_bat_ky,check=1;
while(check!=0)
{
printf("so_bat_ky=");
scanf("%d",&so_bat_ky);
check=so_bat_ky%2;
if(check!=0)
printf("%d khong phai la so chan.Xin moi nhap lai.\n",so_bat_ky);
else
printf("%d la mot so chan",so_bat_ky);
}
getch();
}

Nếu có lỗi gì thì nhờ mọi người fix lại giúp mình.Thank you vì đã đọc bài viết này.

4 Likes

Còn nói lỗi mà bạn mắc phải thì phải nhờ người khác.Tuy mình biết một số lỗi trong code của bạn nhưng mình không biết diễn đạt như thể nào để bạn hiểu.

1 Like
#include <stdio.h>
#include <conio.h>

int main(int argc, char* argv[])
{
        int socannhap, sodu;
    	char chon;
	do
	{
		printf("Vong lap While!\n\n");
		printf("Nhap mot so bat ki!!!\n\n");
    	        scanf("%d", &socannhap);
   	   	sodu = socannhap % 2;

		if(sodu==0)
		{
			printf("So chan co gia tri la: %d\n\n", socannhap);
        	        long a = 0;
        	        while (a<5)
        	        {
                              printf("Xin chuc mung ban!!!\n");
                              a++;
        	        }
		}
		else
		    printf("So ban vua nhap la so le \n");
		printf("Ban co muon lam lai c / k ? ");
		scanf("%s",&chon);
    }while( chon == 'c');
    return 0;
}

Mình thêm giúp bạn phần lặp lại với phần else nhé. Nhìn đơn giản hơn nhiều

1 Like

Bài này chỉ cần ngắn gọn vầy thôi, không cần dài dòng.

#include <stdio.h>

int main(void) {
    // your code goes here
    int so;
    do {
        printf("Nhập 1 số chẵn: ");
        scanf("%d", &so);
    } while (so & 1);
    return 0;
}
4 Likes

Code của bạn hay thật.

1 Like

Thanks mọi người,

Vì mình là người mới học nên mình chỉ mới biết được có vài intruction thôi, ở đây mình chỉ mới học tới If … else và while (thêm 1 số kiến thức về biến) nên mình ứng dụng những cái đã học để viết chương trình theo ý tưởng của mình.

Ý mình là với những kiến thức beginer như trên của mình và code mình viết như thế thì có cái gì ngộ ngộ không … tại vì cái else cuối của mình giống như là không còn trường hợp nào để nó xảy ra nữa … mình có thể rút bớt hoặc thêm trường hợp gì cho cái else cuối không các mọi người !!!

BTM ơi … code của bạn rất gọn gàng … chắc bạn là người có kinh nghiệm rồi … bạn có thể giải thích thêm cho mình không … mình thấy mấu chốt của sự khác biệt trong code của bạn là ở chỗ int main (void) đúng không … cái (void) đó nó giúp gì cho mình mà tốt vậy !!!

Bạn xem thật kĩ video này thì sẽ rõ.

Toán tử do … while biểu thức điều kiện (so & 1) là toán tử bitwise
Biến ‘so’ được nhập vào, và số ‘1’ hệ 10 được đổi sang hệ 2; toán tử & thực hiện theo từng cột tương ứng 0 & 0 = 0; 0 & 1 = 0; 1 & 0 = 0; 1 & 1 = 1.
Số chẵn & số 1 = số 0; số lẻ & số 1 = số 1; luôn luôn có giá trị là 0 hoặc 1 (sai hoặc đúng).
Nếu nhập vào số chẵn thì biều thức điều kiện sai (0) thoát vòng lặp.

5 Likes

tuyệt vời, rất ngắn gọn nhưng vẫn chạy tốt :smiley:

2 Likes

cái toán tử & này lần đầu ms gặp, kiến thức của bạn sâu ghê !!

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