30/09/2018, 16:05

Giúp gà bài toán C đơn giản

Đề bài :Tìm và in lên màn hình tất cả các số nguyên trong phạm vi từ 10 đến 99 sao cho tích của 2 chữ số bằng 2 lần tổng của 2 chữ số đó.
Thuật toán mình đưa ra là ,cho i j chạy từ 1–>9.Số cần tìm là số n=10*j+i.
Mình không biết là nên để lệnh break ở đâu.Tại mình để đâu cũng không thấy được.Vậy mọi người cho mình hỏi liệu thuật toán mình đưa ra có phù hợp không ? và chỉ ra cho mình cái sai trong đoạn code với nhé.Cảm ơn mọi người nhiều.

#include<stdio.h>

void main()
{
    int i,j,n;
    for(i=1; i<10; i++) {
        for(j=1; j<10; j++) {
            if (i*j==2*(i+j))
                n=10*j+i;
            printf("%d",n);
        }
    }
}
Phạm Hoàng Tuấn viết 18:09 ngày 30/09/2018

Sau vòng lặp for là 2 câu lệnh, mà bạn k dùng cặp dấu ngoặc {}:

    int i,j,n;
    
    	for(i=1;i<10;i++)
    	{
    		for(j=1;j<10;j++)
    		{
    			if (i*j==2*(i+j))
    			{
    				n=10*i+j;
    				printf("%d \t",n);
    			}
    		}
    	}

Nếu không đụng đến n thì có thể dùng kiểu printf("%d%d \t",i,j);

Người Cô Đơn viết 18:06 ngày 30/09/2018

ồ.Cảm ơn bạn nhiều.Chắc bỏ C quá.Những cái đơn giản nhất mà còn không xong.mất niềm tin quá . [quote=“tuancoi2506, post:2, topic:1252”]
Sau vòng lặp for là 2 câu lệnh, mà bạn k dùng cặp dấu ngoặc {}:

Nếu không đụng đến n thì có thể dùng kiểu printf("%d%d \t",i,j);
[/quote]

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

code bài này cũng có thể viết như sau nếu đề bài yêu cầu nếu N không thỏa mãn điều kiện(10<=N<=99) thì yêu cầu nhập lại.

#include<stdio.h>
#include<conio.h>
void main()
{
    int N,Ngoc,i,tong=0,tich=1;
    do
    {
        printf("N=");
        scanf("%d",&N);
        if(N<10&&N>99)
            printf("Gia tri cua N khong hop le.Xin moi nhap lai.\n");
    }
    while(N<10&&N>99);
    printf("Gia tri cua N da nhap hop le.\n");
    Ngoc=N;
    while(N!=0)
    {
        i=N%10;
        tong=tong+i;
        tich=tich*i;
        N=N/10;
    }
    if(tich==2*tong)
        printf("%d la gia tri can tim",Ngoc);
    getch();
}

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

Người Cô Đơn viết 18:21 ngày 30/09/2018

bài này chỉ cần tìm và in ra mà 14520054. Chú đang học UIT hả???Lớp nào vậy?

Minh Nguyen viết 18:19 ngày 30/09/2018

#include<stdio.h>
#include<conio.h>
//Đề bài : Tìm và in lên màn hình tất cả các số nguyên trong phạm vi từ 10 --> 99 sao cho tich 2 chữ số bằng 2 lần tổng 2 chữ số đó
// (36 --> 3*6 = 2( 3 + 6))
int main()
{
// Xét vòng lặp in ra số từ 10 —>99

            for(int i = 10; i < 99 ;++i)
            {
            int chuso, temp = i; // khai báo biến

            chuso = temp/10; // lấy số đầu tiên

            temp %= 10;      // lấy số thứ hai


            int tong = chuso + temp;

            int tich = chuso * temp;

            if(tich == 2*tong)
            {
	        printf("so can tim la: %d\n", i);
            }

            }


            getch();
            return 0;

}

Bài liên quan
0