Thứ Bảy, 9 tháng 4, 2011

BT pascal co ban


Bài 1:
Viết chương trình nhập vào 1 số N nguyên dương và in ra màn hình các sỗ chẵn từ 0àN mỗi số chiếm 4 vị trí và 15 số trên 1 dòng.
Lời giải:
uses crt; {khai bao' thu vien crt}
var n,i,dem:integer;
BEGIN
     clrscr;{ cau lenh xoa man hinh};
     write('Nhap n: ');readln(n);
     dem:=0;
     for i:=1 to n do
       begin
         if i mod 2=0 then
           begin
             write(i:4);
             dem:=dem+1;
           end;
         if dem=15 then
           begin
             dem:=0;
             writeln;{in duoc 15 so thi xuong dong};
           end;
       end;
     readln
END.








Bài 2:
Nhập số có 3 chữ số tính tổng các chữ số của nó:
Lời giải:
uses crt;
var a:integer;tong:byte;
BEGIN
     clrscr;
     write('Nhap 1 so co 3 chu so: ');readln(a);
     tong:= a mod 10;
     a:=a div 10;
     tong:=tong+a mod 10;
     a:=a div 10;
     tong:=tong+a mod 10;
     writeln('Tong cac chu so do la: ',tong);
     readln
END.
Bài 3:
Nhập 2 số nguyên, hoán vị 2 số đó khi a>b
Lời giải:
uses crt;
var a,b,tg:integer;
BEGIN
     clrscr;
     write('Nhap a: ');readln(a);
     write('Nhap b: ');readln(b);
     if a>b then
       begin
         tg:=a;
         a:=b;
         b:=tg;
       end;
     writeln(a,' ',b);
     readln
END.
Bài 4:
Lập chương trình nhập vào độ dài các cạnh của tam giác rồi thực hiện :
   + Tính chu vi, diện tích, 3 đường cao của tam giác.
   + Kiểm tra xem tam giác đó có là tam giác cân hoặc vuông không?
Lời giải:
uses crt;
var a,b,c,cv,dt,p:real;
BEGIN
  clrscr;
  write('Nhap do dai canh a: ');readln(a);
  write('Nhap do dai canh b: ');readln(b);
  write('Nhap do dai canh c: ');readln(c);
  cv:=a+b+c;
  p:=(a+b+c)/2;
  dt:=sqrt(p*(p-a)*(p-b)*(p-c));
  writeln('Chu vi tam giac la: ',cv:0:4);
  writeln('Dien tich tam giac la: ',dt:0:4);
  writeln('Duong cao canh thu 1 la: ' , dt*2/a:0:4);
  writeln('Duong cao canh thu 2 la: ',dt*2/b:0:4);
  writeln('Duong cao canh thu 3 la: ',dt*2/c:0:4);
  if (a=b) or (a=c) or(b=c) then writeln('Tam giac can');
  if (a*a=b*b+c*c) or (b*b=a*a+c*c) or (c*c=b*b+a*a)then
     writeln('Tam giac vuong');
  readln
END.







Bài 5:
Lập trình giải phương trình bậc 2:
Lời giải:
uses crt;
var a,b,c,x1,x2,d:real;
BEGIN
   clrscr;
   write('Nhap a: ');readln(a);
   write('Nhap b: ');readln(b);
   write('Nhap c: ');readln(c);
   d:=b*b-4*a*c;
   if d>0 then
     begin
       x1:=(-b+sqrt(d))/(2*a);
       x2:=(-b-sqrt(d))/(2*a);
       writeln('2 nghiem PT la: ',x1:0:2,' va: ',x2:0:2);
     end
   else if d=0 then
     begin
        x1:=(-b)/(2*a);
        writeln('PT co nghiem kep la: ',x1:0:2);
     end
   else writeln('PT vo nghiem');
   readln
END.








Bài 6:
 Nhp vào 1 s nguyên gm 4 ch s
 -Kim tra tình chn l
 -kim tra xem có phi là s nguyên t không
 -kim tra xem có phi là s hoàn ho không
Lời giải:
uses crt;
var n,i:integer;ok:boolean;
BEGIN
     clrscr;
     write('Nhap n: ');readln(n);
     if n mod 2=0 then writeln('So ',n,' la so chan')
       else writeln('So ',n,' la so le');
     if n<2 then write('So ',n,' khong la so nguyen to')
     else
       begin
          ok:=true;
          for i:=2 to trunc(sqrt(n)) do
                   if n mod i=0 then ok:=false;
          if ok then writeln('So ',n,' la so nguyen to')
                   else writeln('So ',n,' khong la so nguyen to');
       end;
     readln
END.
Có thể thay câu lệnh lặp “for i:=2 to trunc(sqrt(n)) do” bằng câu lệnh while..do..khi đó ta không cần biến ok nữa.


Bài 7:
Nhập n,a hãy tính căn bậc n của a:
Lời giải:
uses crt;
var n:integer;a,s:real;
BEGIN
     clrscr;
     write('Nhap a: ');readln(a);
     repeat      write('Nhap n: ');readln(n);      until (n>0);
     if (n mod 2=0) and (a>=0) then
       begin
          s:=exp(1/n*ln(a));
          writeln('Ket qua la: ',s:0:4);
       end
     else if (n mod 2<>0) then
       begin
         s:=exp(1/n*ln(abs(a)));
         writeln('Ket qua la: ',s:0:4);
       end
     else writeln('Khong xac dinh');
     readln
END.

Bài 8:
Nhập số nguyên dương n in ra tổng các số nguyên dương là bội của 3 hoặc 5 từ 1àn
Lời giải:
uses crt;
var n,tong,i:integer;
BEGIN
     clrscr;
     write('Nhap so nguyen duong n: ');readln(n);
     tong:=0;
     for i:=1 to n do
       if (i mod 3=0) or (i mod 5=0) then
         tong:=tong+i;
          writeln('Tong cac so chia het cho 3 hoac 5 tu 0--> ',n,' la: ',tong);
     readln; END.
Bài 10:
Nhập n in ra tổng các chữ số của n:Lời giải:
uses crt;
var n,m:longint;tong:byte;
BEGIN
     clrscr;
     write('Nhap n: ');readln(n);
     tong:=0;m:=n;
     while m>0 do
       begin
         tong:=tong+m mod 10;      m:=m div 10;
       end;
     writeln('Tong cac chu so cua ',n,' la: ',tong);
     readln
END.

Bài 9:
Số nguyên tố là số nguyên dương chỉ chia hết cho 1 và chính nó, ngoại trừ 0 và 1.
Lập trình nhập vào 1 số nguyên dương n và kiểm tra xem nó có phải là số nguyên tố không?
Lời giải:
uses crt;
var n,i:integer;
BEGIN
     write('Nhap so nguyen duong n: '); readln(n);
     if n<2 then writeln(n,' khong la so nguyen to')     else                  begin
         i:=2;
         while ((i<=trunc(sqrt(n))) and (n mod i<>0)) do
           i:=i+1;
         if i>trunc(sqrt(n)) then writeln(n,' la so nguyen to')
           else writeln(n,' khong la so nguyen to');
   end;
     readln; END.

Bài 12:
Số hoàn hảo là số mà có tổng các ước của nó không kể nó bằng chính nó.
VD: số 28 có các ước là: 1 2 4 7 14
        số 6 có các ước là: 1 2 3
Lập trình nhập vào 1 số nguyên dương n và kiểm tra xem số đó có là số hoàn hảo không?
Lời giải:
uses crt;
var n:longint;tong,i:integer;
BEGIN
     clrscr;
     write('Nhap so nguyen duong n: ');readln(n);
     tong:=0;
     for i:=1 to n div 2 do
       if n mod i=0 then tong:=tong+i;
     if tong=n then writeln(n,' la so hoan hao')
       else writeln(n,'khong la so hoan hao');
     readln
END.
Bài 13:
Số chính phương là số có căn bậc 2 là 1 số nguyên.
VD số 9 là số chính phương vì căn bậc 2 của 9 bằng 3.
Lập trình nhập 1 số nguyên dương n từ bàn phím kiểm tra xem số đó có là số chính phương không?
Lời giải:
uses crt;
var n:longint;
BEGIN
     clrscr;
     write('Nhap so nguyen duong n: ');readln(n);
     if sqrt(n)=trunc(sqrt(n)) then writeln(n,' la so chinh phuong')
       else writeln(n,' khong la so chinh phuong');
     readln; END.
Bài 14:
Nhập vào 1 xâu kí tự và cho biết xâu vừa nhập vào có bao nhiêu nguyên âm và bao nhiêu kí tự số.
Lời giải:
uses crt;
var s:string;dem1,dem2,i:byte;
BEGIN
     clrscr;
     write('Nhap 1 xau: ');readln(s);
     dem1:=0;dem2:=0;
     for i:=1 to length(s) do
       begin
         if s[i] in ['a','e','i','o','u','y','A','E','I','O','U','Y'] then dem1:=dem1+1;
         if s[i] in ['0','1','2','3','4','5','6','7','8','9'] then dem2:=dem2+1;
       end;
     writeln('Trong xau ',s,' co ',dem1,' nguyen am va co ',dem2,' ki tu so');
     readln
END.
Bài 15:
Lập trình giải bài toán cố sau Vừa gà vừa chó Bó lại cho tròn  Ba mưoi sáu con .Một trăm chân chẵn.
Lời giải:
uses crt;
var cho:byte;
BEGIN
     clrscr;
     for cho:=1 to 25 do
       if 4*cho+(36-cho)*2=100 then
         writeln('So ga la: ',36-cho,' so cho la: ',cho);
     readln
END.
Bài 16:
Nhập 1 số nguyên dương n <1000 cho biết có bao nhiêu số nguyên tố từ 0àn
Lời giải:
uses crt;
var n,i,j,dem:integer;
BEGIN
     clrscr;
     write('Nhap so nguyen duong n: ');readln(n);
     dem:=0;
     for i:=2 to n do
       begin
          j:=2;
          while ((j<=trunc(sqrt(i))) and (i mod j<>0)) do
            j:=j+1;
          if j>trunc(sqrt(i)) then dem:=dem+1;
       end;
     writeln('So luong so nguyen to trong khoang tu 0-->',n,' la: ',dem);
     readln
END.

Bài 17:
Nhập 1 số n kiểm tra tính chẵn lẻ, xem số đó có chia hết cho 3 không,tổng các chữ số của nó có là bội của 6 không
Lời giải:
uses crt;
var n,m,tong:integer;
BEGIN
     clrscr;
     write('Nhap n: ');readln(n);
     if n mod 3=0 then writeln(n,' chia het cho 3')
     else writeln(n,' khong chia het cho 3');
     m:=n;tong:=0;
     while m>0 do
       begin
         tong:=tong+m mod 10;
         m:=m div 10;
       end;
     if tong mod 6=0 then writeln('Tong cac chu so cua ',n,' la ',tong,' chia het cho 6')
     else writeln('Tong cac chu so cua ',n,' la ',tong,' khong chia het cho 6');
     readln
END.

Bài 18:
Tính tổng n số phibonaci: F0=F1=1;Fi=Fi-1+Fi-2. (với mọi i>1).
Lời giải
uses crt;
var f,ft,ftn,tong:longint;n,i:integer;
BEGIN
     clrscr;
     write('Nhap n: ');readln(n);
     ft:=1;ftn:=1;tong:=2;
     for i:=2 to n do
       begin
         f:=ft+ftn;
         tong:=tong+f;
         ftn:=ft;
         ft:=f;
       end;
     writeln('Tong n so hang dau day fibolaci la: ',tong);
     readln
END.
Có thể biến đổi đề bài của bài toán đi như: tính số phibonaci thứ n hoặc nhập vào 1 số kiểm tra xem số đó có phải là số phibonaci hay không…Các bài đó làm tương tự.

Bài 19:
 Nhập số nguyên dương n lập chương trình tính:
  S1= 1+3+5+7+…+(2*n+1)
Lời giải:
uses crt;
var i,n,s1:integer;
BEGIN
     clrscr;
     write('Nhap n: ');readln(n);
     s1:=0;
     for i:=1 to 2*n+1 do
        if i mod 2<>0 then s1:=s1+i;
     writeln('Tong S1 la: ',s1);
     readln
END.
Bài 20:
Tính S2=13+23+33+…+n3 trong đó n nhập từ bàn phím.
Lời giải:
uses crt;
var i,n:integer;s2:longint;
BEGIN
     clrscr;
     write('Nhap so n: ');readln(n);
     s2:=0;
     for i:=1 to n do
       s2:=s2+i*i*i;
     writeln('Tong S2 la: ',s2);
     readln
END.

Bài 21:
Nhập 2 số n,m sao cho m<n lập trình tính S3= Cnm = (n(n-1)…(n-m+1))/m! (Tổ hợp chập m của n)
Lời giải:
uses crt;
var i,m,n,tu,mau:integer;
    s3:longint;
BEGIN
     clrscr;
     repeat
     write('Nhap n: ');readln(n);
     until n>0;
     repeat
     write('Nhap m: ');readln(m);
     until (m<=n) and (m>0);
     tu:=1;mau:=1;
     for i:=n-m+1 to n do
       tu:=tu*i;
     for i:=2 to m do
       mau:=mau*i;
     s3:= tu div mau;
     writeln('to hop chap ',m,' cua ',n,' la: ',s3);
     readln
END.

Bài 22:
Nhập số thực dương e(e<0.01) rồi tính tổng
S4=1+1/22+1/32+…+1/n2 +… (chương trình kết thúc khi 1/n2<e)
Lời giải:
uses crt;
var s4,e:real;i:integer;
BEGIN
     clrscr;
     repeat
       write('Nhap so thuc duong e<0.01: ');
       readln(e);
     until (e>0) and (e<0.01);
     s4:=0;i:=1;
     while 1/(i*i)>e do
       begin
         s4:=s4+1/(i*i);
         i:=i+1;
       end;
     writeln('Ket qua la: ',s4:0:4);
     readln
END.

Bài 23:
Nhập số thực dương e(e<0.01) rồi tính tổng
S5= 1- 1/3+1/5-1/7+…+(-1)n/(2*n+1)  (dừng khi 1/(2*n+1) <e)
Lời giải:
uses crt;
var s5,e:real;i:integer;
BEGIN
     clrscr;
     repeat
       write('Nhap so thuc duong e<0.01: ');
       readln(e);
     until (e>0) and (e<0.01);
     s5:=1;i:=1;
     while 1/(2*i+1)>e do
       begin
         if i mod 2=0 then s5:=s5+1/(2*i+1) else s5:=s5-1/(2*i+1);
         i:=i+1;
       end;
     writeln('ket qua la: ',s5:0:4);
     readln
END.

Bài 24:
Lập chương trình để nhập vào 4 dãy số a1,..,an;b1,…bn;c1,…,cn;d1,…,dn.
Sau đó in ra kết quả n dòng 6 giá trị theo mẫu sau:
      Ai    bi    ci    di   max(ai,bi,ci,di)    min(ai,bi,ci,di)
Lời giải:
uses crt;
var a,b,c,d:array[1..1000]of integer;
    n,max,min,i:integer;
BEGIN
     clrscr;
     write('Nhap n: ');readln(n);
     for i:=1 to n do
       begin
         write('Nhap A[',i,']: ');  readln(a[i]);
         write('Nhap B[',i,']: ');  readln(b[i]);
         write('Nhap C[',i,']: ');  readln(c[i]);
         write('Nhap D[',i,']: ');  readln(d[i]);
       end;
     for i:=1 to n do
       begin
         write(a[i],' ',b[i],' ',c[i],' ',d[i],' ');
         max:=a[i];min:=a[i];
         if b[i]>max then max:=b[i];
         if c[i]>max then max:=c[i];
         if d[i]>max then max:=d[i];
         write(max,' ');
         if b[i]<min then min:=b[i];
         if c[i]<min then min:=c[i];
         if d[i]<min then min:=d[i];
         writeln(min);
       end;
     readln
END.
Bài 25:
Cho các số tự nhiên n (khai bảo longint), và cho biết: n có bao nhiêu chữ số, tổng các chữ số của n và số đảo ngược của n.
VD: số 123 có 3 chữ số, tổng các chữ số bằng 6, số đảo ngược là 321
Lời giải:
 uses crt;
var m,n:longint;tong,dem:byte;
BEGIN
     clrscr;
     write('Nhap so n: ');readln(n);
     m:=n;dem:=0;tong:=0;
     while m>0 do
       begin
          tong:=tong+ m mod 10;
          dem:=dem+1;
          m:=m div 10;
       end;
     writeln(n,' co ',dem,' chu so va tong cac chu so cua ',n,' la: ',tong);
     write('So dao nguoc cua ',n,' la: ');
     m:=n;
     while m>0 do
       begin
         write(m mod 10);
         m:=m div 10;
       end;
     readln
END.

Bài 26:
Nhập số nguyên dương n và dãy số a1,a2,…,an hãy in ra max, min dãy đó
Lời giải:
uses crt;
var n,i,max,min:integer;
    a:array[1..1000] of integer;
BEGIN
     clrscr;
     repeat
       write('Nhap so nguyen duong n: ');
       readln(n);
     until (n>0) and (n<=1000);
     for i:=1 to n do
       begin
         write('Nhap A[',i,']: ');
         readln(a[i]);
       end;
     max:=a[1];min:=a[1];
     for i:=2 to n do
       begin
         if a[i]>max then max:=a[i];
         if a[i]<min then min:=a[i];
       end;
     writeln('Max cua day so la: ',max);
     writeln('Min cua day so la: ',min);
     readln
END.

Bài 27:
Nhập số nguyên dương n và dãy số a1,a2,…,an. Hãy sắp xếp dãy đó tăng dần và in dãy đã được sắp xếp ra màn hình.
Lời giải:
uses crt;
var n,i,j,tg:integer;
    a:array[1..1000]of integer;
BEGIN
     clrscr;
     repeat
       write('Nhap so nguyen duong n: ');
       readln(n);
     until (n>0) and (n<1000);
     for i:=1 to n do
       begin
         write('Nhap A[',i,']: ');readln(a[i]);
       end;
     for i:=1 to n-1 do
       for j:=i+1 to n do
         if a[i]>a[j] then
           begin
              tg:=a[i];
              a[i]:=a[j];
              a[j]:=tg;
           end;
     writeln('Day sau khi duoc sap xep la: ');
     for i:=1 to n do
       write(a[i]:4);
     readln
END.
Tương tự với bài sắp xếp với dãy giảm dần.

Bài 28:
Cho 2 dãy số a1,..,an; b1,..,bm. đã được sắp xếp theo thứ tự tăng dần. Lập trình để từ 2 dãy trên xây dựng 1 dãy mới cũng theo thứ tự tăng dần.
Lời giải:

Bài 29:
Nhập số nguyên dương n và dãy số a1,a2,…,an.Hãy tính và in ra màn hình tổng các số lẻ trong dãy
Lời giải:

Có thể làm với 1 số đề bài tương tự như: tính tổng các số là số nguyên tố trong dãy hoặc tổng các số là số chính phương trong dãy
Bài 30:
Lập trình nhập 1 mảng 2 chiều kích thước n*n phần tử, Hãy in ra màn hình mảng được sắp xếp theo hình ziczắc.
VD        1  2  2  4                  
              5  5  6  8
              9  10 10 11
Lời giải:



  











         

0 nhận xét:

Đăng nhận xét

◄ Newer Post Older Post ►
 

Copyright 2012 clip 9x Seo Elite by BLog BamZ | Blogger Templates