Bài học bài Khái niệm về lập trình và ngôn ngữ lập trình nhằm giúp các em học sinh: Biết khái niệm lập trình, ngôn ngữ lập trình; phân loại ngôn ngữ lập trình; hiểu thế nào là chương trình dịch, thông dịch, biên dịch,... Để tìm hiểu nội dung chi tiết, mời các em cùng theo dõi nội dung bài học dưới đây.
Ngôn ngữ lập trình được chia thành ba loại:
Chương trình có chức năng chuyển đổi chương trình viết trên ngôn ngữ lập trình bậc cao thành chương trình thực hiện được trên máy tính gọi là chương trình dịch
Hình 1. Chương trình dịch
Trong đó:
Chương trình dịch được chia thành hai loại: Thông dịch và biên dịch
Hãy nêu sự khác biệt giữa 2 loại của chương trình dịch là biên dịch và thông dịch?
Gợi ý trả lời:
Biên dịch | Thông dịch |
Đọc và dịch toàn bộ mã nguồn trong một lần | Đọc và dịch từng câu lệnh trong mã nguồn |
Thực thi chương trình vừa biên dịch được | Thực thi từng câu lệnh sau khi câu lệnh đó được dịch xong |
Chương trình có thể được lưu trữ để dùng về sau | Không được lưu trữ để dùng về sau |
Trong chế độ biên dịch, một chương trình đã được dịch thông suốt, hệ thống không báo lỗi. Có thể khẳng định rằng ta đã có một chương trình đúng hay chưa? Tại sao?
Gợi ý trả lời:
Không thể khẳng định chương trình đúng vì chương trình có thể vẫn còn chứa lỗi ngữ nghĩa.
Trong chế độ thông dịch, giả sử hai phần ba số câu lệnh trong chương trình đã được thự hiện. Có thể khẳng định rằng chương trình không còn chứa lỗi cú pháp nữa hay không? Tại sao?
Gợi ý trả lời:
Không thể khẳng định. Cú pháp của các câu lệnh chưa thực hiện chưa được kiểm tra.
Sau khi chương trình đã được dịch thông suốt, không còn lỗi cú pháp, có cần tiếp tục hiệu chỉnh, tức là tìm và sửa lỗi trong chương trình nguồn nữa hay không?
Gợi ý trả lời:
Có. Cần kiểm tra ngữ nghĩa.
Sau khi học xong bài này các em cần ghi nhớ:
Các em có thể hệ thống lại nội dung kiến thức đã học được thông qua bài kiểm tra Trắc nghiệm Tin học 11 Bài 1 cực hay có đáp án và lời giải chi tiết.
Hãy chọn phương án ghép phù hợp nhất. Ngôn ngữ lập trình là gì:
Phát biểu nào dưới đây chắc chắn sai?
Phát biểu nào sau đây chắc chắn sai?
Câu 4-10: Mời các em đăng nhập xem tiếp nội dung và thi thử Online để củng cố kiến thức về bài học này nhé!
Các em có thể xem thêm phần hướng dẫn Giải bài tập Tin học 11 Bài 1để giúp các em nắm vững bài học và các phương pháp giải bài tập.
Bài tập 1 trang 13 SGK Tin học 11
Bài tập 2 trang 13 SGK Tin học 11
Bài tập 3 trang 13 SGK Tin học 11
Trong quá trình học tập nếu có thắc mắc hay cần trợ giúp gì thì các em hãy comment ở mục Hỏi đáp, Cộng đồng Tin học DapAnHay sẽ hỗ trợ cho các em một cách nhanh chóng!
Chúc các em học tập tốt và luôn đạt thành tích cao trong học tập!
-- Mod Tin Học 11 DapAnHay
Hãy chọn phương án ghép phù hợp nhất. Ngôn ngữ lập trình là gì:
Phát biểu nào dưới đây chắc chắn sai?
Phát biểu nào sau đây chắc chắn sai?
Hãy chọn phương án ghép đúng. Ngôn ngữ lập trình là ngôn ngữ
Hãy chọn phương án ghép đúng. Ngôn ngữ máy là
Hãy chọn phương án ghép đúng. Hợp ngữ là ngôn ngữ
Hãy chọn phương án ghép sai. Ngôn ngữ lập trình bậc cao là ngôn ngữ
Phát biểu nào không đúng trong các phát biểu dưới đây?
Phát biểu nào dưới đây là sai khi nói về biên dịch và thông dịch?
Phát biểu nào dưới đây là đúng trong các phát biểu dưới đây?
Tại sao người ta phải xây dựng các ngôn ngữ lập trình bậc cao?
Chương trình dịch là gì? Tại sao cần phải có chương trình dịch?
Biên dịch và thông dịch khác nhau như thế nào?
Họ và tên
Tiêu đề câu hỏi
Nội dung câu hỏi
Câu trả lời của bạn
uses crt;
var a:array[1..100]of integer;
i,n,t,max,kq,j:integer;
begin
clrscr;
write('Nhap n='); readln(n);
for i:=1 to n do
begin
write('A[',i,']='); readln(a[i]);
end;
max:=0;
for i:=1 to n do
begin
t:=0;
for j:=1 to a[i] do
if a[i] mod j=0 then t:=t+j;
if max<=t then
begin
max:=t;
kq:=a[i];
end;
end;
writeln('So co tong cac uoc lon nhat trong day la: ',kq);
readln;
end.
Câu trả lời của bạn
uses crt;
var a,b:integer;
begin
clrscr;
write('Nhap a='); readln(a);
write('Nhap b='); readln(b);
if a>b then writeln(a)
else if a<b then writeln(b)
else writeln('Hai so bang nhau');
readln;
end.
Câu trả lời của bạn
uses crt;
var a,b,c,p,s:real;
begin
clrscr;
repeat
write('Nhap a='); readln(a);
write('Nhap b='); readln(b);
write('Nhap c='); readln(c);
until (a>0) and (b>0) and (c>0);
if (a+b>c) and (a+c>b) and (b+c>a) then
begin
p:=(a+b+c)/2;
s:=sqrt(p*(p-a)*(p-b)*(p-c));
writeln('Dien tich tam giac la: ',s:4:2);
end
else writeln('Day khong la ba canh trong mot tam giac');
readln;
end.
a) tính tổng giá trị các phần tử trong dãy và hiển thị ra màn hình
b) tìm và hiển thị ra màn hình phần tử có giá trị nhỏ nhất, lớn nhất trong dãy
Câu trả lời của bạn
uses crt;
var a:array[1..100]of integer;
i,n,t,max,min:integer;
begin
clrscr;
write('Nhap n='); readln(n);
for i:=1 to n do
begin
write('A[',i,']='); readln(a[i]);
end;
t:=0;
for i:=1 to n do
t:=t+a[i];
writeln('Tong cac phan tu trong day la: ',t);
max:=a[1];
min:=a[1];
for i:=1 to n do
begin
if max<a[i] then max:=a[i];
if min>a[i] then min:=a[i];
end;
writeln('Gia tri lon nhat la: ',max);
writeln('Gia tri nho nhat la: ',min);
readln;
end.
- Tính tổng các số từ M đến N.
- Đếm các số chẵn (lẻ), chia hết cho 3 từ M đến N.
- Kiểm tra 1 số nguyên nhập vào từ bàn phím có phải là số chẵn (lẻ), số âm (dương), chia hết cho 3 hay không.
Câu trả lời của bạn
Program HOC24;
var x,m,d,d1,n: integer;
t: longint;
begin
write('Nhap M:'); readln(m);
write('Nhap N:'); readln(n);
t:=0; d:=0;
for i:=m to n do
begin
t:=t+i;
if i mod 2=0 then d:=d+1 else d1:=d1+1;
end;
writeln('Tong cac so tu ',m,' den ',n,' la: ',t);
write('Nhap so nguyen: '); readln(x);
if x mod 2=0 then writeln(x,' la so le') else writeln(x,' la so chan');
if x<0 then wirteln(x,' la so am') else writeln(x,' la so duong');
if x mod 3=0 then write(x,' chia het cho 3');
readln
end.
Câu trả lời của bạn
program tich_2so;
uses crt;
var c, d: double;
begin
clrscr;
write('Nhap 2 so thuc c va d: ');
readln(c, d);
writeln('Tich cua c va d la: ', c * d:0:3);
end.
- Thành tiền: đơn giá* số lượng
- Giảm giá: nếu thành tiền > 100, thì giảm 3 % thành tiền, ngược lại không giảm
- Tổng tiền phải trả : thành tiền - giảm giá
Câu trả lời của bạn
uses crt;
var mh,sl,tt:longint;
begin
clrscr;
write('Nhap don gia cua mat hang:'); readln(mh);
write('Nhap so luong cua mat hang ',mh,':'); readln(sl);
tt:=sl*mh;
if tt>100 then writeln('So tien phai tra la: ',tt*97/100:4:2)
else writeln('So tien phai tra la: ',tt);
readln;
end.
- Từ 01 – 100KW: 5$
- Từ 101 – 150KW:7$
- Từ 151 – 200KW: 10$
- Từ 201 – 300KW :15$
- Từ 301KW trở lên : 20$
Câu trả lời của bạn
#include<stdio.h>
#include<conio.h>
#include<math.h>
//Khai bao hang so
#define MUC1 100
#define MUC2 150
#define MUC3 200
#define MUC4 300
//Ham main chính
void main()
{
//Khai bao
int dien;
int tien = 0;
//Nhap du lieu
printf("\nNhap muc tieu thu KW: ");
scanf("%d", &dien);
//Xu ly tinh toan
if (dien <= MUC1)
{
tien = dien * 5;
printf("Muc 1 (1-100KW) có so dien: %d => So tien la: %d", dien, tien);
}
else if (dien <= MUC2)
{
tien = (MUC1 * 5) + (dien - MUC1)* 7;
printf("Muc 2 (101-150KW) có so dien: %d => So tien la: %d", dien, tien);
}
else if (dien <= MUC3)
{
tien = (MUC1 * 5) + 50 * 7 + (dien - MUC2) * 10;
printf("Muc 3 (151-200KW) có so dien: %d => So tien la: %d", dien, tien);
}
else if (dien <= MUC4)
{
tien = (MUC1 * 5) + 50 * 7 + 50 * 10 + (dien - MUC3) * 15;
printf("Muc 4 (201-300KW) có so dien: %d => So tien la: %d", dien, tien);
}
else
{
tien = (MUC1 * 5) + 50 * 7 + + 50 * 10 + 100 * 15 + (dien - MUC4) * 20;
printf("Muc 5 (> 300KW) có so dien: %d => So tien la: %d", dien, tien);
}
getch();
}
Program hoc24;
var n: integer;
t: longint;
begin
write('Nhap so KW da su dung : '); readln(n);
if n=0 then write('So tien phai tra trong thang la :',0,'$') else
if n>0 then
begin
if n<=100 then t:=5*n else t:=100*5;
if (n>100) and (n<151) then t:=t+7*(n-100)
else if n>150 then t:=t+7*50;
if (n>150) and (n<201) then t:=t+10*(n-150)
else if n>200 then t:=t+10*50;
if (n>200) and (n<301) then t:=t+15*(n-200)
else if n>300 then t:=t+15*100;
if n>300 then t:=t+20*(n-300);
end else write('So KW da su dung nhap khong hop le');
write('So tien phai tra trong thang la : ',t,'$');
readln
end.
Câu trả lời của bạn
uses crt;
var a,dv,ch:integer;
begin
clrscr;
write('Nhap a='); readln(a);
dv:=a mod 10;
ch:=a div 10; ch:=ch mod 10;
writeln('Chu so hang don vi la: ',dv);
writeln('Chu so hang chuc la: ',ch);
readln;
end.
Câu trả lời của bạn
Var d,R:real;
Begin
Repeat
Write('Nhap d = ');readln(d);
Write('Nhap R = ');readln(R);
Until (d > 0) and (R > 0);
If d > R then write('Duong thang a va duong tron khong giao nhau');
If d = R then write('Duong thang a va duong tron tiep xuc nhau');
If d < R then write('Duong thang a va duong tron cat nhau');
Readln;
End.
a. Đếm các phần tử dương có mặt trong mảng
b. In ra màn hình các phần tử chẵn xuất hiện trong mảng
c. Tính trung bình cộng của các phần tử chẵn có mặt trong mảng
d. Nhập vào một số X,kiểm tra trong dayx xem có phần tử nào bằng X không? Nếu có thì chỉ ra vị trí của phần tử đó
e. Dãy đơn điệu là dãy các số nguyên giảm liên tiếp,kiểm tra xem dãy n số nguyên trong mảng có phải là dãy đơn điệu giảm hay không? Nếu không thì in ra màn hình hãy đơn điệu giảm dài nhất có mặt trong mảng
Câu trả lời của bạn
uses crt;
var a,b:array[1..100]of integer;
dem,i,n,t,dem1,x,kt,kt1,dn,vt:integer;
begin
clrscr;
write('Nhap n='); readln(n);
for i:=1 to n do
begin
write('A[',i,']='); readln(a[i]);
end;
dem:=0;
for i:=1 to n do
if a[i]>0 then inc(dem);
writeln('So phan tu duong trong mang la: ',dem);
writeln('Cac so chan co trong mang la: ');
t:=0;
dem1:=0;
for i:=1 to n do
if a[i] mod 2=0 then
begin
write(a[i]:4);
t:=t+a[i];
inc(dem);
end;
writeln;
writeln('Trung binh cong cac phan tu co mat trong mang la: ',t/dem:4:2);
write('Nhap x='); readln(x);
kt:=0;
for i:=1 to n do
if a[i]=x then
begin
kt:=kt+1;
b[kt]:=i;
end;
if kt=0 then writeln(x,' khong co trong day')
else begin
writeln('Vi tri cua ',x,' trong day la: ');
for i:=1 to kt do
write(b[i]:4);
end;
kt1:=0;
for i:=1 to n-1 do
if a[i+1]>a[i] then kt1:=1;
if kt1=0 then writeln('Day la day con don dieu giam')
else begin
dn:=0;
dem1:=1;
for i:=1 to n-1 do
if a[i+1]<a[i] then
begin
inc(dem1);
if i+1=n then
begin
if dn<dem1 then
begin
vt:=dn;
dn:=dem1;
end
else if dn=dem1 then
begin
dn:=dem1;
vt:=i+1;
end;
end;
end
else if a[i+1]>a[i] then
begin
if dn<dem1 then
begin
vt:=i;
dn:=dem1;
end
else if dn=dem1 then
begin
dn:=dem1;
vt:=i;
end;
end;
dem1:=1;
writeln('Day don dieu giam dai nhat trong mang la: ');
for i:=vt-dn+1 to vt do
write(a[i]:4);
end;
readln;
end.
a. Liệt kê các phần tử của mảng vừa nhập
b. Tính tổng tất cả các phần tử của mảng
c. Tìm phần tử lớn nhất trong mảng và cho biết phần tử đó ở vị trí nào trong mảng
d. In ra màn hình các cặp số có tổng bằng 5
e. In ra màn hình các số không phải là số nguyên tố
f. Dồn các phần tử trong mảng sao cho các phần tử âm viết trước,các phần tử dương viết sau và chúng đều viết giảm dần
Câu trả lời của bạn
a) {Liet ke phan tu}
program liet_ke;
uses crt;
var
i,n:longint;
a:array[1..10000] of longint;
begin
writeln('Nhap n = '); readln(n);
for i:=1 to n do
begin
writeln('Nhap so thu ',i); readln(a[i]);
end;
for i:=1 to n do
begin
writeln(a[i]);
end;
readln;
end.
b) {Tinh tong cac phan tu}
program tinh_tong;
uses crt;
var
i,n,S:longint;
a:array[1..10000] of longint;
begin
writeln('Nhap n = '); readln(n);
for i:=1 to n do
begin
writeln('Nhap so thu ',i); readln(a[i]);
end;
S:=0;
for i:=1 to n do
begin
S:=S+a[i];
end;
write('Vay tong cac phan tu la: ',S); readln;
end.
c) {Tim phan tu lon nhat}
program tim_phan_tu_lon_nhat;
uses crt;
var
i,n,max,vt:longint;
a:array[1..10000] of longint;
begin
writeln('Nhap n = '); readln(n);
for i:=1 to n do
begin
writeln('Nhap so thu ',i); readln(a[i]);
end;
max:=0;
for i:=1 to n do
begin
if (a[i]>max) then
begin
max:=a[i];
vt:=i;
end;
writeln('Vay phan tu lon nhat la: ',max);
write('Phan tu lon nhat o vi tri: ',vt);
readln;
end;
end.
e) {Cac so khong phai so nguyen to}
program so_khong_la_snt;
uses crt;
var
i,n,dem:longint;
a:array[1..10000] of longint;
begin
writeln('Nhap n = '); readln(n);
for i:=1 to n do
begin
writeln('Nhap so thu ',i); readln(a[i]);
end;
for i:=1 to n do
begin
dem:=0;
for j:=1 to a[i] do
begin
if (a[i] mod j = 0) then inc(dem);
end;
if (dem><2) then writeln(a[i]);
end;
readln;
end.
f, uses crt;
var a,vt,b,c:array[1..100]of integer;
tam,n,i,t,max,kt,dem,dem1,dem2,j:integer;
begin
clrscr;
write('Nhap n='); readln(n);
for i:=1 to n do
begin
write('A[',i,']='); readln(a[i]);
end;
writeln('Cac so ban vua nhap la: ');
for i:=1 to n do
write(a[i]:4);
writeln;
t:=0;
for i:=1 to n do
t:=t+a[i];
writeln('Tong cac phan tu cua mang la: ',t);
max:=a[1];
dem:=0;
for i:=1 to n do
if max<a[i] then max:=a[i];
for i:=1 to n do
if max=a[i] then
begin
inc(dem);
vt[dem]:=i;
end;
writeln('Phan tu lon nhat la: ',max);
writeln('Vi tri la: ');
for i:=1 to dem do
write(vt[i]:4);
writeln;
for i:=1 to n do
for j:=i to n do
if (i<>j) and (a[i]+a[j]=5) then writeln(a[i],' ',a[j]);
writeln('Cac so khong phai la so nguyen to la: ');
for i:=1 to n do
begin
kt:=0;
for j:=2 to a[i]-1 do
if a[i] mod j=0 then kt:=1;
if kt=1 then write(a[i]:4);
end;
dem1:=0;
dem2:=0;
for i:=1 to n do
begin
if a[i]<0 then
begin
inc(dem1);
b[dem1]:=a[i];
end;
if a[i]>0 then
begin
inc(dem2);
c[dem2]:=a[i];
end;
end;
for i:=1 to dem1-1 do
for j:=i+1 to dem1 do
if b[i]<b[j] then
begin
tam:=b[i];
b[i]:=b[j];
b[j]:=tam;
end;
for i:=1 to dem2-1 do
for j:=i+1 to dem2 do
if c[i]<c[j] then
begin
tam:=c[i];
c[i]:=c[j];
c[j]:=tam;
end;
for i:=1 to dem1 do
write(b[i]:4);
for j:=1 to dem2 do
write(c[j]:4);
readln;
end.
Câu trả lời của bạn
program hotrotinhoc;
const fi='dlvr.inp';
fo='dlvr.out';
var a,b: array[1..1000] of longint;
m,n,i,j,max : integer;
f: text;
function gcd(x,y: longint): integer;
var z: longint;
begin
while y<>0 do
begin
z:= x mod y;
x:=y;
y:=z;
end;
gcd:=x;
end;
procedure ip;
begin
assign(f,fi);
reset(f);
readln(f,n);
for i:=1 to n do
read(f,a[i]);
readln(f);
readln(f,m);
for j:=1 to m do
read(f,b[i]);
close(f);
end;
procedure out;
begin
assign(f,fo);
rewrite(f);
for i:=1 to n do
for j:=1 to m do
if gcd(a[i],b[j])>max then max:=gcd(a[i],b[j]);
write(f,max);
close(f);
end;
begin
ip;
out;
end.
Câu trả lời của bạn
bước 1: vào gmail
bước 2: ở bên trái của gmail, nhấn vào soạn thư
bước 3: khi đó sẽ có 1 cửa sổ mới xuất hiện, ở dưới cùng của ô cửa số , bạn nhấp vào ô đình kèm tệp
bước 4: chọn tệp bạn muốn gửi
bước 5: đợi một chút cho đến khi nó hoàn thành công cuộc tải lên(tùy vào độ lớn của tệp tin)
bước 6: nhấn gửi(lưu ý gửi là phải có người nhận)
Câu trả lời của bạn
Bước 1: Đặt lại tổng
a[1]=a[1];
a[2]=a[1]+a[2];
a[3]=a[1]+a[2]+a[3]
…
a[n]= a[1]+a[2]+ … + a[n]
Bước 2: Gọi S=a[n] ta duyệt từ đầu đến dãy nếu chỗ nào S chia hết cho a[i] thì tức là có thể phân dãy ra các đoạn bằng nhau có tổng là a[i] (thực chất a[1]+…+a[i]) ta kiểm tra xem có đúng như vậy không thông qua vòng lặp tạo ra dãy a[i], a[i]*2 … a[i]*k=S, nếu vượt quá số thứ tự thì dừng không thỏa mãn, nếu tìm được thì xuất a[i]
Bước 3: Nếu không có phần tử nào thỏa mãn thì xuất ra S là toàn dãy
Ví dụ:
Dãy a là: 3 2 5 7 1 4 6
Dãy b là: 4 1 0 2 0 1 0
a. Cho dãy a, hãy xây dựng chương trình tìm dãy b.
b. Cho dãy b, xây dựng chương trình tìm dãy a.
Dữ liệu vào: Trong file NGICH.INP với nội dung:
-Dòng đầu tiên là số n (1 <= n <= 10 000).
-Các dòng tiếp theo là n số của dãy a, mỗi số cách nhau một dấu cách,
-Các dòng tiếp theo là n số của dãy b, mỗi số cách nhau bởi một dấu cách.
Dữ liệu ra: Trong file NGHICH.OUT với nội dung:
-N số đầu tiên là kết quả của câu a
-Tiếp đó là một dòng trống và sau đó là n số kết quả của câu b (nếu tìm được dãy a).
Câu trả lời của bạn
Program day_nghich_the;
uses crt;
const fn = 'nghich.inp';
gn = 'nghich.out';
nmax=10000;
var f,g:text;
n,i,j,dem:0..nmax;
a,b,luu:array[1..nmax] of 0..nmax;
procedure nhap;
begin fillchar(a,sizeof(a),0);
b:=a;
assign(f,fn);
reset(f);
readln(f,n);
for i:=1 to n do read(f,a[i]);
write(f);
for i:=1 to n do read(f,b[i]);
close(f);
end;
procedure tim_b;
begin
fillchar(luu,sizeof(luu),0);
for i:=1 to n do
begin
dem:=0;
for j:=i -1 downto 1 do
if a[i]<a[j] then inc(dem);
luu[a[i]]:=dem;
end;
for i:=1 to n do write(g,luu[i]:2);
writeln(g); writeln(g);
end;
procedure tim_a;
begin
fillchar(luu,sizeof(luu),0);
for i:=1 to n do
if b[i]>n-i then exit else
begin
j:=0;
dem:=0;
repeat inc(dem);
if luu[dem]=0 then j:=j+1;
until j>b[i];
luu[dem]:=i;
end;
for i:=1 to n do
write(g,luu[i]:2);
end;
BEGIN
nhap;
assign(g,gn);
rewrite(g);
tim_b;
tim_a;
close(g);
END.
1. Điểm trung bình = tổng điểm các môn chia cho 13 , làm tròn đến chữ số thập phân thứ 2
2 . Xếp loại :
Giỏi nếu điểm tb >=8
Khá nếu điểm tb >= 6,5
Tb nếu 5<điểm tb <6,5 , trường hợp còn lại yếu kém
Câu trả lời của bạn
uses crt;
var toan,ly,hoa,anh,van,sinh,su,dia,gdcd,gdqp,cn,td,dtb:real;
begin
clrscr;
repeat
write('nhap diem toan hoc:'); readln(toan);
if (toan<0) or (toan>10) then writeln('nhap lai');
until (0<=toan) and (toan<=10);
repeat
write('nhap diem vat ly:'); readln(ly);
if (ly<0) or (ly>10) then writeln('nhap lai');
until (0<=ly) and (ly<=10);
repeat
write('nhap diem hoa hoc:'); readln(hoa);
if (hoa<0) or (hoa>10) then writeln('nhap lai');
until (0<=hoa) and (hoa<=10);
repeat
write('nhap diem tieng anh:'); readln(anh);
if (anh<0) or (anh>10) then writeln('nhap lai');
until (0<=anh) and (anh<=10);
repeat
write('nhap diem ngu van:'); readln(van);
if (van<0) or (van>10) then writeln('nhap lai');
until (0<=van) and (van<=10);
repeat
write('nhap diem sinh hoc:'); readln(sinh);
if (sinh<0) or (sinh>10) then writeln('nhap lai');
until (0<=sinh) and (sinh<=10);
repeat
write('nhap diem lich su:'); readln(su);
if (su<0) or (su>10) then writeln('nhap lai');
until (0<=su) and (su<=10);
repeat
write('nhap diem dia li:'); readln(dia);
if (dia<0) or (dia>10) then writeln('nhap lai');
until (0<=dia) and (dia<=10);
repeat
write('nhap diem giao duc cong dan:'); readln(gdcd);
if (gdcd<0) or (gdcd>10) then writeln('nhap lai');
until (0<=gdcd) and (gdcd<=10);
repeat
write('nhap diem giao duc quoc phong:'); readln(gdqp);
if (gdqp<0) or (gdqp>10) then writeln('nhap lai');
until (0<=gdqp) and (gdqp<=10);
repeat
write('nhap diem cong nghe:'); readln(cn);
if (cn<0) or (cn>10) then writeln('nhap lai');
until (0<=cn) and (cn<=10);
repeat
write('nhap diem the duc:'); readln(td);
if (td<0) or (td>10) then writeln('nhap lai');
until (0<=td) and (td<=10);
dtb:=(toan+ly+hoa+anh+van+sinh+su+dia+gdcd+gdqp+cn+td)/13;
writeln('diem trung binh la: ',dtb:4:2);
if dtb>=8 then writeln('gioi')
else if (dtb<8) and (dtb>=6.5) then writeln('kha')
else if (dtb>6.5) and (dtb<=5) then writeln('trung binh')
else writeln('yeu');
readln;
end.
Dữ liệu vào: từ file DAYSO.INP có dạng:
- Dòng đầu tiên là hai số N và k (N<=500000; k<=10000);
- Các dòng tiếp theo là N số nguyên của dãy (các số kiểu Longint), mỗi số trên một dòng.
Kết quả: ra file DAYSO.OUT gồm một dòng duy nhất chứa hai số m và s, trong đó m là độ dài lớn nhất tìm được và s là vị trí bắt đầu của dãy đó.
Câu trả lời của bạn
const fi = 'CHIAHETK.INP';
fo = 'CHIAHETK.OUT';
MAXN = 10000;
MAXW = 1000;
oo = MAXINT div 2;
var f: text; n: integer;
k: integer;
a: array[1..MAXN] of integer;
L: array[0..MAXN, 0..MAXW] of integer;
procedure Nhap;
var i: integer;
begin
assign(f, fi); reset(f);
readln(f, n, k);
for i:= 1 to n do
read(f, a[i]);
close(f);
end;
function max(a, b: integer): integer;
begin
if a > b then exit(a)
else exit(b);
end;
function dongduduong(s: integer): integer;
begin
s:= s mod k; // -(k-1)..0..k-1
if s >= 0 then exit(s)
else exit(s + k);
end;
procedure QHD;
var i, j: integer;
begin
// Goi L[i, v] la do dai cua day con dai nhat co tong chia k du v
for j:= 0 to k-1 do
if j = dongduduong(a[1]) then L[1, j]:= 1
else L[1, j]:= -oo;
for i:= 2 to n do
for j:= 0 to k-1 do
L[i, j]:= max(1 + L[i-1, dongduduong(j-a[i])], L[i-1, j]);
end;
procedure TruyVet(i, j: integer);
begin
if i = 0 then exit;
if L[i, j] = 1 + L[i-1, dongduduong(j-a[i])] then
// Chon do vat thu i
begin
TruyVet(i-1, dongduduong(j-a[i]));
write(f, a[i], ' ');
end
else
// Khong chon do vat thu i
TruyVet(i-1, j);
end;
procedure InKQ;
var i, j:integer;
begin
assign(f, fo); rewrite(f);
writeln(f, L[n, 0]);
TruyVet(n, 0);
close(f);
end;
BEGIN
Nhap;
QHD;
InKQ;
END.
Câu trả lời của bạn
Program hotrotinhoc;
var i1,i,n: longint;
function nt(x: longint): boolean;
var j: longint;
begin
nt:=true;
if (x=2) or (x=3) then exit;
nt:=false;
if (x=1) or (x mod 2=0) or (x mod 3=0) then exit;
j:=5;
while j<=trunc(sqrt(x)) do
begin
if (x mod j=0) or (x mod (j+2)=0) then exit;
j:=j+6;
end;
nt:=true;
end;
begin
readln(n);
if (n mod 2<>0) or (n<=2) then write('Khong the phan tich') else
begin
for i:=1 to n do
for i1:=i to n do
if (i+i1=n) and nt(i) and nt(i1) then writeln('N=',i,'+',i1);
end;
readln
end.
Câu trả lời của bạn
Không thể khẳng định chương trình đúng vì chương trình có thể vẫn còn chứa lỗi ngữ nghĩa.
0 Bình luận
Để lại bình luận
Địa chỉ email của hạn sẽ không được công bố. Các trường bắt buộc được đánh dấu *