Bài tập môn Tin học đại cương có lời giải

BÀI TẬP MÔN TIN HỌC ĐẠI CƯƠNG CÓ LỜI GIẢI

 

Bài 1 : Cho dãy x1,x2…xn. Tính giá trị trung bình của dãy

Giải

var i,n : integer;

    x:array[1..100] of real;

    tong : real;

begin

 write('n = ');readln(n);

 for i:=1 to n do

   begin

     write('x[',i,']= ');

     readln(x[i]);

   end;

 for i:=1 to n do

 tong:=tong+x[i];

 writeln('TB = ',tong/n);

 readln;

 end.

Bài 2 : Cho dãy x1,x2…xn. Tác dãy trên thành 2 dãy : 1 dãy gồm các phần tử >=0, 1 dãy gồm các phần tử <0

Giải

var i,n,k,l : integer;

    x,y,z : array[1..100] of real;

begin

write('Nhap n : ');readln(n);                                                      

for i:=1 to n do

 begin

    write('x[',i,'] = ');

    readln(x[i]);

 end;

for i:=1 to n do

 if x[i]>=0 then

   begin

     k:=k+1;

     y[k]:=x[i];

   end

 else

   begin

     l:=l+1;

     z[l]:=x[i];

   end;

 Writeln('Day ca phan tu >=0 la :');

 for i:=1 to k do

   writeln('y[',i,'] = ',y[i]:4:1);

 Writeln('Day ca phan tu <0 la :');

 for i:=1 to l do

   writeln('z[',i,'] = ',z[i]:4:1);

 readln;

 end.

Bài 3 : Cho dãy x1,x2…xn. Sắp xếp dãy số sao cho phần tử >=0 về đầu, phần tử <0 về cuối, trật tự các phần tử không thay đổi

Giải

var i,n,k : integer;

    x,y : array[1..100] of real;

begin

write('Nhap n : ');readln(n);

for i:=1 to n do

 begin

    write('x[',i,'] = ');

    readln(x[i]);

 end;

for i:=1 to n do

 if x[i]>=0 then

   begin

     k:=k+1;

     y[k]:=x[i];

   end;

 for i:=1 to n do

 if x[i]<0 then

 begin

   k:=k+1;

   y[k]:=x[i];

 end;

 for i:=1 to k do

   writeln('y[',i,'] = ',y[i]:4:1);

 readln;

 end.

Bài 4 : Cho dãy x1,x2…xn. Xóa phần tử xk

Giải

var i,n,k : integer;

    x,y : array[1..100] of real;

begin

write('Nhap n : ');readln(n);

for i:=1 to n do

 begin

    write('x[',i,'] = ');

    readln(x[i]);

 end;

write('Nhap vi tri k :');readln(k);

for i:=k to n-1 do

  x[i]:=x[i+1];

for i:=1 to n-1 do

 writeln('x[',i,']= ',x[i]:4:1);

readln;

end.

Bài 5 : Cho dãy x1,x2…xn. Chèn M vào vị trí k

Cách 1 :

var i,n,k,m : integer;

    x,y : array[1..100] of real;

begin

write('Nhap n : ');readln(n);

for i:=1 to n do

 begin

    write('x[',i,'] = ');

    readln(x[i]);

 end;

write('Nhap vi tri k :');readln(k);

write('Nhap so can chen M :');readln(m);

for i:=1 to n+1 do

if i

  y[i]:=x[i]

else if i=k then

  y[i]:=m

else

  y[i]:=x[i-1];

for i:=1 to n+1 do

  writeln('y[',i,']= ',y[i]:4:1);

readln;

end.

 

Cách 2 : Dino

uses crt;

var i,k,m,n:integer;

    a:array[1..100] of integer;

Begin

     clrscr;

     write('Nhap so phan tu day: ');

     readln(n);

     For i:=1 to n do

         begin

              write('A[',i,']= ');

              readln(a[i]);

         end;

     write('Nhap vi tri k: ');

     readln(k);

     write('Nhap so m: ');

     readln(m);

     for i:=n downto k do a[i+1]:=a[i];

     a[k]:=m;

     writeln('Day sau khi chen la: ');

     for i:=1 to n+1 do write(a[i]:4);

     readln;

End.

Bài 6 : Kiểu mảng - Cho bảng sau :

STT

Họ tên

Điểm

1

…..

m

 

1..n

 

 

 

 

  1. Tính điểm trung bình của từng sinh viên
  2. Tìm ra những sinh viên có điểm trung bình cao nhất
  3. Sắp xếp lại bảng trên theo trật tự tăng dần của điểm trung bình

Giải :

var n,m,i,j,k :integer;

    ht:array[1..20] of string[20];

    diem:array[1..20,1..10] of real;

    tong,tb:array[1..20] of real;

    tg,tg2,s,max:real;

    tg1:string[20];

begin

  write('Nhap n : ');readln(n);

  write('Nhap m : ');readln(m);

  for i:=1 to n do

    begin

      write('HTSV ',i,' la   ');

      readln(ht[i]);

      for j:=1 to m do

         begin

           write('DT mon ',j,' la ');

           readln(diem[i,j]);

         end;

    end;

  for i:=1 to n do

     begin

        tong[i]:=0;

        for j:=1 to m do

          tong[i]:=tong[i]+diem[i,j];

        tb[i]:=tong[i]/m;

     end;

  max:=tb[1];

  for i:=1 to n do

    if tb[i]>max then

      max:=tb[i];

  write('Danh sach cac hoc sinh co TB max bang ',max:6:1,' la :');

  for i:=1 to n do

    if tb[i]=max then

      write(ht[i],',  ');

  for i:=1 to n-1 do

    for k:=i+1 to n do

      if tb[i]>tb[k] then

         begin

           tg:=tb[i];

           tb[i]:=tb[k];

           tb[k]:=tg;

           tg1:=ht[i];

           ht[i]:=ht[k];

           ht[k]:=tg1;

           for j:=1 to m do

             begin

               tg2:=diem[i,j];

               diem[i,j]:=diem[k,j];

               diem[k,j]:=tg2;

             end;

         end;

  writeln('Danh sach sau khi sap xep la :');

  for i:=1 to n do

     begin

        writeln;

        write(ht[i]);

        for j:=1 to m do

           write('  ',diem[i,j]:4:1,'  ');

     end;

  readln;

  end.

Bài 7 : Cho ma trận Anxm, tính tổng từng hàng, từng cột của ma trận

Giải

var i,m,n,j : integer;

    a:array[1..10,1..10] of real;

    b1:array[1..10] of real;

    b2:array[1..10] of real;

begin

write('Nhap so hang : ');readln(n);

write('Nhap so cot : ');readln(m);

for i:=1 to n do

  for j:=1 to m do

    begin

      write('a[',i,',',j,']= ');

      readln(a[i,j]);

    end;

for i:=1 to n do

  b1[i]:=0;

for i:=1 to m do

  b2[i]:=0;

for i:=1 to n do

  for j:=1 to m do

    begin

      b1[i]:=b1[i]+a[i,j];

      b2[j]:=b2[j]+a[i,j];

    end;

for i:=1 to n do

   begin

  writeln;

   for j:=1 to m do

     write(a[i,j]:4:1,'  ');

   end;

writeln;

writeln('Tong tung hang la : ');

for i:=1 to n do

  writeln('Hang ',i,'=  ',b1[i]:4:1);

writeln('Tong tung cot la : ');

for j:=1 to m do

  writeln('Cot ',j,'= ',b2[j]:4:1);

readln;

end.

Bài 8 : Cho ma trận Anxm, xóa hàng thứ k của ma trận.

Giải

var i,m,n,k,j:integer;

    a:array[1..100,1..100] of real;

begin

 write('Nhap so hang :');readln(n);

 write('Nhap so cot :');readln(m);

 for i:=1 to n do

   for j:=1 to m do

   begin

    write('a[',i,',',j,']= ');

    readln(a[i,j]);

   end;

 write('Nhap hang can xoa :');readln(k);

 for j:=1 to m do

   for i:=k to n-1 do

    a[i,j]:=a[i+1,j];

 for i:=1 to n-1 do

   for j:=1 to m do

     writeln('a[',i,',',j,']= ',a[i,j]:4:1);

readln;

end.

Bài 9 : Cho ma trận Anxm tìm giá trị lớn nhất của ma trận, xóa hàng đầu tiên chứa giá trị lớn nhất đó.

Giải

var n,m,i,j,max,k : integer;

    x:array[1..10,1..10] of integer;

begin

  write('Nhap n : ');readln(n);

  write('Nhap m : ');readln(m);

  for i:=1 to n do

    for j:=1 to m do

      begin

        write('x[',i,',',j,']= ');

        readln(x[i,j]);

      end;

  k:=1; max:=x[1,1];

  for i:=1 to n do

     for j:=1 to m do

       if x[i,j]>max then

         begin

         max:=x[i,j];

         k:=i;

         end;

  for j:=1 to m do

    for i:=k to n-1 do

      x[i,j]:=x[i+1,j];

  for i:=1 to n-1 do

    begin

    writeln;

    for j:=1 to m do

      write(x[i,j],'  ') ;

    end;

  readln;

  end.

Bài 10: Cho ma trận Anxm tìm giá trị lớn nhất của ma trận, xóa cột đầu tiên chứa giá trị lớn nhất đó.

Giải

var i,j,m,n,k,max:integer;

    a:array[1..10,1..10] of integer;

begin

 write('Nhap n : ');readln(n);

 write('Nhap m : ');readln(m);

 for i:=1 to n do

   for j:=1 to m do

     begin

       write('a[',i,',',j,']= ');

       readln(a[i,j]);

     end;

 k:=1; max:=a[1,1];

 for j:=1 to m do

   for i:=1 to n do

     if a[i,j]>max then

       begin

         max:=a[i,j];

         k:=j;

       end;

 for i:=1 to n do

   for j:=k to m-1 do

     a[i,j]:=a[i,j+1];

 for i:=1 to n do

   begin

     writeln;

     for j:=1 to m-1 do

       write(a[i,j],'  ');

   end;

 readln;

 end.

 

{-- Xem đầy đủ nội dung tại Xem online hoặc Tải về--}

Trên đây là trích dẫn một phần Bài tập môn Tin học đại cương có lời giải, để xem đầy đủ nội dung đề thi và đáp án chi tiết các em vui lòng đăng nhập website Chúng tôi chọn Xem online hoặc Tải về máy tính. Chúc các em học tốt và thực hành hiệu quả!

Tham khảo thêm

Bình luận

Có Thể Bạn Quan Tâm ?