PDA

View Full Version : Đề thi Kỹ Thuật Lập Trình.


bossnabito
03-08-2008, 01:07 PM
Đề thi Kỹ Thuật Lập Trình.
Thời gian 90 phút.



Bài 1: Cho biết kết quả in ra đoạn chương trình sau:

#include <stdio.h>
#include <conio.h>
main()
{ int=20 , b=6, s=0;
while (a>=b)
{ if(a%b==0)
S+=a;
a--;
b++
}
printf("a=%5d b=%5d S=%5d ",a,b,s);
}


Bài 2: Viết chương trình tính tổng S sau :
S= 3^3 + 6^3+.....+(3N)^3
với N số nguyên.


Bài 3: Cho mảng 1 chiều các số nguyên a gồm n phần tử ( 10<n<100). Hãy viết các hàm thực hiện yêu cầu sau:
a) Nhập vào n phần tử của mảng a
b) Xuất ra màn hình các phần tử số có giá trị là các số nguyên tố.
c) Cho một số nguyên X. Liệt kê các phần tử có giá trị hỏ hơn hoặc bằng X.


Bạn nào còn thì post lên nhá

ilove8x
03-08-2008, 09:01 PM
ai có bài giải??? post đi ngày mai có nhiều đồng chí thi lại môn nè

Lanh_Lung_Anh_88
04-08-2008, 11:22 AM
post len ma` hok co bai` lam` thi` post lam` gi` !nguoi ta thi lai moi can de nay chu thi dau thi dau co vao day ma xem de`.hieu chua.bem het gio!

NguyenPhiThanh
07-08-2008, 03:00 PM
Em dong y voi voi bac Lanh_Lung_Anh_88.Em ra truong da hon 2 nam roi nhung vi no mon nay nen van chua lay dc bang.Kho ghe

linhnguyenit
11-08-2008, 08:08 PM
Câu 1:
Theo như đoàn chương trình trên ta thấy bài toán cho khởi tạo giá trị của 3 số nguyên đó là biến a= 20, b=6 và tổng s = 0;
Ta xét thấy trong hàm có 1 vòng lặp while với điều kiện là a>=b( a lớn hơn hoặc bằng b) thì nó sẽ thực hiện các lệnh bên trong bản thân nó.

Trong hàm while ta chú ý đến 1 trường điều kiện đó là: Nếu a chia hết cho b ( If a%b==0) thì các lệnh sau được thực hiện:

if(a%b==0)
S+=a;
Có nghĩa là nếu a và b thỏa điều kiện trên s+=a; tương đương với s=s+a;
ví dụ : a lúc này = 20, b=6, và s=0; khi xét vòng lặp đầu tiên ta sẽ có:
Bước 1: while( a>=b) ~~> đúng ~~> thực hiện Bước 2
Bước 2: if ( a%b==0)~~> sai~~> thực hiện bước 4, bỏ qua bước 3
Bước 3: s=s+a;
Bước 4: a--; b++; tương đương với a giảm đi 1 giá trị là con 19, b tăng thêm 1 giá trị là 7, tổng s vẫn = 0; Trở lại bước 1

Cứ lặp đến khi nào. a<b thì thôi.
Ta sẽ đến khi a =12, và b =12 khi đó a có thể chia hết cho b và s+=a sẽ bằng 0=0+12.
Printf ra 3 giá trị, %d là kiểu giá trị được xuất ra màn hình cho kiểu dữ liệu là số nguyên integer.
a=11;
b=13;
s=12;

linhnguyenit
11-08-2008, 08:28 PM
Bài 2: Viết chương trình tính tổng S sau :
S= 3^3 + 6^3+.....+(3N)^3
với N số nguyên

Bài này anh sẽ gợ ý, em nào giải thi post lên cho bạn tham khảo. Nếu không được anh sẽ post bài giải lên.
Bài này người ta yêu cầu khi nhập vào 1 số nguyên VD là 3 đi, yêu cầu tính tổng theo công thức: S= 3^3 + 6^3+.....+(3N)^3
Tất cả các giá trị, đều là kiểu số nguyên.
Biến được nhập vào là N với giá trị bất kỳ, mặc định nhập vào.
Để nhập giá trị N ta dùng câu lệnh : scanf("%d", &n);
Để xuất giá trị ta dùng câu lệnh: printf("Giá trị của biến N là : %d",n);
Nếu có bạn nào chưa hiểu yêu cầu đề bài thì chúng ta xét yêu cầu trên :
S= 3^3 + 6^3+.....+(3N)^3
Ví dụ nhập N là 3 cho dễ tính. Ráp vào yêu cầu chúng ta có kết quả:
int S=0;
S=(3*1)^3 + (3*2)^3 +(3*3)^3=???
thế lám sao biến suy nghĩ của mình để máy tính hiểu?
ta sẽ lấy giá trị của biến N làm mốc, giống như là cái đích vậy. ở ví dụ này là : 3
các bạn để ý S=(3*1)^3 + (3*2)^3 +(3*3)^3 các giá trị này thay đổi theo một cơ số nhất định, nó tăng dần theo 1 đơn vị và tăng đến khi chạm mốc là 3 thì thôi, đó là gí trị của biến N các bạn nhập vào.
Để thực hiện thì các bạn fai làm sao? giải pháp đỡ rắc rối nhất là dùng vòng lặp, tốt nhất là for().
Exp:
for(int i=1; i<=n; i++)
{
s+=pow(3*i,3);
}
Anh bỏ C lâu rùi nên không nhớ rõ lắm hàm này những chắc đúng òi hà hà. Hàm này có nghĩa là :
ta khởi tạo 1 biến i gán cho nó giá trị =1, nó sẽ được hiểu như trong phép tính trên vì i lúc này bằng 1 <3 nên nó thực hiện dòng lệnh bên trong for
s+= (3*1)^3;
Tiếp tục đến khi nào, i >3 có nghĩa là i tăng lên giá trị là 4 thì sẽ tự động thoát khỏi vòng lặp for.
ý nghĩa
Hàm pow(giá tri, số mũ)
Đây chỉ là gợi ý, do anh ko có time nên chỉ viết vắn tắt, em bào làm test rùi thì cứ post lên nhé ^^

linhnguyenit
11-08-2008, 09:44 PM
Bài 3: Cho mảng 1 chiều các số nguyên a gồm n phần tử ( 10<n<100). Hãy viết các hàm thực hiện yêu cầu sau:
a) Nhập vào n phần tử của mảng a
b) Xuất ra màn hình các phần tử số có giá trị là các số nguyên tố.
c) Cho một số nguyên X. Liệt kê các phần tử có giá trị hỏ hơn hoặc bằng X.

Là bài về mảng 1 chiều.
Câu a: chắc các em đã biết làm. Làm 1 hàm nhập, 1 hàm xuất như thông thường các em được học.
Câu b: Anh chỉ gợi ý, các em làm 1 hàm kiểm tra số nguyên tố trả về kiểu int.Trong hàm SoNguyenTo em chạy 1 vòng for cho đến hết mảng

exp:
for(int i=0; i<=n;i++)
{if(KiemtraSNT(a[i])==1)print("%d", a[i]);
}
Số nguyên tố là gì? Số nguyên tố là số tự nhiên lớn hơn 1, chỉ chia hết cho 1 và chia hết cho chính nó. vi du: 2,3,5,7,11....
Exp: nhập 1 mảng gồm 5 phần tử:
a[0] =1
a[1]=9
a[2]=4
a[3]=6
a[4]=11

--> các số nguyên tố có trong mảng : 1,11
Thuật toán các em tự làm được chứ? chỗ nào không hỉu cứ hỏi nhá ^^
http://upload.wikimedia.org/wikipedia/vi/6/63/Animation_Sieb_des_Eratosthenes.gif

Câu c: Các em khai báo 1 biến X rồi nhập giá trị mặc định cho nó.
Sau đó chạy 1 vòng for kiểm tra với điều kiện theo đề bài ra.
Nếu a[i]<=x thì in ra màn hình :khi123: dễ wa phải ko ^^

Lanh_Lung_Anh_88
13-08-2008, 12:16 PM
cảm ơn bạn vì bài giải nha!nhưng đã thi song rồi.nếu mà viết sớm thì hay biết mấy.

linhnguyenit
13-08-2008, 12:37 PM
cảm ơn bạn vì bài giải nha!nhưng đã thi song rồi.nếu mà viết sớm thì hay biết mấy.
:khi26: hì tại mới vo 4rum ^^ thế có thi dc ko....:khi101:

bom_thu_19
05-09-2008, 11:59 PM
cái đề thi lập trình mới đây của khóa 7 bị lổi ấy nhưng nhà trường mình chấm điểm kì wa.

coolkid4689
01-05-2009, 08:33 PM
bài 1 theo hướng giải của linh nguyễn là đúng nhưng kết quả của mình ra là S=13, a =12 , b= 14.

caovantrinh
05-01-2010, 08:28 AM
bai 1 anh nham rui anh ah
em xin gop y lai
a=12
b=14
s=13