01/10/2018, 00:31

Không thể build and run C trên codeblock

Mọi người giúp em với, code của em là: #include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    const int MAX=100, MIN=1;
    int soRandom, soBanChon;
    srand(time(NULL));
    soRandom = (rand() % (MAX -MIN + 1)) + MIN;
    printf ("ban chon so nao?");
    scanf ("%d", soBanChon);
    while(soBanChon!=soRandom)
    {
        if(soBanChon<soRandom)
        {
            {
                printf("Hay chon mot so lon hon di!");
            }
        }
        else
        {
            {
                printf("Ban hay chon mot so nho hon!");
            }
        }
    }


    return 0;
}
Nguyễn Xuân Phúc viết 02:41 ngày 01/10/2018

nếu mà chọn sai, thì nó run to die :v

viết 02:34 ngày 01/10/2018

Bạn sai syntax nữa, scanf ("%d", soBanChon); phải là scanf ("%d", &soBanChon);, số random và số bạn chọn khác nhau là vòng while chạy hoài.

mit to vi viết 02:40 ngày 01/10/2018

int main()
{
const int MAX=100, MIN=1;
int soRandom, soBanChon;
srand(time(NULL));
soRandom = (rand() % (MAX -MIN + 1)) + MIN;
printf (“ban chon so nao?”);
scanf ("%d", soBanChon);
while(soBanChon!=soRandom)
{
if(soBanChon<soRandom)
{
{
printf(“Hay chon mot so lon hon di!”);
}
}
else
{
{
printf(“Ban hay chon mot so nho hon!”);
}
}
}

return 0;

}

sao lại phỉa thêm &, làm mấy cái bài đơn giản em có cần và đâu

viết 02:45 ngày 01/10/2018

Dấu & trong C để trả về địa chỉ của biến (ở đây là biến soBanChon). Hàm scanf cần & để set giá trị bạn nhập vào cho biến soBanChon. Nếu không đặt dấu &, thì khi bạn in giá trị của biến ra, nó sẽ in ra địa chỉ của biến đó chứ không phải giá trị của biến.
Ở đây mình có hàm in thử giá trị của bien soBanChon sau khi tăng lên 1:
Input: 5
Output: 2359037 (tùy máy), đây là địa chỉ của biến.

#include <stdio.h>
int main()
{
    int soBanChon;
    printf ("ban chon so nao?");
    scanf ("%d", soBanChon);
    soBanChon++;
    printf("%d", soBanChon);
    return 0;
}
Người bí ẩn viết 02:46 ngày 01/10/2018

sao lại phỉa thêm &, làm mấy cái bài đơn giản em có cần và đâu

Đối với string (đặc tả %s) thì không cần & do nó đã là 1 địa chỉ rồi.
Còn mấy đặc tả còn lại phải thêm &

mit to vi viết 02:38 ngày 01/10/2018
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{
    int a,b,c,x3;
    printf("nhap vao lan luot gia tri cua a, b, c:\n");
    scanf("%d \n",&a);
    scanf("%d\n", &b);
    scanf("%d\n", &c);
    if(a>0)
    {
        int delta,x1,x2,nkep,x3;
        delta = b*b-4*a*c;
        x1= (-b + sqrt(delta))/(2*a);
        x2= (-b - sqrt(delta))/(2*a);
        nkep= -b/(2*a); // nghiệm khi delta bằng 0

        if(delta>0)
        {
            printf("phuong trinh co hai nghiem x1: %d, x2= %d", &x1,&x2);

        }
        else if(delta==0)
        {
            printf("phuong trinh co nghiem kep la: %d", &nkep);

        }
        else
        {
            printf("vo nghiem cmnr");
        }
    }
    else if(a==0 && b==0)
    {
        printf("vo nghiem roi vclll");

    }
    else if(a=0 && b!=0)

        x3= (-c/b); // nghiệm khi là phương trình bậc nhất
        printf("phuong trinh co nghiem la: %d", &x3);


    return 0;
}

em làm sai chỗ nào mà nó không chayj nhể

viết 02:38 ngày 01/10/2018

Code của bạn mình sửa lại chút.

#include <stdio.h>
#include <math.h>
int main()
{
    double a, b, c, x3;
    printf("Nhap vao lan luot gia tri cua a, b, c: ");
    scanf("%lf", &a);
    scanf("%lf", &b);
    scanf("%lf", &c);
    if (a != 0)
    {
        float delta, x1, x2, nkep;
        delta = b * b - 4 * a * c;
        x1 = (-b + sqrt(delta)) / (2 * a);
        x2 = (-b - sqrt(delta)) / (2 * a);
        nkep = -b / (2 * a);

        if (delta > 0)
        {
            printf("phuong trinh co hai nghiem x1: %.4lf, x2= %.4lf\n", x1, x2);
        }
        else if (delta == 0)
        {
            printf("phuong trinh co nghiem kep la: %.4lf\n", nkep);
        }
        else
        {
            printf("vo nghiem cmnr\n");
        }
    }
    if (a == 0 && b == 0)
    {
        printf("vo nghiem roi vclll\n");
    }
    if (a == 0 && b != 0)
    {
        x3 = (-c / b);
        printf("phuong trinh co nghiem la: %.4lf\n", x3);
    }
    return 0;
}        

Mình có góp ý như sau:

  • Biến x3 bạn đã khai báo bên trên rồi thì không khai báo ở dưới nữa.
  • Phải để các biến là double, để có thể tính ra số thập phân, nếu để kiểu int ra kết quả không chính xác, vì trong phép tính có chia.
  • Đây là bài giải phương trình bậc 2, bạn chưa xét trường hợp a < 0, nên để if (a != 0) để xét cả 2.
  • Khi dùng printf thì không để & trước tên biến nữa, nếu để như vậy sẽ in ra địa chỉ của biến chứ không phải giá trị.
  • Trong code của mình có để %.4lf để lấy 4 chữ số thập phân của nghiệm.
  • Chỗ if cuối, bạn sai syntax, phải là a == 0.
    Chúc bạn học tốt!
Bài liên quan
0