30/09/2018, 16:21

Tách một số để kiểm tra các số bên trái, bên phải và ở giữa?

Mọi người cho mình ý tưởng để làm bài này nhé

Viết chương trình nhập vào một số nguyên dương n, kiểm tra xem chữ số bên phải nhất cua n có bang 9, chữ số bên trái nhất có bang 2, các chữ số ở giữa có khác 2 và 9 không?

Đinh Quốc Hân viết 18:34 ngày 30/09/2018

Bạn nên đưa ra cách làm thay vì viết code ra như thế, điều này sẽ giúp bạn đặt ra câu hỏi có thể tư duy và hiểu hơn về câu hỏi của chính bản thân mình

Trí Hải Dương viết 18:25 ngày 30/09/2018

ok.cacs bạn có thể đưa cho mình hướng làm bài đó thôi,dưng viết code,

Trí Hải Dương viết 18:28 ngày 30/09/2018

các bạn ơi bài này mình muốn đưa về mảng thì làm kiểu gì,mình đưa được các chữ số vào het mảng roi xong không biết làm gì nữa

nhatlonggunz viết 18:23 ngày 30/09/2018

Bạn ơi, mình chỉ mới học cách này vài ngày nay, không biết dùng trong bài này được không, đây là ý tưởng:

  1. Nhâp số n (dùng int, cái này cần chú ý, mình sẽ giải thích), nếu cần thì khai báo thêm biến nữa có khi cần dùng.
  2. Dùng phép % (phép chia lấy dư). Khi bạn lấy n % 10 thì sẽ ra được số cuối cùng (ví dụ như 1234 % 10 = 4, thế là bạn đã lấy được chữ số cuối)
    3.Đến đây bạn bạn làm thế này:
    *** Dùng vòng lặp (mình dùng while, cho điều kiện n != 0), sau khi xong bước 2 (bước 2 để trong vòng lặp luôn), bạn cho n/10 thì số đó sẽ mất đi chữ số cuối cùng (ví dụ: 1234 / 10 = 123.4 nhưng do bạn báo kiểu int nên nó chỉ lấy phần nguyên là 123 => loại được chữ số cuối. Còn nếu là float hay double thì bạn phải dùng hàm ceil hay floor trong thư viện <math.h> để làm tròn)

Thế là đã tách được số, đó là cách tách, phần còn lại của bài bạn làm tiếp nhé. À, mà cũng không bắt buộc dùng vòng lặp đâu, bạn sáng chế ra thêm nhé

BaoLe viết 18:25 ngày 30/09/2018

Mình mới nghĩ ra ,bạn xem thử code dưới ra sao:

#include<stdio.h>
int main(){
    // dung y tuong la dung mang.
    int soNguyen,songuyen[100]={},dem=0,check=0;
    printf("Nhap mot so nguyen bat ky: ");
    scanf("%d",&soNguyen);
    int soNguyen1=soNguyen;
    while(soNguyen!=0){//tach cac chu so cua soNguyen dua vao mang de kiem tra
        songuyen[dem]=soNguyen%10;
        dem++;
        soNguyen=soNguyen/10;
    }
    //kiem tra gia tri cua phan tu dau mang cua mang chinh la so ben trai nhat.
    if(songuyen[0]!=2)
        printf("So ben trai nhat cua so %d khong phai la so 2..\n",soNguyen1);
    else
        printf("So ben trai nhat cua so %d la so %d.\n",soNguyen1,songuyen[0]);
        //kiem tra gia tri cua phan tu dau mang cua mang chinh la so ben phai nhat.
    if(songuyen[dem-1]!=9)
        printf("So ben phai nhat cua so %d khong phai la so 9.\n",soNguyen1);
    else
        printf("So ben phai nhat cua so %d la so %d.\n",soNguyen1,songuyen[dem-1]);
        //kiem tra gia tri cua phan tu khong phai la dau mang va khong phao la cuoi mang.bang bien check.
    for(int i=1;i<dem-1;i++){
        if(songuyen[i]!=2&&songuyen[i]!=9)
            check=1;
        else{
            check=0;
            break;
        }
    }
    if(check==1)
        printf("Cac so o giua khong phai la so 2 va so 9.\n");
    else if(check==0)
        printf("Cac so o giua co so 2 va so 9.\n");
    return 0;
}

Trí Hải Dương viết 18:25 ngày 30/09/2018

ok.cam on cac ban nha

nhatlonggunz viết 18:36 ngày 30/09/2018

Eo,

nên đưa ra cách làm thay vì viết code ra như thế, điều này sẽ giúp bạn đặt ra câu hỏi có thể tư duy và hiểu hơn về câu hỏi của chính bản thân mình

Em đồng ý với anh @kayz, anh @14520054 không nên đưa luôn code ra vậy, chỉ khi bạn/anh kia bí quá thôi

Bài liên quan
0