Bài tập vẽ tam giác+làm tròn và xuất số!

25 views
Skip to first unread message

Nông Ngọc Hoai

unread,
Mar 4, 2013, 9:46:24 AM3/4/13
to b2tind4...@googlegroups.com
Bài 1:
Input: Nhập vào 1 số thực f, và 1 số nguyên N
OutPut: làm tròn số thực f đến 2 chữ số thập phân, tam giác đều với đỉnh là số f.
---------------------------------------------------------------------------------------------------------------------
- Làm tròn số f thì đơn giản rùi, khi xuất ra chỉ cần: printf("%.2f",f); là OK
- Vẽ tam giác cân thì ta dùng 1 vòng lặp for để vẽ khoảng trắng và * cho  cân đối: 

//Ve Tam Giac
 
for (i=2; i<=n; i++)
   
{
     
for (j=1; j<=(n-i); j++) printf(" ");
     
for (j=1; j<=(2*i-1); j++) printf("*");
      printf
("\n");
   
}


hoặc: 

//Ve Tam Giac  
for (i=2; i<=n; i++)
   
{
     
for (j=1; j<=(n-i); j++) printf(" ");
     
for (j=1; j<=(i); j++) printf("* ");
      printf
("\n");
   
}

- Bây giờ là khoản căn số f sao cho vào đúng đỉnh của tam giác. Sẽ phải dùng đến thư viện <stdlib.h><string.h> sau đó dùng đến 2 cái sau:
+Thủ tục itoa(f,ch,10): biến số f thành xâu ch với f là một số, ch là một xâu (chú ý: chỉ biến được phần nguyên).
+Hàm strlen(ch): đưa ra chiều dài của xâu ch.
==> bây giờ chiều dài của số f sẽ là (strlen(ch)+3). Phải cộng 3 vì ngoài phần nguyên còn có dấu phẩy và 2 số phần thập phân!
==> căn cho số f vào đỉnh tam giác đã OK

Mã nguồn như sau: 

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
main
()
{
   
float f;
   
int n,i,j,l;
   
char ch[255];
    printf
("Nhap vao so can lam tron f= ");
    scanf
("%f",&f);
    itoa
(f,ch,10); //chuyen phan nguyen cua so f thanh xau ch
    printf
("Nhap vao chieu cao tam giac: ");
    scanf
("%d",&n);
   
for (i=1; i<=(n-(strlen(ch)+3)/2); i++) //Can vi tri cua so f
       printf
(" ");
    printf
("%.2f",f);
     printf
("\n");
//Ve Tam Giac
   
for (i=2; i<=n; i++)
   
{
     
for (j=1; j<=(n-i); j++) printf(" ");
     
for (j=1; j<=i; j++) printf("* ");
      printf
("\n");
   
}
}

(Thay đoạn vẽ tam giác sẽ cho kiểu vẽ tam giác khác nhau)

Bài 2:
InPut: Nhập vào 1 số N dương
OutPut: Xuất ra các số từ 1 đến N
-------------------------------------------------
-Bài này khá OK nhưng bây giờ mình không chơi theo vòng lặp if hay while thì làm thế nào@!
-Nghịch tí hì, mình với Dũng làm theo kiểu đệ quy cũng OK phết

* Làm theo vòng lặp for:

#include <stdio.h>
main
()
{
   
int i,n;
    scanf
("%d",&n);
   
for (i=1; i<=n; i++)
        printf
("%d ",i);
    getch
();
}


*Chơi theo đệ quy:

#include <stdio.h>


int i=1;
int n;


viet
(int n)
{
   
if (i<=n)
   
{
        printf
("%d ",i);
        i
++;
        viet
(n);
   
}
}
main
()
{
    printf
("Nhap vao N: ");
    scanf
("%d",&n);
    viet
(n);
    getch
();
}


Bonus: a++ và ++a

vd: 
a=2;
b
=a++;
//b=2, a=3;

Tức là gán b=a xong mới tăng a

Còn:

a
=2
b
=++a;
//b=3, a=2;
Ở đây thì tăng a xong mới gán b=a;

Thứ tự thực hiện phép toán

Reply all
Reply to author
Forward
0 new messages