PDA

View Full Version : Tuyển tập đề thi + bài giải môn C của các trường



kitti
12-01-2011, 07:22 PM
Trường Công nghệ Thông tin Thành phố Hồ Chí Minh chi nhánh Hà Nội:

Câu 1:
giải và biện luận phương trình bậc 2 (tính cả trường hợp suy biến).

Bài giải:

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<math.h>

int gptb2(float a, float b, float c, float* x1, float* x2)
{
float del;
del = b*b - (4*a*c);
if(del < 0) return -1;
else
{
*x1 = (-b - sqrt(del))/ (2*a);
*x2 = (-b + sqrt(del))/ (2*a);
}
return 1;
}
int main()
{
clrscr();
float a, b, c, x1, x2;
printf("\nNhap a, b, c:");
scanf("%f%f%f", &a,&b,&c);
fflush(stdin);
if(a == 0)printf("X = %.2f", -c/b);
else
{
if(gptb2(a,b,c,&x1,&x2) == -1)
printf("\nphuong trinh vo nghiem");
else
{
printf("\nx1 = %.2f", x1);
printf("\nx2 = %.2f", x2);
}
}
getch();
return 0;
}


Câu 2:
viết chương trình cho phép nhập n từ bàn phím (nếu n <= 0 thì bắt nhập lại) . Tính tổng s = 1^2 + 2^2+.... + n^2.

Bài giải:

#include<stdio.h>
#include<conio.h>

int main()
{
clrscr();
int n;
long tong;
int i;
do
{
printf("\n Nhap n: ");
scanf("%d", &n);
}while(n <= 0);

tong = 0;
for(i = 1; i <= n; i++) tong += i*i;
printf("\n S = %ld", tong);
getch();
return 0;
}


Câu 3:
Nhập chuỗi s từ bàn phím. Kiểm tra tính đối xứng (nếu có đếm số ký tự giống nhau).

Bài giải:


#include<stdio.h>
#include<conio.h>
#include<string.h>

int main()
{
clrscr();
int i, j, dem = 0;
char s[100];
printf("\n Nhap chuoi: ");
gets(s);
for(i=0,j=strlen(s)-1; i<j; i++, j--)
{
if(s[i]!=s[j])
{
printf("\n khong doi xung");
getch();
return 0;
}
else
{
dem++;
}
}
printf("\n co doi xung");
printf("\n So chhu giong nhau trong chuoi: %d", dem);
getch();
return 0;
}


ĐỂ ĐẢM BẢO TẤT CẢ ĐỀ THI CỦA CÁC TRƯỜNG ĐỀU ĐƯỢC POST NÊN
KITTI HY VỌNG MỌI NGƯỜI CÙNG THAM GIA POST ĐỀ THI CỦA TRƯỜNG MÌNH(nếu có thể thì post luôn bài giải) để mọi người tham khảo
ĐỂ CHO CÁC BẠN CÓ THỂ THAM KHẢO MỘT CÁCH TỐT NHẤT KITTI XIN YÊU CÂU CÁC MEM POST ĐỀ THI HÃY GI RÕ TÊN TRƯỜNG CỦA MÌNH VÀ KHÔNG POST CÁC BÀI ĐÃ CÓ RỒI(tính theo từng trường)
MONG CAC MEM ỦNG HỘ
XIN CHÂN THÀNH CẢM ƠN

TẤT CẢ CÁC BÀI ĐỀU ĐƯỢC VIẾT LẠI THEO Ý HIỂU CỦA KITTI NÊN KHÔNG ĐÀM BẢO GIỐNG 100% SO VỚI ĐỀ THI

anonymous91
12-01-2011, 09:57 PM
Đây là bài mình thi hôm vừa rồi, hôm đấy thầy đã đến muộn đề lại còn khoai, lại chỉ đc làm trong 90 phút, rất chi là bức xúc nhóe.
up đề lên cho mọi người tham khảo, mọi người có thể ko cần làm theo queue cũng được
Hoan nghênh chủ thớt code bài này

Đề thi học kỳ môn:C programming Basic
Dành cho sinh viên chương trình Việt Nhật-CNTT-DHBKHN-thời gian 90 phút
Giảng viên:Mr Cao Tuấn Dũng ngày 8/12/2010
Sinh viên được sử dụng tài liệu, mọi kiến thức đã học, chép bài nhau thoải mái( ăn 0 ráng chịu)

Mô phỏng trò chơi " Luận võ"
Cuộc thi đấu luận võ giữa 2 môn phái được tiến hành theo thể thức đồng đội, 1 vs 1 và theo lượt.
Hai môn phái cử lần lượt từng võ sĩ tiến vào võ đài và thi đấu. thắng ở lại thi đấu tiếp, thua thì lượn,
người khác lên thay. Môn phái nào hết võ sĩ thi đấu trước sẽ thua cuộc. Viết chương trình mô phỏng
trò chơi với menu dòng lệnh thực hiện:
1. Đọc dữ liệu(4.5 point)
Thông tin của các võ sĩ được lưu trong 2 tập tin monphai1.txt va monphai2.txt. mỗi dòng là
thông tin của 1 người theo định dạng:
<biet_hieu> <mau> <tancong> <nhanhnhen> <phongthu>
biệt hiệu: kiểu xâu;
còn lại là số nguyên dương.
các thông tin này được đọc vào 2 hàng đợi thi đấu ứng với 2 môn phái. kết thúc quá trình đọc in ra
danh sách đấu thủ của 2 môn phái với đủ thông tin, có đánh thứ tự và căn lề theo cột
Yêu cầu: nếu có số liệu không hợp lệ chương trình báo lỗi, trở về manu
số lượng 2 bên không cân bằng, hiện thông báo, thóat chương trình
2. thi đấu(3 point)
các đấu thủ từ hàng đợi ra võ đài. Hai đối thủ thi đấu theo lượt đánh. Người có chỉ số nhanhnhen
cao hơn tấn công trước. mức độ tổn hại sẽ được trừ vào máu của đối thủ như sau:
Người tấn công.<tancong> - nguoi phong thu.<phongthu>
người phòng thủ nếu không bị hết máu sẽ tấn công lại cho đến khi 1 người bị loại. Người tấn công 1
lần duy nhất mà đối thủ bị down thì gọi là KNOCKOUT. người thắng sẽ tiếp tục thi đấu với chỉ số hiện tại.

In diễn biến trận đấu ra màn hình. ví dụ:

Tran 1:Monphai1-Nguoisat(4 thông số) vs Monphai2-tiachop(4 thông số)
nguoisat(mau) tan cong-tiachop(mau) mất ... máu
( nếu tia chớp bị loại thì thông báo KNOCKOUT, nếu không thì tiếp tục)
tiachop(mau)tan cong-nguoisat(mau) mất ... máu
...
Tran2:...
...
Kết quả:Môn phái 1 thua

3. Xếp hạng(2 point)
mỗi lần tấn công đối thủ mỗi võ sĩ đc 1 điểm, nếu ra đòn knockout thì đc 3 điểm.. In ra bảng xếp hạng tổng
hợp theo chiều giảm dần điểm số.

4. thóat chương trình

thanhlinh.vietnam
12-01-2011, 10:05 PM
Trường ĐH Bách Khoa Đà Nẵng:
1/Tính tổng S=1+2+3+….+n
2/Viết chương trình nhập vào một số nguyên N có dạng abc rồi xuất ra màn hình một số đảo ngược có dạng cba
3/Nhập vào một số nguyên N (có 3 chữ số) rồi tính tổng các số của số nguyên N.
VD:123 => 1+2+3=6
4/Liệt kê tất cả các số nguyên tố nhỏ hơn 1000
5/Nhập vào số nguyên N rồi xuất ra màn hình N số nguyên tố
6/Viết chương trình xuất ra màn hình dãy Fibonaci (1 1 2 3 5 8 13…)
7/Viết chương trình liệt kê tất cả các số N có 3 chữ số bằng tổng lập phương các chữ số của nó. VD: N=abc=a3+b3+c3
8/Nhập mảng 2 chiều có dạng A[n][n]
9/Viết hàm nhập mảng,xuất mảng,viết hàm in ra các phần tử là số chính phương
10/ Viết hàm nhập mảng,xuất mảng,viết hàm in ra các phần tử là số nguyên tố
11/Nhập mảng 2 chiều có dạng M*N (Hoặc N*N) rồi tính tổng các phần từ.

kitti
12-01-2011, 10:13 PM
Nếu có thể mong các bạn có thể post luôn bài giải nên.

Trường đại học Bách Khoa Đà Nẵng:

Bài 1: Tính tổng S=1+2+3+….+n


#include<stdio.h>
#include<conio.h>

int main()
{
clrscr();
int n;
long tong;
int i;
do
{
printf("\n Nhap n: ");
scanf("%d", &n);
}while(n <= 0);

tong = 0;
for(i = 1; i <= n; i++) tong += i;
printf("\n S = %ld", tong);
getch();
return 0;
}


Bài 2:Viết chương trình nhập vào một số nguyên N có dạng abc rồi xuất ra màn hình một số đảo ngược có dạng cba

Có thể dùng code này:


#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
int main ()
{
clrscr ();
char* p;
int i,n;
p = (char*)malloc(128);
printf("\n Nhap xau ki tu :");
gets (p);
n = strlen(p);
printf("\n xau dao: \n");
for( i = n-1; i>=0; i --)
putchar(p[i]);
printf("\n");
free(p);
getch ();
return 0;
}


Bài 4: Liệt kê tất cả các số nguyên tố nhỏ hơn 1000


#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<math.h>

int ktSNT (const int a)
{
int i = 0;
for(i = 2; i <= (int)sqrt(a); i++)
{
if( a % i == 0 || a < 2 && a != 2)
{
return 0;
}
}
return 1;
}
int main ()
{
int N= 1000,i, k = 0;
int* snt = 0;

snt = (int*)malloc(N*sizeof(int));
k = 0;
for(i = 2; i <= N; i++)
{
if(ktSNT(i) == 1)
{
snt[k] = i;
k++;
}
}

printf("\n Bang cac so nguyen to\n");
for (i = 0; i < k; i++)
{
printf("%9d", snt[i]);
}
free(snt);
getch();
return 0;
}


Bài 5: Nhập vào số nguyên N rồi xuất ra màn hình N số nguyên tố


#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<math.h>

int ktSNT (const int a)
{
int i = 0;
for(i = 2; i <= (int)sqrt(a); i++)
{
if( a % i == 0 || a < 2 && a != 2)
{
return 0;
}
}
return 1;
}
int main ()
{
int N,i, k = 0;
int* snt = 0;
printf("\n Nhap vao N:");
scanf("%d", &N);

snt = (int*)malloc(N*sizeof(int));
k = 0;
i = 2;
while(k < N)
{
i++;
if(ktSNT(i) == 1)
{
snt[k] = i;
k++;
}
}

printf("\n Bang cac so nguyen to\n");
for (i = 0; i < k; i++)
{
printf("%5d", snt[i]);
}
free(snt);
getch();
return 0;
}

Bài 11: Nhập mảng 2 chiều có dạng M*N (Hoặc N*N) rồi tính tổng các phần từ.

#include <stdio.h>
#include<conio.h>

int dong, cot;
long SUM = 0;
int A[100][100];
void NHAPMANG(int A[][100]);
void INMANG(int A[][100]);

int main()
{



NHAPMANG(A);
INMANG(A);
getch();
return 0;
}
void INMANG(int A[][100])
{
for(int i=0;i<dong;i++)
{
for(int j=0;j<cot;j++)
{
printf(" %d ",A[i][j]);

}
printf("\n");
}
printf("Tong = %ld",SUM);

}
void NHAPMANG(int A[][100])
{
do{
printf("Nhap vao so dong cua ma tran: ");scanf("%d",&dong);
printf("\nNhap vao so cot cua ma tran: ");scanf("%d", &cot);
}while(dong < 2 || cot < 2 || dong > 100 || cot >100);
for(int i=0;i<dong;i++)
{
for(int j=0;j<cot;j++)
{
printf("\nNhap vao phan tu A[%d][%d]: ",i,j);
scanf("%d",&A[i][j]);
SUM += A[i][j];
}

}


}

birthis
12-01-2011, 11:45 PM
Vì trường học môn này thay cho C.

Đề thi Tin Dai cuong 2010 Đại học Bách Khoa Hà Nội

PHẦN I: CÂU HỎI TRẮC NGHIỆM (Trả lời phần trắc nghiệm này vào bảng trên trang 3)

Câu 1: Chọn khai báo không đúng:
[a] int TienGui(int, int);
[b] float TienGui(SoTien, LaiSuat);
[c] void TienGui( int );
[d] void TienGui(int SoTien, float LaiSuat);

Câu 2: Khi dùng hàm fopen thì kiểu nào sau đây làm đối số của hàm này, dùng để
mở một tệp để ghi bổ sung theo kiểu văn bản, nếu tệp chưa tồn tại thì tạo tệp mới ?
[a] “at” [c] “w+t”
[b] “wt” [d] “ab”

Câu 3: Cho đoạn chương trình sau, tìm giá trị của sum:
for (int i = 0; i+1 <= 10 ; i +=2)
if ( i = = 0)
sum = i;
else
sum += i;
[a] Các phương án đều sai [c] 20
[b] 12 [d] 30

Câu 4: Chọn các thành phần không thuộc về CPU:
[a] RAM [c] Bus bên trong
[b] Thanh ghi [d] Control Unit

Câu 5: Cho khai báo sau:
int B[4] = {1, 2, 3, 4 };
Cho biết giá trị của B[4] là:
[a] 4 [c] Không xác định
[b] 2 [d] 3

Câu 6: Trong Windows Explorer, để chọn tất cả các tệp và thư mục con
trong thư mục đang xét, dùng tổ hợp phím
[a] Ctrl + C [c] Ctrl + V
[b] Ctrl + X [d] Ctrl + A

Câu 7: Khi x = 10 và y = 11 thì đoạn chương trình:
printf("\n%d",x-- * ++y);
printf("\n%d",x-- - --y);
printf("\n%d",x++ + ++y);
sẽ cho kết quả:
[a] 110 [c] 120
-3 -2
20 21
[b] 110 [d] 120
-3 -2
21 20

Câu 8: Chọn cách khai báo đúng tệp tiêu đề trong lập trình C?
[a] # include <tên_tệp_tiêu_đề>
[b] include <tên_tệp_tiêu_đề>
[c] # include tên_tệp_tiêu_đề
[d] # include <tên_tệp_tiêu_đề>;

Câu 9: Điền vào chỗ trống để hoàn thiện chương trình sau:
#include<stdio.h>
#include<conio.h>
void main(){
............// chỗ cần điền
f = fopen("solieu.txt","wt");
fprintf(f, "%2d\n%2d",11,09);
fclose(f);
}
[a] FILE *f;
[b] clrscr();
[c] FILEOFTEXT *f;
[d] printf("Bat dau chuong trinh\n");

Câu 10: Tìm kí hiệu ghi chú thích trong C?
[a] (* dòng chú thích *)
[b] // dòng chú thích
[c] { dòng chú thích }
[d] <-- dòng chú thích -->

Câu 11: Trong những định danh sau đây, đâu là định danh hợp lệ?
[a] char [c] int
[b] 2First [d] int2

Câu 12: Cho khai báo
struct quoc_gia
{ char ten[31];
char thu_do[31];
int dan_so;
}dsqg[10];
Mảng dsqg chiếm số byte trong bộ nhớ là:
[a] 440 [c] 640
[b] 460 [d] 660

Câu 13: Chọn chức năng chính của RAM (Random Access Memory)
[a] Lưu trữ dữ liệu lâu dài
[b] Lưu trữ dữ liệu và chương trình đang thực hiện
[c] Lưu trữ các chương trình dùng để khởi động máy tính
[d] Tất cả các chức năng nói trên




Câu 14: Cho biết kết quả của đoạn chương trình sau:
char c='A';
while (c <= 'Z') {
if ( c == 'A' ) continue;
printf("%c", c);
c+=1;
}
[a] Chương trình bị lặp vô hạn
[b] Các phương án đều sai
[c] In ra màn hình từ B đến Z
[d] In ra màn hình từ A đến Z
Câu 15: Chọn ra số nhỏ nhất trong các số sau đây:
[a] 20110 [c] 110010002
[b] 8C16 [d] 678

Câu 16: Lựa chọn nào dưới đây chỉ ra thứ tự tăng của miền giá trị các kiểu dữ liệu?
[a] int, float, double, long
[b] int, long, float, double
[c] int, float, long, double
[d] int, long, double, float

Câu 17: Cho:
int a,b;
Chỉ ra biểu thức không hợp lệ:
[a] a -= b [c] a = = b
[b] a - b = 0 [d] a = b

Câu 18: Lệnh printf("%c %c",65,66) sẽ in ra:
[a] 65 66 [c] a b
[b] 065 066 [d] A B


Câu 19: Chỉ ra biểu thức kiểm tra ch là ‘a’ hoặc ‘b’:
[a] ch = = ‘a’||’b’
[b] (ch = = ‘a’)||(ch = = ‘b’)
[c] ch = = ‘a’|’b’
[d] (ch = = ‘a’)|(ch = =’b’)




Câu 20: Số thập phân 10.75 được biểu diễn bởi số nhị phân nào dưới đây:
[a] 1010.001 [c] 10.001
[b] 10.010 [d] 1010.110



Câu 21: Cho đoạn mã sau:
int a,b;
a = 112;
b = 211;
printf("\n%d",a>b?a:b);
Kết quả thu được là:
[a] 112 [c] 211
[b] Báo lỗi [d] a>b?a:b

Câu 22: Một bộ xử lý có đường bus địa chỉ là 32 bit thì dung lượng bộ nhớ
tối đa của bộ nhớ chính là bao nhiêu, biết rằng mỗi ngăn nhớ có kích thước là 1 byte.
[a] 16 GB [c] 8 GB
[b] 32 GB [d] 4 GB

Câu 23: Tìm kết quả đúng của chương trình
#include <stdio.h>
#include <conio.h>
void main()
{ int a, b = 0;
clrscr();
for(a = 1; a < 10; a++)
{ if(a%2 == 0)
continue;
b = b + a;
printf("%5d",b);
}
getch();
}
[a] 1 4 9 16 25
[b] 2 6 10 16 24
[c] 1 4 10 16 24
[d] 1 6 10 16 25

Câu 24: Trong các biểu thức so sánh ký tự dưới đây, biểu thức nào đúng,
biết bảng mã được sử dụng là bảng mã ASCII
[a] ‘b’ < ‘Z’ [c] ‘9’ > ‘A’
[b] ‘a’ > ‘A’ [d] ’4’ > ’5’

Câu 25: Mảng a có kiểu float. Phát biểu nào sau đây đúng nhất?
[a] a tương đương với &a[0]
[b] a + i tương đương với &a[i]
[c] *(a + i) tương đương với a[i]
[d] Cả a, b, c đều đúng




PHẦN BÀI LÀM CỦA SINH VIÊN
PHẦN I: TRẢ LỜI TRẮC NGHIỆM
Sinh viên trả lời 25 câu trắc nghiệm trên bằng cách đánh dấu nhân (X)
vào ô tương ứng với lựa chọn trong bảng sau: (Lưu ý: chỉ có một phương án
chọn là đúng cho mỗi câu trắc nghiệm)


Câu [a] [b] [c] [d] Câu [a] [b] [c] [d]
1 14
2 15
3 16
4 17
5 18
6 19
7 20
8 21
9 22
10 23
11 24
12 25
13


PHẦN II: TỰ LUẬN
Thông tin về một cán bộ gồm: họ tên (không quá 25 ký tự), lương (là số thực).
Viết một chương trình nhập vào thông tin của một phòng gồm 15 cán bộ, sau đó
tìm và hiển thị ra màn hình họ tên những cán bộ có lương thấp nhất phòng, mỗi họ tên trên 1 dòng.
Gợi ý: khai báo cấu trúc và dùng mảng cấu trúc.

Sinh viên viết phần tự luận (lập trình) ở đây cho đến hết trang thứ 4.

free_wind89
13-01-2011, 12:00 AM
Đề thi môn ECE 190 - Introduction to Computing System của trường Đại học Bách Khoa TPHCM (chương trình đào tạo tiên tiến)

http://i406.photobucket.com/albums/pp147/vtrson/hcmut-final-09_Page_1-1.png

http://i406.photobucket.com/albums/pp147/vtrson/hcmut-final-09_Page_2-1.png

http://i406.photobucket.com/albums/pp147/vtrson/hcmut-final-09_Page_3-1.png

http://i406.photobucket.com/albums/pp147/vtrson/hcmut-final-09_Page_4-1.png

http://i406.photobucket.com/albums/pp147/vtrson/hcmut-final-09_Page_5.png

http://i406.photobucket.com/albums/pp147/vtrson/hcmut-final-09_Page_6.png

http://i406.photobucket.com/albums/pp147/vtrson/hcmut-final-09_Page_7-1.png

http://i406.photobucket.com/albums/pp147/vtrson/hcmut-final-09_Page_8-1.png

http://i406.photobucket.com/albums/pp147/vtrson/hcmut-final-09_Page_9-1.png

xuyenit55
13-01-2011, 12:25 AM
bài 9: nhập mảng 2 chiều rồi in ra các số chính phương


#include<iostream>
#include<math.h>
using namespace std;
//-----------------------------------------------------------------------------------------------
// ham nhap mang
//----------------------------------------------------------------------------------------------
void input_arg( int a[][20], int n , int m){

for ( int i = 0 ; i < n ; i++ )
for ( int j = 0 ; j < m ; j++ ){
cout<< " a [ " << i << " ] [ " << j << " ] = " ;
cin>>a[i][j];
}
}

//-----------------------------------------------------------------------------------
// ham kiem tra so chinh phuong
//------------------------------------------------------------------------------------
int kiemtra( int x ){
if ( x==1) return 0;
if ( sqrt (x) ==int(sqrt(x))) return 1;
return 0;
}
//---------------------------------------------------------------------------------------
// ham main
//---------------------------------------------------------------------------------------
int main(){

int a[20][20], n ,m;
cout<<" nhap so hang n = ";
cin>>n;
cout<<" nhap so cot m = ";
cin>>m;
input_arg(a,n,m);
cout<<" cac so chinh phuong cua mang la : \n";
for ( int i = 0 ; i < n ; i++)
for ( int j = 0 ; j < m ; j++){

if ( kiemtra( a[i][j]) == 1){
cout << a [i][j] << " " ;
}

}
system ("pause");
return 0;

}

gatrongpro
13-01-2011, 01:14 AM
Đại Học Đà Lạt
thi giấy
Phần 1.Máng Chiều
1.Nhập ,Xuất của mảng 1 chiều
2.Trả về chỉ số đầu tiên đạt max(a0,..,an-1)
3.Tổng các số nguyên tố trong dãy
4. Sap_0_Am_Duong:
- Các số 0 đầu mảng
- Các số âm ở giữa mảng và có thứ tự giảm.
- Các số dương cuối mảng và có thứ tự tăng.
Phần 2.
Cho một ma trận vuông cấp n,các phần tử của ma trận là số nguyên
5.Tích các số nguyên tố thuộc đường chéo phụ.;
6.Tổng các số nguyên nằm phía trên đường chéo phụ


C++ đó ):)T):)T):)T

khoaimon
13-01-2011, 09:20 AM
Đề thi C: FPT_APTECH (FAT1_Hà Nội).

Yêu cầu chung: Xây dựng trò chơi xếp gạch.
Mô tả yêu cầu: Chương trình gồm có các chức năng chính sau:
1. Chơi mới.
2. Cấu hình.
3. Kỷ lục.

Chi tiết: Tetris (tiếng Nga) là một trò chơi điện tử đầu tiên được thiết kế và phát triển bởi Alexey Pajitnov. Nó được tạo ra vào ngày 6 tháng 6 năm 1984, trong lúc ông đang làm việc tại Trung tâm Tính toán Dorodnicyn của Viện hàn lầm khoa học Liên Xô tại Moskva. Ông lấy tên của trò chơi từ tiền tố "tetra- của tiêng Hy Lạp, có nghĩa là "bốn" (mỗi bộ phần trong trò chơi gọi là Tetromino, có bốn phần) và quần vợt (tennis), trò chơi thể thao Pạitnov thích nhất.

Luật chơi: <tham khảo>

Gợi ý cách hoạt động của chương trình như sau:


xem ảnh

mức 1: thiết kế được giao diện hợp lý. Thiết kế các hàm chức năng hợp lý. Thiết kế struct hợp lý. Thực hiện được cơ bản các chức năng.
mức 2: thực hiện đầy đủ các chức năng của chương trình. Có thuật toán tìm điểm và điểm thưởng.
mức 3: thiết kế giao diện đẹp, hợp lý. Game play sáng tạo. Các chức năng hoạt động tốt không lỗi.

Hết.
Chú ý: Bạn nào bài giống nhau mang tiền qua phòng giáo vụ thi lại.

kitti
13-01-2011, 05:57 PM
Kitti có một số yêu cầu mong các bạn để ý:
Thứ1: post đề thi nên viết rõ tên trường và kèm theo bài giải nếu có thể.
Thứ 2: kitti mở topic này để mọi người có thể biết đề thi và bài giải của đề thi, không phải hướng dẫn cách làm + đánh giá bài giải (để khi có ai đó cần vào thì sẽ thấy ngay trường của mình và bài giải không phải tìm lâu vì số lượng các bài không đúng trọng tâm nhiều.
Kitti cũng nhận thấy khả năng viết code của mình còn yếu(tất nhiên không thể tối ưu được) rất cảm ơn nhận xét của anh mp. nhưng nếu như anh có các code khác tối ưu hơn thì hy vọng anh hãy post code nên (nhớ kèm theo đề bài và tên trường) như của em và một số bạn đã post.
tất cả các bài không phải đề thi hoặc bài giải hay các bài là đề thi và bài giải nhưng không ghi rõ tên trường kitti xin nhờ admin và các mode xóa giúp.
Các đề thi của các bạn đã post kitti sẽ cố gắng hoàn thành và post nên cho anh em( vì dạo này kitti cũng hơi bận nên không thể nhanh mà số bài nhiều hy vọng tất cả thành viên cùng kitti hoàn thành cho bài giải được hoàn thành nhanh nhất và tốt nhất)
em xin chân thành cảm ơn!
nếu có gì không phải mong anh em bỏ qua!

messi2010
13-01-2011, 06:15 PM
__________________________________________________ ___________
đây là đề thi tin học đại cương HV CN Bưu Chính Viễn Thông
(cơ sở 2)

Đề bài
(90')
Bài 1;
T=(-1)^0*1+(-1)^1*2+(-1)^2*3+....+(-1)^(n-1)*n
Với n dương nhập từ bàn phím, hãy tính tổng trên;
với điều kiện dùng hàm int mt(int a) dùng để tính (-1)^(n-1);
Bài 2;
Nhập một mảng 10 số nguyên trong đó có ít nhất 2 số nhỏ hơn không;
Tính tổng tất cả các số dương nằm giữa 2 số âm đầu tiên và cuối cùng;
Nếu 2 số âm kề nhau thì trả về tổng bằng 0;

xuyenit55
13-01-2011, 07:38 PM
Bài 1: sử dụng khuôn hình hàm tìm giá trị lớn nhất của 1 mảng;
Bài 2: nhập dữ liệu và các phương thúc của số phức , nhap , in, tính modull và sử dụng toán tử operator < để so sánh số phức;
ham main; nhập 1 dãy số phức sau đó in ra số phức nhỏ nhất

code của bài 1


#include<iostream>
using namespace std;
// ----------------------------------------------------------------------------------------
// xay dung khuon hinh ham tim gia tri lon nhat cau mang
//-----------------------------------------------------------------------------------------
template <typename T > T GTLN( T a[], int n){

int imax =0 ; // gan vi tri imax = 0;
for ( int i = 0 ; i < n ; i++){
if ( a[imax] < a [i] ){
imax = i;
}
}
return a[imax];
}
// ---------------------------------------------------------------------------------------
// xay dung ham main
//------------------------------------------------------------------------------------

int main(){

int n, i;
cout<<" nhap so luong cua phan tu cua mang n = ";
cin>>n;
int *a = new int [n]; // cap phat dong mang a
// nhap mang a
for ( i = 0 ; i < n ; i++){

cout<< " a [ " << i << " ] = ";
cin>>a[i];
}
// xuat mang a

cout<<"\n Mang vua nhap la : \n";
for ( i = 0 ; i < n ; i++){

cout<< a[i] << " " ;
}
cout<<" \ngia tri lon nhat cua mang a la : " << GTLN( a,n) << endl;
// giai phong mang a
delete []a;
system (" pause");
return 0;
}


code bài 2


#include<iostream>
#include<math.h>
using namespace std;
//-----------------------------------------------------------------------------------
// xay dung lop so phuc
//-------------------------------------------------------------------------------------
class sophuc {

private :
int thuc;
int ao;
public :
sophuc(){
thuc = ao =0;
}
void input();
void output();
// tinh modull cua so phuc
float modull(){

return sqrt( pow ( thuc, 2) + pow (ao, 2));
}
// toan tu so sanh
int operator < ( sophuc );
};
//-----------------------------------------------------------------------------------
// ham nhap
//--------------------------------------------------------------------------------------
void sophuc::input(){

cout<< " nhap phan thuc = " ;
cin>>thuc;
cout<<" nhap phan ao = ";
cin>>ao;
}
//---------------------------------------------------------------------------------------
// ham in so phuc
//-------------------------------------------------------------------------------------
void sophuc::output(){

if ( ao < 0 ) cout<< thuc << " - " << ao << " i " << endl;
else cout<< thuc << " + " << ao << " i " << endl;

}
//--------------------------------------------------------------------------------------
// ham so sanh toan tu operator
//----------------------------------------------------------------------------------
int sophuc::operator <( sophuc x){
return ( modull() < x.modull() );




}
//-------------------------------------------------------------------------------------------
// ham main
//------------------------------------------------------------------------------------------
int main(){

int i,n, imin=0;
sophuc *a= new sophuc [n];
cout<<" nhap so phan tu cua mang n = ";
cin>>n;
// nhap mang so phuc
for ( i = 0 ; i < n ; i++ ){
cout<<" nhap so phuc thu " << i +1 << endl;
a[i].input();

} // ham so sanh
for ( i = 0 ; i < n ; i++ ){
if ( a[i] < a[imin]){
imin= i;
}
}
cout<<" so phuc nho nhat cua mang la : " ;
a[imin].output();
system ("pause");
return 0;
}

heroworld
13-01-2011, 08:05 PM
Đại học Bách Khoa Đà Nẵng
câu 7: Viết chương trình liệt kê tất cả các số N có 3 chữ số bằng tổng lập phương các chữ số của nó. VD: N=abc=a3+b3+c3


#include<stdio.h>
#include<conio.h>

int main()
{
clrscr();
int a, b, c, t, i,j = 0;
int d[5];
for(i = 100; i < 999; i++)
{
a = i/100;
b = (i - a*100)/10;
c = (i - a*100 - b*10);
if(a*a*a + b*b*b + c*c*c == i)
{
d[j] = i;
j++;
}
}
printf("\nBang Cac So ");
for(i = 0; i < j; i++) printf("\n %d", d[i]);
getch();
return 0;
}

thanhlinh.vietnam
13-01-2011, 09:04 PM
Mình có file pdf chứa đề thi của đh bách khoa đà nẵng nhưng nhiều quá nên mình cũng ngại chép ra, bạn nào biết cách coppy từ file pdf chỉ mình với để mình share đề cho anh em ^^! (nếu ko dc thì mình up lun file đó lên cho anh em lun :) )

kitti
13-01-2011, 09:37 PM
Đại Học Đà Lạt
Bai 4:
- Các số 0 đầu mảng
- Các số âm ở giữa mảng và có thứ tự giảm.
- Các số dương cuối mảng và có thứ tự tăng.:

#include <stdio.h>
#include <conio.h>
#include <math.h>

void main()
{
int a[100], b[100];
int i , n, j, c1, c2;
int temp;

printf("Nhap so phan tu n=");
scanf("%d",&n);

c1 = 0; c2 = 0;
for (i=0; i < n; i++)
{
printf("\nNhap A[%d]: ", i);
scanf("%d", &temp);
if(temp > 0)
{
b[c2] = temp;
c2++;
}
else
{
a[c1] = temp;
c1++;
}
}

for (i = 0; i < c2 - 1; i++)
for (j = i + 1; j < c2; j++)
{
if(b[i] > b[j])
{
temp = b[i];
b[i] = b[j];
b[j] = temp;
}
}

for (i = 0; i < c1 - 1; i++)
for (j = i + 1; j < c1; j++)
{
if(a[i] < a[j])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}

for (j=0; j < c1; j++)
{
printf("\n %d ", a[j]);
}

for (j=0; j < c2; j++)
{
printf("\n %d ", b[j]);
}

getch();
clrscr();
}

zero22hero
14-01-2011, 08:10 AM
Mình có file pdf chứa đề thi của đh bách khoa đà nẵng nhưng nhiều quá nên mình cũng ngại chép ra, bạn nào biết cách coppy từ file pdf chỉ mình với để mình share đề cho anh em ^^! (nếu ko dc thì mình up lun file đó lên cho anh em lun :) )

trong acrobat reader có công cụ Text tool đó bạn

http://www.doe.in.gov/htmls/graphics/textselect.gif

chọn rồi quét hết text. Ctrl+C --> Ctrl+V

hoặc dùng pdf2word chuyển đổi sang word rồi copy, là IT mấy cái vụ nhỏ nhặt này phải biết chớ

kingofstars001
14-01-2011, 08:42 AM
Mình có file pdf chứa đề thi của đh bách khoa đà nẵng nhưng nhiều quá nên mình cũng ngại chép ra, bạn nào biết cách coppy từ file pdf chỉ mình với để mình share đề cho anh em ^^! (nếu ko dc thì mình up lun file đó lên cho anh em lun :) )

Bạn có thể dùng các công cụ online mà miễn phí trên mạng như 2 trang sau:

http://www.pdfonline.com/index.htm
http://www.freepdfconvert.com/

birthis
14-01-2011, 12:01 PM
Đây là bài mình thi hôm vừa rồi, hôm đấy thầy đã đến muộn đề lại còn khoai, lại chỉ đc làm trong 90 phút, rất chi là bức xúc nhóe.


Đề thi học kỳ môn:C programming Basic
Dành cho sinh viên chương trình Việt Nhật-CNTT-DHBKHN-thời gian 90 phút
Giảng viên:Mr Cao Tuấn Dũng ngày 8/12/2010
Mô phỏng trò chơi " Luận võ"

Đúng là bức xúc thật, đề này mà bảo làm trong 90 thì chỉ có mà nhe răng.
Đây là đáp án của birthis đề này
Mở bằng VS nhé. Vì viết có sử dụng Unicode trong này, dùng DEVCPP nó không hiện được.

kitti
14-01-2011, 10:04 PM
Đề thi Tin Dai cuong 2010 Đại học Bách Khoa Hà Nội
Tự Luận:
Thông tin về một cán bộ gồm: họ tên (không quá 25 ký tự), lương (là số thực).
Viết một chương trình nhập vào thông tin của một phòng gồm 15 cán bộ, sau đó
tìm và hiển thị ra màn hình họ tên những cán bộ có lương thấp nhất phòng, mỗi họ tên trên 1 dòng.
Gợi ý: khai báo cấu trúc và dùng mảng cấu trúc.

Bài Giải:


#include<stdio.h>
#include<conio.h>
#include<string.h>

typedef struct CanBo
{
char HoTen[26];
float luong;
}tt;
void nhap(tt ds[])
{
char hoten[26];
float t;
int i = 0;
do
{
printf("\nCan bo thu %d",i + 1);
printf("\nNhap ho ten: ");
gets(ds[i].HoTen);
fflush(stdin);
printf("\n Nhap Luong: ");scanf("%f",&t);
ds[i].luong = t;
fflush(stdin);
i++;
}while(i < 15);
}

void xuat(tt ds[])
{
printf("\n Danh sach Can Bo ");
for(int i = 0; i < 15; i++)
printf("\n%30s%9.2f ",ds[i].HoTen,ds[i].luong);
}

void sxep(tt ds[])
{
tt tg;
for(int i = 0; i < 15 - 1; i++)
for(int j= i+1; j < 15; j++)
if(ds[i].luong > ds[j].luong)
{
tg=ds[i];
ds[i]=ds[j];
ds[j]=tg;
}
}

int main()
{
clrscr();
tt ds[15];
nhap(ds);
sxep(ds);
xuat(ds);
getch();
return 0;
}


không bài giải không biết có chính xác 100% theo yêu cầu hay không nữa!

birthis
15-01-2011, 09:15 AM
@kitti: Cảm ơn tinh thần chia sẻ và sự nhiệt tình của bạn. Và đây là 1 số góp ý của mình:
- Trường Công nghệ Thông tin Thành phố Hồ Chí Minh chi nhánh Hà Nội:
+ Câu 2: Viết chương trình cho phép nhập n từ bàn phím (nếu n <= 0 thì bắt nhập lại) . Tính tổng s = 1^2 + 2^2+.... + n^2.
Bài làm lạc đề.

for(i = 1; i <= n; i++) tong += i*i;
- Trường đại học Bách Khoa Đà Nẵng:
+ Bài 2:Viết chương trình nhập vào một số nguyên N có dạng abc rồi xuất ra màn hình một số đảo ngược có dạng cba
Hàm này bị lỗi:

printf("\n xau dao: %s \n");
+ Bài 4: Liệt kê tất cả các số nguyên tố nhỏ hơn 1000
và Bài 5: Nhập vào số nguyên N rồi xuất ra màn hình N số nguyên tố
Hàm kiểm tra số nguyên tố chưa chính xác. Bạn nên lọc các số âm, số 0, số 1 trong hàm này.
+ Bài 11: Nhập mảng 2 chiều có dạng M*N (Hoặc N*N) rồi tính tổng các phần từ.

do{
printf("Nhap vao so dong cua ma tran: ");scanf("%d",&dong);
printf("\nNhap vao so cot cua ma tran: ");scanf("%d", &cot);
}while(dong < 2 || cot < 2 && dong > 100 || cot >100);
Kết quả: dòng = 3, cot = -1. Được chấp nhận. Đây chắc không phải là ý muốn của bạn. Nếu không nắm chắc thứ tự ưu tiên các toán tử nên đặt dấu ngoặc đơn. Mà tốt nhất là nên đặt dấu ngoặc đơn, để người khác còn hiểu.
- Đề thi Tin Dai cuong 2010 Đại học Bách Khoa Hà Nội
Tự Luận:
Không quá 25 ký tự thì phải khai báo mảng họ tên 26 ký tự (1 for NULL).

thanhphongcttv
15-01-2011, 06:33 PM
Bài đó là đề thi đó bạn ơi. Bài này là đề thi của pfiev dhbk.
Tức là đề yêu cầu viết chương trình làm trơn một mảng nhập tùy ý n lần theo công thức ở trên với A,B,C là những số nhập tùy ý.



#include <conio.h>
#include<stdio.h>
#include<malloc.h>

int main()
{
/*
const float A=2.0;
const float B=1.0;
const float C=3.0;
*/
float A,B,C;
A=B=C=1.00;

float* mang;
int n;
printf("\nNhap vao so luong phan tu: ");
scanf("%d",&n);
mang=(float*)malloc(n*sizeof(float));
printf("\nNhap A=");scanf("%f",&A);
printf("\nNhap B=");scanf("%f",&B);
printf("\nNhap C=");scanf("%f",&C);

for(int i=0;i<n;i++)
{
printf("\nNhap vao phan tu thu %d: ",i+1);
scanf("%f",&mang[i]);
}
//Lam tron

for(int i=2;i<n-2;i++)
{
mang[i]=(A*mang[i-2]+B*mang[i-1]+C*mang[i]+
B*mang[i+2]+A*mang[i+1])/(2*A+2*B+C);

}
//in ra sau khi lam tron
printf("\nMang sau khi lam tron: \n");
for(int i=0;i<n;i++)
{
printf("%.3f\t",mang[i]);
}
getch();
return 0;
}

kitti
15-01-2011, 06:45 PM
@kitti: Cảm ơn tinh thần chia sẻ và sự nhiệt tình của bạn. Và đây là 1 số góp ý của mình:
- Trường Công nghệ Thông tin Thành phố Hồ Chí Minh chi nhánh Hà Nội:
+ Câu 2: Viết chương trình cho phép nhập n từ bàn phím (nếu n <= 0 thì bắt nhập lại) . Tính tổng s = 1^2 + 2^2+.... + n^2.
Bài làm lạc đề.

for(i = 1; i <= n; i++) tong += i*i;

Cái này có thể do copy bị lỗi. Chương trình của mình trên máy của mình là là i*i. mình đã sửa lại cho đúng!


- Trường đại học Bách Khoa Đà Nẵng:
+ Bài 2:Viết chương trình nhập vào một số nguyên N có dạng abc rồi xuất ra màn hình một số đảo ngược có dạng cba
Hàm này bị lỗi:

printf("\n xau dao: %s \n");

cái này mình test không hề bị sai. bạn xem lại đi! để %s hay không đều đc.


+ Bài 4: Liệt kê tất cả các số nguyên tố nhỏ hơn 1000
và Bài 5: Nhập vào số nguyên N rồi xuất ra màn hình N số nguyên tố
Hàm kiểm tra số nguyên tố chưa chính xác. Bạn nên lọc các số âm, số 0, số 1 trong hàm này.
+ Bài 11: Nhập mảng 2 chiều có dạng M*N (Hoặc N*N) rồi tính tổng các phần từ.

do{
printf("Nhap vao so dong cua ma tran: ");scanf("%d",&dong);
printf("\nNhap vao so cot cua ma tran: ");scanf("%d", &cot);
}while(dong < 2 || cot < 2 && dong > 100 || cot >100);
Kết quả: dòng = 3, cot = -1. Được chấp nhận. Đây chắc không phải là ý muốn của bạn. Nếu không nắm chắc thứ tự ưu tiên các toán tử nên đặt dấu ngoặc đơn. Mà tốt nhất là nên đặt dấu ngoặc đơn, để người khác còn hiểu.
- Đề thi Tin Dai cuong 2010 Đại học Bách Khoa Hà Nội
Tự Luận:
Không quá 25 ký tự thì phải khai báo mảng họ tên 26 ký tự (1 for NULL).

hàm kiểm tra số nguyên tố chỉnh sửa lại:

int ktSNT (const int a)
{
int i = 0;
for(i = 2; i <= (int)sqrt(a); i++)
{
if( a % i == 0 || a < 2 && a != 2)
{
return 0;
}
}
return 1;
}
bài nhập mảng có một chút nhầm lẫn kitti đã sửa lại.

Nếu không nắm chắc thứ tự ưu tiên các toán tử nên đặt dấu ngoặc đơn. Mà tốt nhất là nên đặt dấu ngoặc đơn, để người khác còn hiểu.
Nhưng không phảo là lỗi do không hiểu thứ tự ưu tiên trong dấu ngoặc đơn mà bị nhầm toán tử && ở đây phải dùng toán tử ||.
rất cảm ơn những ý kiến của bạn nhưng lần sau nên test kĩ sai vì lỗi gì thì hãy nói đừng nói lung tung.
mình có thể biết nó lỗi ở đâu để sửa nhưng những bạn mới lại đi thêm ngoặc vào rồi vẫn thấy bị sai.
còn bài tự luận mình nhầm và đã sửa lại thành 26.

kitti
15-01-2011, 06:49 PM
Ai chỉ giúp em bài này được không...
Cho dãy giá trị a(i), i=1..n. Người ta làm trơn giá trị a(i) bằng cách tính lại giá trị a(i) bằng công thức sau a(i)=[A.a(i-2)+B.a(i-1)+C.a(i)+B.a(i+1)+A.a(i+2)]/(2A+2B+C) với A,B,C là những số cho trước. Để đơn giản 2 giá trị đầu và 2 giá trị cuối được giữ nguyên. Viết chương trình làm trơn dãy giá trị trên n lần.
Thuật toán em biết nhưng viết chương trình làm trơn n lần thì em chịu @@.


Đưa vào 1 topic mới đi bạn, đây là topic đề thi mà. Nếu đó là đề thi thì bạn nên post đầy đủ thông tin về nó.

Đúng vậy rất hoan nghênh birthis đã đóng góp cho topic của mình.
Tốt nhất nên ghi đầy đủ thông tin trường.

kitti
15-01-2011, 07:25 PM
Kitti: xin lưu ý mọi người một chút đó là nếu sửa thì sửa trực tiếp vào bài trả lời của mình.
vd như vodanh2492 nên viết trực tiếp tên trường vào đề bài. không nên viết thành một bài trả lời khác.
Lưu ý là viết tên trường nên rõ ràng, không viết tắt và đây là topic đề thi nên không giải quyết các vấn đề ngoài đề thi (các đề bài không có tên trường rõ ràng sẽ coi như không phải đề thi).

vodanh2492
15-01-2011, 08:45 PM
#include <conio.h>
#include<stdio.h>
#include<malloc.h>

int main()
{
/*
const float A=2.0;
const float B=1.0;
const float C=3.0;
*/
float A,B,C;
A=B=C=1.00;

float* mang;
int n;
printf("\nNhap vao so luong phan tu: ");
scanf("%d",&n);
mang=(float*)malloc(n*sizeof(float));
printf("\nNhap A=");scanf("%f",&A);
printf("\nNhap B=");scanf("%f",&B);
printf("\nNhap C=");scanf("%f",&C);

for(int i=0;i<n;i++)
{
printf("\nNhap vao phan tu thu %d: ",i+1);
scanf("%f",&mang[i]);
}
//Lam tron

for(int i=2;i<n-2;i++)
{
mang[i]=(A*mang[i-2]+B*mang[i-1]+C*mang[i]+
B*mang[i+2]+A*mang[i+1])/(2*A+2*B+C);

}
//in ra sau khi lam tron
printf("\nMang sau khi lam tron: \n");
for(int i=0;i<n;i++)
{
printf("%.3f\t",mang[i]);
}
getch();
return 0;
}



Cảm ơn bạn nhiều nha ^^

xuyenit55
15-01-2011, 09:09 PM
__________________________________________________ ___________
đây là đề thi tin học đại cương HV CN Bưu Chính Viễn Thông
(cơ sở 2)

Đề bài

Bài 2;
Nhập một mảng 10 số nguyên trong đó có ít nhất 2 số nhỏ hơn không;
Tính tổng tất cả các số dương nằm giữa 2 số âm đầu tiên và cuối cùng;
Nếu 2 số âm kề nhau thì trả về tổng bằng 0;

các anh cho em hỏi , cái dòng đó ý nghĩa là sao , em vẫn chưa hiểu lắm câu hỏi
ví dụ như 1 dãy số của nó là 1,2,3,2,5 ,-6 , 4,5,-4,5,-8;
thì tổng của nó tính bắt đầu từ -4 đến -8 , có nghĩa là tong =5;
hay là bắt đầu tính từ -6 đến -8 , tổng = 4+5+5 = 14;
các anh giải tích giùm em với , đọc đề bài thấy khó hiểu quá !(D:)>(D:)>

thanhphongcttv
15-01-2011, 11:00 PM
các anh cho em hỏi , cái dòng đó ý nghĩa là sao , em vẫn chưa hiểu lắm câu hỏi
ví dụ như 1 dãy số của nó là 1,2,3,2,5 ,-6 , 4,5,-4,5,-8;
thì tổng của nó tính bắt đầu từ -4 đến -8 , có nghĩa là tong =5;
hay là bắt đầu tính từ -6 đến -8 , tổng = 4+5+5 = 14;
các anh giải tích giùm em với , đọc đề bài thấy khó hiểu quá !(D:)>(D:)>

Mình chọn cái này nè bạn:

hay là bắt đầu tính từ -6 đến -8 , tổng = 4+5+5 = 14;

xuyenit55
15-01-2011, 11:49 PM
bạn vẫn chưa gửi code cái đề bài mình gửi ở topic cho mình xem à :)

nó vẫn bị lỗi , hôm nay mình mới thi song nên chưa có thời gian sửa , bây h mình đang sửa nhưng mình ko biết có sửa đc ko ? nếu đc mình sẽ post lên cho bạn !):)T):)T

birthis
16-01-2011, 12:52 PM
cái này mình test không hề bị sai. bạn xem lại đi! để %s hay không đều đc.
Mình không biết hàm printf hoạt động như thế nào nên không thể giải thích cho bạn được. Nhưng mà mình có thể đưa ra ví dụ chứng minh là nó có thể gây lỗi:
Xem hình này:
4765
4766
Đó là 1 trường hợp, trường hợp khác là chương trình bị crash.


Nhưng không phảo là lỗi do không hiểu thứ tự ưu tiên trong dấu ngoặc đơn mà bị nhầm toán tử && ở đây phải dùng toán tử ||.
rất cảm ơn những ý kiến của bạn nhưng lần sau nên test kĩ sai vì lỗi gì thì hãy nói đừng nói lung tung.
mình có thể biết nó lỗi ở đâu để sửa nhưng những bạn mới lại đi thêm ngoặc vào rồi vẫn thấy bị sai.
Mình chỉ tìm lỗi, không sửa lỗi. Cái này mình nghĩ là nó bị sai ở phần dấu ngoặc trên cơ sở là đoán ý của bạn. Nhưng không đúng ý của bạn thì thôi, bạn xem lại đâu có mất gì đâu nào.
PostScript: Mình không có ý đả kích bạn đâu nha. Mình chỉ góp ý thôi mà. Nếu bạn không cần thì thôi vậy.

xuyenit55
16-01-2011, 01:47 PM
Học viên bưu chính viễn thông ( cơ sở 2 )
Đề bài : nhập 1 dãy số , tối thiểu là 2 số nguyên âm
tính tổng các số dương nằm giữa 2 số nguyên âm đầu tiên và cuối cùng của mảng
nếu 2 số âm liền kề nhau in ra tong =0;


#include<iostream>
#include<math.h>
using namespace std;
void input_arg(int *a, int n);
void output_arg( int *a, int n);
int sum_arg( int *a, int n);
int dem_arg( int*a, int n);


int main(){

int n,i;
int dem_a;
cout<<" nhap so phan tu cua mang n = ";
cin>>n;
int *a = new int[n];
input_arg(a,n);

if ( (dem_arg(a,n)) < 2 ) cout<<" xin moi ban nhap lai , toi thieu la 2 so am"<< endl;
else {
// in mang
cout<< " \nmang vua nhap la \n";
output_arg(a,n);
cout<<" \ntong cua mang la : " << sum_arg(a,n);
}
delete[]a;
cout<<endl;
system ("pause");
return 0;
}

// ham nhap mang
void input_arg( int *a, int n){

int i;
for ( i = 0 ; i < n ; i++){

cout<< " a [ " << i << " ] =";
cin>>a[i];
}

}
// ham in mang

void output_arg( int *a, int n){

int i, dem =0;
for ( i = 0 ; i < n ; i++){
cout<< a[i] << " ";
}

}
// ham kiem tra co 2 so am
int dem_arg( int *a, int n){

int dem =0;
for ( int i = 0 ; i < n ; i++ ){
if ( a[i] < 0 ) {
dem ++;
}
}
return dem;
}




int sum_arg( int *a, int n){


int i,j=0,k=0;
int tong =0;
int kt=0;
for ( i = 0 ; i < n ; i++){
// neu 2 so am lien tiep la so am thi tong =0
if (( a[i] < 0) && (a[i+1] < 0 ) ){
kt=1;
}

}

if ( kt ==1) cout<<" tong = 0 "<< endl;
// neu khong thi
else {

for ( i = 0 ; i < n ; i++){
if ( a[i] < 0 ){
k = i; // gan chi so i cho k roi ket thuc vong lap
break;
}

}
// cout<<" k = " << k << endl;

for ( i = (n-1) ; i > 0 ; i--){
if ( a[i] < 0 ){
j = i; // gan chi so cua i cho j roi ket thuc vong lap
break;
}

}
// tinh tong
for ( i = k ; i < j ; i++){
if (a[i] > 0 )
tong += a[i];

}
}

return tong;
}

peterdrew
16-01-2011, 04:12 PM
Mình không biết hàm printf hoạt động như thế nào nên không thể giải thích cho bạn được. Nhưng mà mình có thể đưa ra ví dụ chứng minh là nó có thể gây lỗi:
Xem hình này:
4765
4766
Đó là 1 trường hợp, trường hợp khác là chương trình bị crash.


Mình chỉ tìm lỗi, không sửa lỗi. Cái này mình nghĩ là nó bị sai ở phần dấu ngoặc trên cơ sở là đoán ý của bạn. Nhưng không đúng ý của bạn thì thôi, bạn xem lại đâu có mất gì đâu nào.
PostScript: Mình không có ý đả kích bạn đâu nha. Mình chỉ góp ý thôi mà. Nếu bạn không cần thì thôi vậy.

Gửi Kiti: Cơ chế hàm printf và scanf rất phức tạp, bạn nên làm đúng nguyên tắc lập trình khi thao tác trên các hàm này; việc làm của bạn hoàn toàn không đúng. Với những chương trình đòi hỏi chạy liên tục thì một thao tác không chuẩn do lập trình viên gây ra sẽ gây lỗi trầm trọng, crash hệ thống, lỗi memory,... Tốt nhất các bạn nên làm đúng nguyên tắc lập trình trên ngôn ngữ hiện có!

heroworld
16-01-2011, 07:20 PM
kitti thân, em nên sửa lại hàm kt nguyên tố nhé! Vì sao thì em hãy suy nghĩ!
1. Dùng một biến phụ để lưu giá trị của sqrt() để tránh gọi nó qua mỗi iteration
2. Tách điều kiện kiểm tra a < 2 ra ngoài vòng lặp để tránh kiểm tra nó một cách vô nghĩa nhiều lần
3. Tối ưu thuật toán kiểm tra các ước có thể có của a, có thể tham khảo bài viết này (http://forums.congdongcviet.com/showthread.php?t=45673)
Code 1

// the fifth algorithm
bool check_prime (const int &n) {
// 2 is prime, 3 is prime
if (n == 2 || n == 3)
return true;
// 1 is not a prime
// each even number is not a prime
if (n == 1 || n % 2 == 0 || n % 3 == 0)
return false;
long j = sqrtl(n);
for (int i = 5; i <= j; i += 6)
if (n % i == 0 || n % (i + 2) == 0)
return false;
// in the end, n is a prime
return true;
}
Code 2

// the fifth' algorithm
bool check_prime (const int &n) {
// 2 is prime, 3 is prime
if (n == 2 || n == 3)
return true;
// 1 is not a prime
// each even number is not a prime
if (n == 1 || n % 2 == 0 || n % 3 == 0)
return false;
long j = sqrtl(n);
int k = 2;
for (int i = 5; i <= j; i += k, k = 6 - k)
if (n % i == 0)
return false;
// in the end, n is a prime
return true;
}

Nói như anh mp rất đúng làm như vậy sẽ làm giảm chi phí của chương trình.
Nhưng em thấy với một chương trình nhỏ thì nó cũng không gây ra nhiều vấn đề gì!

kitti
16-01-2011, 08:22 PM
Gửi Kiti: Cơ chế hàm printf và scanf rất phức tạp, bạn nên làm đúng nguyên tắc lập trình khi thao tác trên các hàm này; việc làm của bạn hoàn toàn không đúng. Với những chương trình đòi hỏi chạy liên tục thì một thao tác không chuẩn do lập trình viên gây ra sẽ gây lỗi trầm trọng, crash hệ thống, lỗi memory,... Tốt nhất các bạn nên làm đúng nguyên tắc lập trình trên ngôn ngữ hiện có!

Theo lời khuyên của bác em đã sửa lại.
Nhưng thật sự thì em mới học và cũng chưa từng làm các chương trình lớn đòi hỏi chạy liên tục nên chưa thấy ảnh hưởng của nó nhiều. Sau này em sẽ để ý!
Em hy vọng bác có thể nói rõ cơ chế của hàm printf và scanf cho em thấy được sự phức tạp của nó không?

JennY
16-01-2011, 08:51 PM
nó vẫn bị lỗi , hôm nay mình mới thi song nên chưa có thời gian sửa , bây h mình đang sửa nhưng mình ko biết có sửa đc ko ? nếu đc mình sẽ post lên cho bạn !):)T):)T

đâu bạn (:-O)


#include<stdio.h>
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<math.h>
float xa,xb,xc,ya,yb,yc;
float a,b,c;
int tt=0;
void nhap()
{
cout<<"Nhap toa do dinh A: \n";
cout<<"\t xA= ";cin>>xa;
cout<<"\t yA= ";cin>>ya;
cout<<"Nhap toa do dinh B: \n";
cout<<"\t xB= ";cin>>xb;
cout<<"\t yB= ";cin>>yb;
cout<<"Nhap toa do dinh C: \n";
cout<<"\t xC= ";cin>>xc;
cout<<"\t yC= ";cin>>yc;

a=sqrt((xb-xa)*(xb-xa)+(yb-ya)*(yb-ya));
b=sqrt((xc-xb)*(xc-xb)+(yc-yb)*(yc-yb));
c=sqrt((xa-xc)*(xa-xc)+(ya-yc)*(ya-yc));
}
void xem()
{
cout<<"\nToa do diem A: A("<<xa<<","<<ya<<")";
cout<<"\nToa do diem B: B("<<xb<<","<<yb<<")";
cout<<"\nToa do diem C: C("<<xc<<","<<yc<<")";
getch();
}
int yc1()
{

if(a+b>c&&b+c>a&&c+a>b)
{
cout<<"ABC la tam giac";
tt=1;
getch();
return 1;
}
else
{
cout<<"A,B,C ko phai la 3 dinh cua tam giac";
tt=0;
getch();
return 0;
}
}
void yc2()
{
if(tt==1)
{
if(a==b==c) cout<<"\nABC la tam giac deu.";
else if(a==b||b==c||c==a) cout<<"\nABC la tam giac can";
else if(a*a==b*b+c*c||b*b==a*a+c*c||c*c==a*a+b*b)
cout<<"\nABC la tam giac vuong";
else cout<<"\n ABC la tam giac thuong";
}
getch();
}
void yc3()
{
float cv,dt;
if(tt==1)
{
cv=a+b+c;
dt=sqrt(cv*(cv-a)*(cv-b)*(cv-c));
cout<<"\nChu vi tam giac ABC la: "<<cv;
cout<<"\nDien tich tam giac ABC la: "<<dt;
}
getch();

}
void menu()
{
clrscr();
int c;
cout<<"\n\t\t1.Nhap du lieu.";
cout<<"\n\t\t2.Xem du lieu.";
cout<<"\n\t\t3.Thuc hien yeu cau 1.";
cout<<"\n\t\t4.Thuc hien yeu cau 2.";
cout<<"\n\t\t5.Thuc hien yeu cau 3.";
cout<<"\n\t\t6.Ket thuc chuong trinh.\n";
do
{
cout<<"Ban chon: ";cin>>c;
switch(c)
{
case 1:
nhap();
menu();
break;
case 2:
xem();
menu();
break;
case 3:
yc1();
menu();
break;
case 4:
yc2();
menu();
break;
case 5:
yc3();
menu();
break;
case 6:
exit(0);
default:
cout<<"Lua chon khong dung. Phai an cac phim tu 1-6.\n";
break;
}
}
while(c<1||c>6);
}
void main()
{
clrscr();
menu();
}

kitti
16-01-2011, 08:57 PM
Kitti xin đề nghị JennY nên để code vào tag code nâng cao!
Post bài giải yêu cầu ghi rõ đề bài và tên trường. Nếu không kitti sẽ nhờ các Mode và Admin xóa. Và các bạn không trao đổi riêng ở đây.

bạn nên sửa lại bài của mình!

xuyenit55
16-01-2011, 09:13 PM
@Jeny : thực sự bài của mình nó đang bị lỗi phần tính điện tích và chu vi , mình vẫn chưa nghĩ ra cách sửa nên mình chưa sửa đc ! :(|:(|

kitti
16-01-2011, 09:17 PM
kitti thân, em nên sửa lại hàm kt nguyên tố nhé! Vì sao thì em hãy suy nghĩ!
1. Dùng một biến phụ để lưu giá trị của sqrt() để tránh gọi nó qua mỗi iteration
2. Tách điều kiện kiểm tra a < 2 ra ngoài vòng lặp để tránh kiểm tra nó một cách vô nghĩa nhiều lần
3. Tối ưu thuật toán kiểm tra các ước có thể có của a, có thể tham khảo bài viết này (http://forums.congdongcviet.com/showthread.php?t=45673)
Code 1

// the fifth algorithm
bool check_prime (const int &n) {
// 2 is prime, 3 is prime
if (n == 2 || n == 3)
return true;
// 1 is not a prime
// each even number is not a prime
if (n == 1 || n % 2 == 0 || n % 3 == 0)
return false;
long j = sqrtl(n);
for (int i = 5; i <= j; i += 6)
if (n % i == 0 || n % (i + 2) == 0)
return false;
// in the end, n is a prime
return true;
}
Code 2

// the fifth' algorithm
bool check_prime (const int &n) {
// 2 is prime, 3 is prime
if (n == 2 || n == 3)
return true;
// 1 is not a prime
// each even number is not a prime
if (n == 1 || n % 2 == 0 || n % 3 == 0)
return false;
long j = sqrtl(n);
int k = 2;
for (int i = 5; i <= j; i += k, k = 6 - k)
if (n % i == 0)
return false;
// in the end, n is a prime
return true;
}

Theo nhưng lời khuyên của bác em đã ngồi nghiên cứu 2 hàm kiểm tra số nguyên tố của bác nhưng em vẫn chưa hiểu rõ về 2 câu lệnh này:

for (int i = 5; i <= j; i += 6) // code 1
int k = 2;
for (int i = 5; i <= j; i += k, k = 6 - k) //code 2
Bác có thể giải thích rõ cho em được không?
Em cảm ơn!
À code của bác có thực sự là đã tối ưu!
Em thấy nếu người dùng nhập vào số 0 và số âm thì sẽ ra sao nhỉ (chắc bác chưa xét đến)?

xuyenit55
16-01-2011, 09:35 PM
@Jeny : đây là bài của mình , bài này mình không hiểu sao nó lại sai phần diện tích ,bởi đáng lẽ nó phải ra số lẻ nhưng mình nhập nó lại ra kết quả là số nguyên ! mình ko chắc là có đúng hay ko ?
//--------------------------------------------------------------------------------
Đề bài : nhập các tọa độ của tam giác và in ra tọa độ của tam giác đó
kiểm tra tam giác đó thuộc loại tam giác nào
tính chu vi và diện tích của tam giác ý!

#include<iostream>
#include<math.h>
using namespace std;

struct toa_do {
float x, y;
} A, B, C;
//-------------------------------------------------------------------------------------------
// ham nhap toa do
//--------------------------------------------------------------------------------------------
void input(float *m,float *n){
cout << " nhap toa do m = ";
cin>>*m;
cout << " nhap toa do n = ";
cin>>*n;
}
//---------------------------------------------------------------------------------------
// ham in toa do
//----------------------------------------------------------------------------------------
void output( float m, float n ){
cout<< " m = " << m <<endl;
cout<< " n = " << n << endl;
}
// ---------------------------------------------------------------------
// ham nhap
//---------------------------------------------------------------------
void nhap(){
cout<<" nhap toa do cua diem A :\n";
input(&A.x,&A.y);
cout<<" nhap toa do cua diem B :\n";
input(&B.x,&B.y);
cout<<" nhap toa do cua diem C :\n";
input(&C.x,&C.y);
}
// ----------------------------------------------------------------------------------------
// ham in ra cua 3 c
//------------------------------------------------------------------------------------------
void inra(){
cout<<" toa do cua diem A la \n";
output(A.x,A.y);
cout<<" toa do cua diem B la \n";
output(B.x,B.y);
cout<<" toa do cua diem C la \n";
output(C.x,C.y);
}

//----------------------------------------------------------------------------------------
// ham tinh cac do dai cua 1 canh tam giac
//----------------------------------------------------------------------------------------
double dodai( float x1, float y1, float x2, float y2){
float dx = x1 - x2;
float dy = y1 - y2;
return sqrt(dx*dx + dy*dy);
}
//ham tinh cac canh cua tam giac
//-------------------------------------------------------------------------------------
/*int tinhdodai3canh( double *ab, double *bc , double *ca){
*ab = *bc = *ca = 0;
*ab = dodai(A.x,A.y,B.x,B.y);
*bc = dodai(B.x,B.y,C.x,C.y);
*ca = dodai(A.x,A.y,C.x,C.y);
}*/
//-----------------------------------------------------------------------------------------
// ham kiem tra tam giac
//--------------------------------------------------------------------------------------
int kiemtra(double ab, double bc , double ca){
// tinhdodai3canh( &ab,&bc,&ca);*ab = *bc = *ca = 0;
ab=bc=ca=0;
ab = dodai(A.x,A.y,B.x,B.y);
bc = dodai(B.x,B.y,C.x,C.y);
ca = dodai(A.x,A.y,C.x,C.y);
if ( ab == bc == ca==0) return 0;
if ((ab + bc > ca) &&( ab + ca > bc) &&( bc + ca > ab)) cout<<"3 canh tao nen 1 tam giac\n"; return 1;
return 0;
}
//----------------------------------------------------------------------------------------
// ham kiem tra tam giac la can hay dau
//--------------------------------------------------------------------------------------------
void loaitamgiac(double ab, double bc, double ca){
ab=bc=ca=0;
ab = dodai(A.x,A.y,B.x,B.y);
bc = dodai(B.x,B.y,C.x,C.y);
ca = dodai(A.x,A.y,C.x,C.y);

if ( (ab*ab ==bc*bc+ ca*ca) || (bc*bc == ab*ab+ca*ca) || (ca*ca == ab*ab+bc*bc)){
cout<<"Tam giac vua nhap la tam giac vuong " << endl;
}
else if ( ab == bc && bc == ca) {
cout<<"Tam giac vua nhap la tam giac deu " <<endl;
}
else if (ab == bc || bc == ca || ab == ca ){
cout<<"Tam giac vua nhap la tam giac can " << endl;
}
else cout<<"Tam giac la tam giac thuong " <<endl;
}
//--------------------------------------------------------------------------------------------------
// tinh chu vi va dien tich cua tam giac
//-----------------------------------------------------------------------------------------
int chuvivadientich(double ab, double bc, double ca){
ab=bc=ca=0;
ab = dodai(A.x,A.y,B.x,B.y);
bc = dodai(B.x,B.y,C.x,C.y);
ca = dodai(A.x,A.y,C.x,C.y);
double p=0, p2 = 0;
float s = 0;
p = ab + bc +ca;
cout<<"Chu vi cua tam giac la p = " << p <<endl;
p2 = ( ab +bc+ca)/2;
s = sqrt( p2*( p2-ab)*(p2-bc)*(p2-ca));
cout<<"Dien tich cua tam giac s= " << s << endl;

}
//---------------------------------------------------------------------------------
// ham main
//------------------------------------------------------------------------------
int main()
{
double ab, bc, ca;
int kt;
do {
system("cls");
cout <<" ----------Nhap so de chon menu--------------\n";
cout<<" 1 : Nhap du lieu cho tam giac \n";
cout<<" 2 : Xem du lieu cua toa do vua nhap \n" ;
cout<<" 3 : Kiem tra tam giac \n";
//cout<<" 4 : Kiem tra xem tam giac thuoc loai nao \n";
//cout<<" 5 : Tinh chu vi va tam giac \n";
cout<<" 6 : Thoat khoi chuong trinh\n";
//cout<<" kt = " ;
cin>>kt;
system("cls");
switch(kt) {
case 1:
nhap();
system ("pause");
break;
case 2:
inra();
system ("pause");
break;
case 3:
// tinhdodai3canh(&ab,&bc,&ca);
//kiemtra(ab,bc,ca);
if (kiemtra(ab,bc,ca)==1){
loaitamgiac(ab,bc,ca);
chuvivadientich(ab,bc,ca) ;
}
else cout<<" 3 so khong tao nen 1 tam giac " ;
system ("pause");
break;
case 6 :
break;
}
}
while ( kt!=6 );
system ("pause");
return 0;
}

ps: ALL : Mọi người test giùm em nhé ! nếu sai chỗ nào sửa dùm em với !:D:D

xuyenit55
17-01-2011, 02:53 AM
@mp121209 ! Em cảm ơn anh nhùi nhùi ! em sẽ sửa bài ngay !:(|:(|:(|

xuyenit55
17-01-2011, 03:01 AM
@mp121209 : anh có thể nói rõ cho em biến chưa khởi tạo đc không ạ ! em không hiểu lắm , tại bài này của em đã sai ở phần diện tích ,nhưng em sửa hoài mà không đc nên post lên nhờ mọi người xem hộ !
anh có thể nói cho em biết lỗi sai không ạ ! thank anh nhiều !

JennY
17-01-2011, 04:09 PM
mọi người gửi toàn C++ ko à , trong khi đo mình muốn tham khảo code C thuàn túy thôi :(
đaay là code của mình mọi người xem rồi góp ý thêm nhé :D


#include <stdio.h>
#include <conio.h>
#include <math.h>

void nhapToaDo(float *a){
printf("\n\n\t Nhap x: ");
scanf("%f",&a[1]);
fflush(stdin);
printf("\t Nhap y: ");
scanf("%f",&a[2]);
fflush(stdin);
}

void hienThi(float *a){
printf("(%0.1f,%0.1f) \n",a[1],a[2]);
}

float khoangCach(float *a, float *b){
float d;
int temp1, temp2;
temp1 = (a[1]-b[1])*(a[1]-b[1]);
temp2 = (a[2]-b[2])*(a[2]-b[2]);
d = sqrt(temp1+temp2);
return(d);
}

int kiemTra(float a, float b, float c){
if((a+b)>c && (a+c)>b && (b+c)>a){
// printf("A,B,C la ba dinh cua mot tam giac.");
return (1);
}else{
// printf("A,B,C khong phai la ba dinh cua mot tam giac.");
return(0);
}
}

void vuong(float a, float b, float c){
float d1, d2, d3;
d1 = sqrt(a*a+b*b);
d2 = sqrt(a*a+c*c);
d3 = sqrt(b*b+c*c);
// printf("%f\t%f\t%f",a,b,c);
// printf("\ntemp: %lf",sqrt(a*a+b*b));
if((d1==c) || (d2==b) || (d3==a)){
printf("\n Tam giac ABC la tam giac vuong.");
}else{
printf("\n Tam giac ABC khong phai tam giac vuong.");
}
}

void can(float a, float b, float c){
if(a==b || a==c || b==c){
printf("\n Tam giac ABC la tam giac can.");
}else{
printf("\n Tam giac ABC khong phai la tam giac can.");
}
}

void deu(float a, float b, float c){
if(a==b && b==c){
printf("\n Tam giac ABC la tam giac deu.");
}else{
printf("\n Tam giac ABC khong phai la tam giac deu.");
}
}

void chuVi(float a, float b, float c){
float p;
p=a+b+c;
printf("\n Chu vi cua tam giac ABC la: %0.1f",p);
}

void dienTich(float a, float b, float c){
float s, p;
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));
printf("\n Dien tich tam giac ABC la: %0.1f", s);

}

int menu(){
int i;

do{
printf("\n 1.Nhap du lieu.");
printf("\n 2.Hien thi du lieu vua nhap.");
printf("\n 3.Kiem tra tam giac.");
printf("\n 4.Kiem tra tam giac vuong, tam giac can, tam giac deu.");
printf("\n 5.Tinh chu vi va dien tich tam giac.");
printf("\n 6.Exit.");
printf("\n\n Nhap lua chon: ");
scanf("%d", &i);
clrscr();
if(i<1 || i>6){
printf("Nhap sai. Xin moi nhap lai.");
}
}
while(i<1 || i>6);
return(i);
}

void main(){
float *a, *b, *c, d1, d2, d3;
int chon, temp;
clrscr();

do{
chon = menu();
switch(chon){
case 1:
printf("\n Nhap toa do diem A: ");
nhapToaDo(a);
printf("\n Nhap toa do diem B: ");
nhapToaDo(b);
printf("\n Nhap toa do diem C: ");
nhapToaDo(c);
d1 = khoangCach(b,c);
// printf("%f",d1);
d2 = khoangCach(a,c);
// printf("%f",d2);
d3 = khoangCach(a,b);
// printf("%f",d3);
temp = kiemTra(d1,d2,d3);
getch();
clrscr();
// menu();
break;
case 2:
printf("\n Toa do diem A la: ");
hienThi(a);
printf("\n Toa do diem B la: ");
hienThi(b);
printf("\n Toa do diem C la: ");
hienThi(c);
getch();
clrscr();
// menu();
break;
case 3:
if(temp == 1){
printf("A,B,C la ba dinh cua mot tam giac.");
}else{
printf("A,B,C khong phai la ba dinh cua mot tam giac.");
}
getch();
clrscr();
// menu();
break;
case 4:
if(temp == 1){
vuong(d1,d2,d3);
can(d1,d2,d3);
deu(d1,d2,d3);
getch();
clrscr();
break;
}else{
printf("ABC khong phai la tam giac, khong the su dung chuc nang nay.");
getch();
clrscr();
break;}
case 5:
chuVi(d1,d2,d3);
dienTich(d1,d2,d3);
getch();
clrscr();
break;
case 6:
exit(0);
break;
}}
while(chon != 6);
getch();
}

kitti
17-01-2011, 07:28 PM
Hôm nay Kitti xin cập nhập thêm 2 đề bài của trường Đại học Quốc gia Thành phố Hồ Chí Minh chi nhánh Hà Nội.
Câu 4: giải hệ phương trình bậc nhất 2 ẩn
Bài giải:

#include<stdio.h>
#include<conio.h>
#include<math.h>

int main()
{
clrscr();
float a1, b1, c1, a2, b2, c2;
float d, dx, dy, x, y;

printf(" Nhap cac he so \n");
printf("a1= "); scanf("%f", &a1);
printf("b1= "); scanf("%f", &b1);
printf("c1= "); scanf("%f", &c1);
printf("a2= "); scanf("%f", &a2);
printf("b2= "); scanf("%f", &b2);
printf("c2= "); scanf("%f", &c2);
d = a1*b2 - a2*b1;
dx = c1*b2 - c2*b1;
dy = a1*c2 - a2*1;
if (d)
{
x = dx/d;
y = dy/d;
printf("\n He phuong trinh co nghiem duy nhat (x,y)=(%.2f,%.2f)",x,y);
}
else if (dx) printf("\n He phuong trinh vo nghiem");
else printf ("\n He phuong trinh co vo so nghiem");
getch();
return 0;
}
Bài 5: cho một dãy số nhập vào từ bàn phím liệt kê các số chính phương và tính tổng các số đó:
Bài giải:

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<math.h>

int SCP(float a)
{
if(int(sqrt(a)) != sqrt(a)) return 0;
else return 1;
}
int main()
{
clrscr();
float* a;
int n, i, j;
float tong = 0;
float* b;

printf("\n Nhap so phan tu: ");
scanf("%d", &n);
a = (float*)malloc(n*sizeof(float));
b = (float*)malloc(n*sizeof(float));

j = 0;
for(i = 0; i < n; i++)
{
printf("\n Nhap phan tu thu %d: ", i);
scanf("%f", &a[i]);

if(SCP(a[i]) == 1)
{
b[j] = a[i];
j++;
}
}

printf("\nBang cac so chinh Phuong la: \n");
for(i = 0; i < j; i++)
{
printf("%9.2f", b[i]);
tong += b[i];
}

printf("\n Tong la: %.2f", tong);
free(a);
free(b);
getch();
return 0;
}

kitti
17-01-2011, 08:13 PM
@xuyenit55: Hello bạn! Mình xin đóng góp một vài ý kiến :)


1. Trước hết hãy quan tâm đến lỗi:

Nếu hàm của bạn không trả về giá trị, hãy để nó là void!
2. Warning thứ nhất


int kiemtra(double ab, double bc , double ca){
// tinhdodai3canh( &ab,&bc,&ca);*ab = *bc = *ca = 0;
ab=bc=ca=0;
ab = dodai(A.x,A.y,B.x,B.y);
bc = dodai(B.x,B.y,C.x,C.y);
ca = dodai(A.x,A.y,C.x,C.y);
if ( ab == bc == ca== 0) return 0;
if ((ab + bc > ca) &&( ab + ca > bc) &&( bc + ca > ab)) cout<<"3 canh tao nen 1 tam giac\n"; return 1;
return 0;
}
Bạn hãy chú ý dòng màu đỏ nhé! Giả sử abc là tam giác thường, khi đó ab == bc cho giá trị 0, tiếp theo 0 == ca lại cho giá trị 0, 0 == 0 cho giá trị true, và return 0! Sửa lại thành

if ( ab == 0 || bc == 0 || ca== 0) return 0;
3. Warning thứ hai

Cái này không có gì ghê gớm lắm, nên dùng ép kiểu trực tiếp để tránh warning
4. Các warning tiếp theo

Nếu switch của bạn rơi vào case thứ 3, chương trình của bạn sẽ bị lỗi, sử dụng biến chưa được khởi tạo là không được phép!

Một vài góp ý nhỏ với bạn để bạn có thể hoàn thiện chương trình của mình!
compiler = VC++2010Express


Em xem lại code của em nhé. Em khai báo ab, bc, ca; Chúng chưa được khởi tạo, nhưng em lại gọi nó trong hàm kiemtra(ab,bc,ca) nên mới sinh ra cảnh báo này. Về nguyên tắc, em không được sử dụng một biến nếu em chưa khởi tạo giá trị cho nó!


double ab, bc, ca;

// ....

case 3:
// tinhdodai3canh(&ab,&bc,&ca);
//kiemtra(ab,bc,ca);
if (kiemtra(ab,bc,ca)==1){
loaitamgiac(ab,bc,ca);
chuvivadientich(ab,bc,ca) ;
}
else cout<<" 3 so khong tao nen 1 tam giac " ;
system ("pause");
break;
Để biết lỗi nó phát sinh như thế nào, em có thể viết đoạn code này và biên dịch


int n;
std::cout << n << std::endl;



//Đề bài : nhập các tọa độ của tam giác và in ra tọa độ của tam giác đó
//kiểm tra tam giác đó thuộc loại tam giác nào
//tính chu vi và diện tích của tam giác ý!

#include <iostream>

class point3D {
friend std::ostream &operator<<(std::ostream &os, const point3D &p);
friend std::istream &operator>>(std::istream &is, point3D &p);

public:
point3D(): x(0.0), y(0.0), z(0.0) {}
point3D(double _x, double _y, double _z): x(_x), y(_y), z(_z) {}
point3D(const point3D &p) {
this->x = p.x;
this->y = p.y;
this->z = p.z;
}
double distance(const point3D &p) {
double dist(0.0);
dist = (p.x - this->x) * (p.x - this->x)
+ (p.y - this->y) * (p.y - this->y)
+ (p.z - this->z) * (p.z - this->z);
dist = sqrt(dist);
return dist;
}

private:
double x;
double y;
double z;
};

std::istream &operator>>(std::istream &is, point3D &p) {
std::cout << "\t"
<< "Please enter coordinates of point: ";
is >> p.x;
is >> p.y;
is >> p.z;
return is;
}

std::ostream &operator<<(std::ostream &os, const point3D &p) {
os << "(" << p.x << ","
<< p.y << ","
<< p.z << ")";
return os;
}

class triangle {
friend std::ostream &operator<<(std::ostream &os, const triangle &tr);
friend std::istream &operator>>(std::istream &is, triangle &tr);

public:
triangle(): d1(), d2(), d3() {};
triangle(const point3D &_d1, const point3D &_d2, const point3D &_d3):
d1(_d1), d2(_d2), d3(_d3) {}

bool check_is_triangle(); // check co phai tam giac hay khong
bool check_is_square(); // tam giac vuong
bool check_is_equilateral(); // tam giac deu
bool check_is_isosceles(); // tam giac can
void tell_kind(); // tell what kind of triangle this object is
void tell_perimeter(); // outputs the perimeter of the triangle
void tell_square(); // tell square of the triangle

private:
point3D d1; // peak A
point3D d2; // peak B
point3D d3; // peak C
};

bool triangle::check_is_triangle() {
double a, b, c;
a = d1.distance(d2);
b = d2.distance(d3);
c = d3.distance(d1);
// check if any is side is zero
if (0 == a || 0 == b || 0 == c)
return false;
// check if the points can make a triangle
if (a + b > c && b + c > a
&& c + a > b)
return true;
return false;
}

bool triangle::check_is_square() { // tam giac vuong
if (! this->check_is_triangle())
return false;
double a, b, c;
a = d1.distance(d2);
b = d2.distance(d3);
c = d3.distance(d1);
if (a * a + b * b == c * c
|| b * b + c * c == a * a
|| c * c + a * a == b * b)
return true;
return false;
}

bool triangle::check_is_equilateral() { // tam giac deu
if (! this->check_is_triangle())
return false;
double a, b, c;
a = d1.distance(d2);
b = d2.distance(d3);
c = d3.distance(d1);
if (a == b && b == c && c == a)
return true;
return false;
}

bool triangle::check_is_isosceles() { // tam giac can
if (! this->check_is_triangle())
return false;
double a, b, c;
a = d1.distance(d2);
b = d2.distance(d3);
c = d3.distance(d1);
if (a == b || b == c || c == a)
return true;
return false;
}



void triangle::tell_kind() {
if (! this->check_is_triangle()) {
std::cout << "A triangle can't be built from these points"
<< std::endl;
goto end;
}
std::cout << "A triangle tell about itself" << std::endl;
std::cout << "I'm a triangle" << std::endl;
if (this->check_is_equilateral())
std::cout << "I'm an equilateral triangle" << std::endl;;
if (this->check_is_isosceles())
std::cout << "I'm an isosceles triangle" << std::endl;;
if (this->check_is_square())
std::cout << "I'm a square triangle" << std::endl;
end:
;
}

void triangle::tell_perimeter() {
if (! this->check_is_triangle()) {
//std::cout << "These points are not a triangle" << std::endl;
goto end;
}
double p;
double a;
double b;
double c;
a = d1.distance(d2);
b = d2.distance(d3);
c = d3.distance(d1);
p = (a + b + c);
std::cout << "My perimeter is " << p << std::endl;
end:
;
}

void triangle::tell_square() {
if (! this->check_is_triangle())
{
//std::cout << "These points are not a triangle" << std::endl;
goto end;
}
double p;
double a;
double b;
double c;
double sq;
a = d1.distance(d2);
b = d2.distance(d3);
c = d3.distance(d1);
p = (a + b + c) / 2;
sq = p * (p - a) * (p - b) * (p - c);
sq = sqrt(sq);
std::cout << "My square is " << sq << std::endl;
end:
;
}

std::istream &operator>>(std::istream &is, triangle &tr) {
std::cout << "\nEnter three points" << std::endl;
std::cout << "Peak A" << std::endl;
is >> tr.d1;
std::cout << "Peak B" << std::endl;
is >> tr.d2;
std::cout << "Peak C" << std::endl;
is >> tr.d3;
return is;
}

std::ostream &operator<<(std::ostream &os, const triangle &tr) {
os << "Peak A: ";
os << "\t";
os << tr.d1 << std::endl;
os << "Peak B: ";
os << "\t";
os << tr.d2 << std::endl;
os << "Peak C: ";
os << "\t";
os << tr.d3;
os << std::endl;
return os;
}

int main () {
point3D p1(1.,3.,0.), p2(2.,4.,5.), p3(12.,4.,4.);
triangle tr(p1,p2,p3);
std::cout << tr;
tr.tell_kind();
tr.tell_perimeter();
tr.tell_square();

std::cin >> tr;
std::cout << tr;
tr.tell_kind();
tr.tell_perimeter();
tr.tell_square();
return 0;
}

trước tiên có gì mạo phạm bác mong bác bỏ qua:
em đã nhắc nhở mọi người một lần rồi nhưng chắc bác chưa đọc. em xin nhắc lại cho bác:
1. đây là topic giải quyết đề thi (không trao đổi riêng>)
2. bác post bài giải em rất cảm kích vì bác đã đóng góp cho topic của em nhưng em vẫn phải nhắc bác một chút là bác nên ghi rõ đề đấy là của trường nào!
Bác là mode em hy vọng bác sẽ thực hiện để giúp topic của em và lớn hơn là giúp c việt.
Em xin chân thành cảm ơn!

mp121209
17-01-2011, 08:19 PM
@kitti: Tất nhiên là em không dám mạo phạm bác rồi! Khổ nỗi, giải mà không đúng thì phải trao đổi để tìm kiếm lời giải cuối cùng chứ. Bác nghĩ thế nào, chứ em thấy, một nghìn tờ giấy nháp lem nhem để nhặt nhạnh ra một tờ tóm lược rõ ràng còn giá trị hơn một triệu tờ lời giải đấy, nhưng chẳng ai biết cái nào đúng. Đến lúc lục lọi tìm tòi, time đâu ra mà tìm hiểu, em mong bác suy nghĩ
Bài nào em post không rõ ràng em sẽ del, bác yên tâm đi!
Mọi người đóng góp cũng vì topic của bác tốt hơn, còn nếu bác muốn topic của bác là topic theo ý mình thì em chiều, em chẳng ý kiến gì hết!

kitti
17-01-2011, 08:33 PM
@kitti: Tất nhiên là em không dám mạo phạm bác rồi! Khổ nỗi, giải mà không đúng thì phải trao đổi để tìm kiếm lời giải cuối cùng chứ. Bác nghĩ thế nào, chứ em thấy, một nghìn tờ giấy nháp lem nhem để nhặt nhạnh ra một tờ tóm lược rõ ràng còn giá trị hơn một triệu tờ lời giải đấy, nhưng chẳng ai biết cái nào đúng. Đến lúc lục lọi tìm tòi, time đâu ra mà tìm hiểu, em mong bác suy nghĩ
còn đề trường nào, em sẽ bổ sung, bác yên tâm đi!

Bác lại hiểu sai ý của em rồi!
Em không nói là không dc trao đổi nhưng chỉ là không trao đổi riêng thôi!
và không giải quyết các bài không phải đề thi!
bởi JenY và xuyen18it đang trao đổi riêng một bài không phải là đề thi và đã bị Mode hoặc Admin xóa đề bài đi rồi (em nhớ không nhầm thì đó là cái đề có ghi câu dành cho ai có hứng chứ không viết tên trường hay ko nói là đề thi gì cả)!

JennY
18-01-2011, 12:25 AM
đề thi Học viênh kỹ thuật quân sự đấy bạn ạ =.="
chả qua mình quên ko viết tên trường thôi =.="

@mp: anh xem cái code của em có cần phải sửa gì nữa ko anh =.=" .nếu càn anh edit lại hộ em đc ko :D . Anh gửi tin nhắn vào hòm thư chứ không để đây người ta lại bảo phá hoại topic của người ta :D

kitti
18-01-2011, 07:37 PM
Đại Học Đà Lạt
Phần 2.
Cho một ma trận vuông cấp n,các phần tử của ma trận là số nguyên
5.Tích các số nguyên tố thuộc đường chéo phụ.;
6.Tổng các số nguyên nằm phía trên đường chéo phụ!

Bài Giải:

#include<stdio.h>
#include<conio.h>
#include<math.h>

int ktSNT (int a)
{
int i = 0;
for(i = 2; i <= (int)sqrt(a); i++)
{
if( a % i == 0 || a < 2 && a != 2)
{
return 0;
}
}
return 1;
}

int main()
{
long Tich = 1;
long Tong = 0;
int n, i, j;
int a[100][100];

do
{
printf("\n Nhap N: ");
scanf("%d", &n);

for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
printf("\nNhap vao phan tu A[%d][%d]: ",i,j);
scanf("%d", &a[i][j]);
if(i + j == (n -1))
{
Tong += a[i][j];
if( ktSNT(a[i][j]) == 1)
Tich *= a[i][j];
}
}
}
}while(n < 0 || n > 100);
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
printf(" %d ",a[i][j]);

}
printf("\n");
}
printf("Tong = %ld",Tong);
printf("Tich = %ld",Tich);

getch();
return 0;
}

tuandt5
18-01-2011, 09:31 PM
Trường đại học Bách Khoa Hà Nội(Khoa Điện Tử-Viễn Thông-không chuyên tin)
Khoa mình học môn C++.
Đề thi:(Giữa kì và cuối kì-2009)


KIỂM TRA GIỮA KỲ
NGÔN NGỮ LẬP TRÌNH C++
Thời gian: 90 phút
(Được sử dụng tài liệu) Lớp: ………………………………………
Mã SV: ……………………………………
Họ tên: …………………………………… ĐỀ SỐ 1
Câu 1. Những mệnh đề nào dưới đây là đúng: (1,5 điểm)
• Ngôn ngữ C++ có thể sử dụng các hàm của C như memcpy, strlen, …
• Cùng một tên biến có thể khai báo trong cácđoạn khác nhau của một khối {…}
• Từ long không thể dùng làm tên biến
• Toán tử & cho giá trị 0 hoặc 1
• Nếu khai báo int *p = (int *)1090 thì cout << (p + 1) đưa ra màn hình giá trị 0x0000044A
• Toán tử return ((char *)p) trả giá trị p về cho hàm kiểu char *
• Tham số mặc định của hàm phải đặt ở cuối danh sách tham số
• Định nghĩa struct So{double a}; không có ý nghĩa thực tiễn
• Độ phức tạp trung bình của thuật toán sắp xếp nổi bọt (BubbleSort) là O(n2)
• Một hàm đệ quy không bao giờ dẫn đến lỗi tràn stack
Câu 2. Cho các biến sau: (2 điểm)
char c; int i; unsigned u; double d; int &ri = i; double *pd = &d;
Cho biết giá trị của các biến bị thay đổi sau khi thực hiện lần lượt từng dòng lệnh
Dòng lệnh c i u d
c = 'A'; i = 5; u = 1; d = 1.5; ri = 2; *pd = 5;
if (++u || ++i || ++c) d /= 4;
for (; i > 0; i--) {u += (i << 1); u--;}
switch(c){case 'A':d++;case 'B':d+=2;default:d+=5;}
Câu 3. Cho đoạn khai báo sau: (1,5 điểm)
char s[]="1234567890"; unsigned *p = (unsigned *)&s[2];
a) Mảng s có 10 phần tử:  đúng  sai
b) (char)(*(p + 1)) bằng '5':  đúng  sai
c) Nếu gán *p=0x4163 thì cout << s cho hiện lên màn hình:
Câu 4. Hàm nào dưới đây tính xn: (1 điểm)
double f1(double x, int n)
{
double res = 1.0;
while (n) {res *= x; --n;}
return (res);
} double f2(double x, int n)
{
if (n < 1)
return 1.0;
return (x * f2(x, n – 1));
}  Hàm f1
 Hàm f2
 Cả hai hàm
Câu 5. Điền biểu thức vào những chỗ còn thiếu trong các hàm dưới đây (2 điểm)

// Hàm tìm độ dài của xâu ký tự
int len(char *s) {int k = 0; while (.........) k++; return (k);}

// Hàm so sánh hai xâu ký tự
int cmp(char *s1, char *s2) {
for (int i = 0; ........................; i++) {
if (s1[i] < s2[i]) return (-1);
................................................
}
return 0; // hai xâu bằng nhau
}

// Hàm nối hai xâu ký tự
char* concat(char* s1, char* s2) {
int l1 = len(s1), l2 = len(s2);
char* s = new char[..................], *p = s, *q;
for (q = s1; *q; q++, p++) *p = *q;
.................................................. ......................
*p = 0;
return (s);
}
Câu 6. Cho đoạn chương trình dưới đây (2 điểm)
struct date {
int day, month, year;
int compare(int d, int m, int y) {
int d1 = (year << 9) + (month << 5) + day;
int d2 = (y << 9) + (m << 5) + d;
if (d1 < d2)
return -1;
return (d1 > d2);
}
void set(int d, int m, int y) { day = d; month = m; year = y; }
};
struct student {
int id; char name[50]; date dob; // mã, họ tên và ngày sinh
student *prev, *next;
void Create(int i, char *n, int d, int m, int y) {
next = prev = NULL;
id = i;
memcpy(name, n, len(n)+1);
dob.set(d, m, y);
}
void Print() { cout << id << '\t' << name << '\t' <<
dob.day << '/' << dob.month << '/' << dob.year << endl; }
};
struct list {
student *head, *tail;
void Init() { head = tail = NULL; }
void Insert(int id, char *name, int d, int m, int y);
void Print();
};
a) Hoàn thành hàm Insert của struct list để thêm một sinh viên vào đầu danh sách

b) Hoàn thành hàm Print của struct list để in ra danh sách những sinh viên sinh sau ngày 01/01/1980



ĐỀ THI LẦN 1
Môn Lập trình
Thời gian 60 phút
(Được sử dụng tài liệu) Đề số 1
Câu 1. Giá trị lớn nhất của biễn kiểu unsigned char là:
a) 255 b) 127 c) ‘z’
Câu 2. Dòng nào không đúng trong C:
a) class aClass{public:int x;}; b) /* A comment */ c) char x=12;
Câu 3. Dòng lệnh: int c = 0; cout << c++ << c; cho in ra màn hình:
a) 00 b) 01 c) 10
Câu 4. Biểu thức trong vòng lặp for(x = 0; x = 3; x++) được thực hiện bao nhiêu lần:
a) 0 b) 3 c) vô cùng
Câu 5. Cho hàm
int fn(int x) { if (x == 0 || x == 1) return 1;
if (x % 2 == 0) return (fn(x / 2) + 2);
return (fn(x – 1) + 3); }
fn(7) trả về giá trị:
a) 7 b) 8 c) 11
Câu 6. Cho đoạn khai báo: int A[10], *p = A + 4; Khi sử dụng biến p trong biểu thức thì *(p + 1) là:
a) Giá trị của p b) Giá trị của A[5] c) Địa chỉ của A[5]
Câu 7. Cho đoạn chương trình:
struct stack {struct node { char c; node *next; } *top;};
void Push(char c, stack *s){
stack::node *p = new stack::node;
p->c = c;. . .}
Đoạn lệnh ở . . . là:
a) p->next = top; top = p;
b) p->next = s->top; s->top = p;
c) p = s; top = p;
Câu 8. Nếu char s[] = “0123456789”; thì chỉ số cuối cùng của mảng s là:
a) 11 b) 10 c) 9
Câu 9. Hàm nào là hàm tạo mặc định của lớp Aclass:
a) Aclass(Aclass& a) b) Aclass() c) ~Aclass()
Câu 10. Đâu là lệnh cấp phát mảng:
a) char *p=new char[20]; b) char p=new char[20]; c) char p=new char(20);
Câu 11. Trường hợp nào lớp D có thể truy cập vào vùng protected của lớp B:
a) class B {…}; b) class D {… c) class B {…};
a) class D {…}; b) class B {…}}; c) class D: public B {…};
Câu 12. Để tìm vị trí của giá trị 7 trong mảng 1 2 3 4 5 6 7 8 bằng thuật toán chia đôi, cần tìm chỉ số trung bình bao nhiêu lần:
a) 2 b) 3 c) 4
Câu 13. Đâu là lệnh giải phóng mảng p đã cấp phát:
a) delete p; b) delete p[]; c) delete []p;
Câu 14. Biểu thức 1/9*9 cho giá trị:
a) 1 b) 0.0862 c) 0
Câu 15. Thuật toán sắp xếp nào là tối ưu đối với mảng: 1 2 3 5 4
a) Insert sort b) Bubble sort c) Quick sort
Câu 16. Cây nhị phân chứa các chữ cái được biểu diễn bằng mảng (0 – nút rỗng): A B C D E F G 0 0 H. Khi duyệt cây theo thứ tự trước sẽ cho:
a) A B C D E F G H b) A B D E C F G H c) A B D E H C F G
Câu 17. Toán tử [] của class có mấy tham số:
a) 2 b) 1 c) 0
Câu 18. Biểu thức 1 & 4 cho giá trị:
a) 0 b) 1 c) 4
Câu 19. strcat(aString, “abc”) thực hiện:
a) copy “abc” vào aString b) Thêm “abc” vào sau aString c) so sánh “abc” và aString
Câu 20. Cho char A[10] = {1, 2, 3, 4, 5, 6}; short *p = (short *)&A[2]; *p = 256; Bốn phần tử đầu tiên của A sẽ là:
a) 1, 2, 0, 1 b) 1, 2, 1, 0 c) 1, 2, 0, 4
Câu 21. Cho chương trình sau:






1
2
3
4






5








6



7
8

















9




10






11



class Vect
{
protected:
int size;
double *data;
public:
Vect(): size(0), data(NULL) {}
Vect(int sz): size(sz) { data = new double[size]; }
Vect(double *v, int sz): size(sz), data(*v) {}
Vect(int sz, const double *v)
{
size = sz;
data = new double[size];
for (int i = 0; i < size; i++)
data[i] = v[i];
}
~Vect() { if (data) delete[] data; }
public:
int GetSize() { return size; }
double& operator[](int index) { return data[index]; }
};

class Sort: public Vect
{
public:
Sort(int sz, const double *v): Vect(sz, v) {}
protected:
void Swap(int i, int j) { double t = data[i]; data[i] = data[j]; data[j] = t; }
virtual Sort& DoSort() = 0;
void Print(ostream& out)
{
for (int i = 0; i < size; i++)
out << ' ' << data[i];
}
friend ostream& operator<<(ostream& out, Sort & v)
{
out << "original:";
v.Print(out);
out << "\nsorted:";
v.DoSort().Print(out);
return (out);
}
};

class SelectionSort: public Sort
{
public:
SelectionSort(int sz, const double *v): Sort(sz, v)

private:
Sort& DoSort()
{
return (*this);
}
};

void main()
{
double a[] = {1, 3, 5, 2, 4};
cout << new SelectionSort(4, A) << endl;
}
a) Những dòng lệnh nào sai? Sửa lại cho đúng.
b) Thứ tự thực hiện các lệnh.
c) Viết lại hàm DoSort của lớp SelectionSort để sắp xếp mảng theo thứ tự giảm dần.
d) Cho biết kết quả hiện trên màn hình.


Hướng dẫn:
1. Từ câu 1 đến câu 20: Kẻ bảng theo mẫu dưới đây:
Câu A B C Câu A B C
1 11
… …
10 20
Với mỗi câu, chọn 1 câu trả lời đúng bằng cách đánh dấu √ vào ô A, B hoặc C ở dòng tương ứng.
2. Câu 21, thực hiện như đã hướng dẫn ôn tập.

kenzso
18-01-2011, 10:13 PM
Trường đại học Bách Khoa Hà Nội(Khoa Điện Tử-Viễn Thông-không chuyên tin)
Khoa mình học môn C++.
Đề thi:(Giữa kì và cuối kì-2009)
90 phút (sợ thiệt)



KIỂM TRA GIỮA KỲ
NGÔN NGỮ LẬP TRÌNH C++
Thời gian: 90 phút
(Được sử dụng tài liệu) Lớp: ………………………………………
Mã SV: ……………………………………
Họ tên: …………………………………… ĐỀ SỐ 1
Câu 1. Những mệnh đề nào dưới đây là đúng: (1,5 điểm)
• Ngôn ngữ C++ có thể sử dụng các hàm của C như memcpy, strlen, … // True
• Cùng một tên biến có thể khai báo trong cácđoạn khác nhau của một khối {…} // False
• Từ long không thể dùng làm tên biến // True
• Toán tử & cho giá trị 0 hoặc 1 // False (&& chứ ko phải &)
• Nếu khai báo int *p = (int *)1090 thì cout << (p + 1) đưa ra màn hình giá trị 0x0000044A // False : 443
• Toán tử return ((char *)p) trả giá trị p về cho hàm kiểu char * // True
• Tham số mặc định của hàm phải đặt ở cuối danh sách tham số // False ? Ko hiểu rõ ý đề nói gì
• Định nghĩa struct So{double a}; không có ý nghĩa thực tiễn // True, Khai báo double a cho mau
• Độ phức tạp trung bình của thuật toán sắp xếp nổi bọt (BubbleSort) là O(n2) // True ? Lên wiki thử xem
• Một hàm đệ quy không bao giờ dẫn đến lỗi tràn stack // False


Câu 2. Cho các biến sau: (2 điểm)
char c; int i; unsigned u; double d; int &ri = i; double *pd = &d;
Cho biết giá trị của các biến bị thay đổi sau khi thực hiện lần lượt từng dòng lệnh
Dòng lệnh c i u d
c = 'A'; i = 5; u = 1; d = 1.5; ri = 2; *pd = 5;
// c = 65; i = 5; u = 1; d = 1

if (++u || ++i || ++c) d /= 4;
// d = 0;

for (; i > 0; i--) {u += (i << 1); u--;}
// u=30

switch(c){case 'A':d++;case 'B':d+=2;default:d+=5;}
// d = 8;


Câu 3. Cho đoạn khai báo sau: (1,5 điểm)
char s[]="1234567890"; unsigned *p = (unsigned *)&s[2];
a) Mảng s có 10 phần tử:  đúng  sai // đúng
b) (char)(*(p + 1)) bằng '5':  đúng  sai // đúng
c) Nếu gán *p=0x4163 thì cout << s cho hiện lên màn hình: // không hiện gì "" hoặc là hiện "cA"


Câu 4. Hàm nào dưới đây tính x^n: (1 điểm)
double f1(double x, int n)
{
double res = 1.0;
while (n) {res *= x; --n;}
return (res);
}
double f2(double x, int n)
{
if (n < 1)
return 1.0;
return (x * f2(x, n – 1));
}
 Hàm f1
 Hàm f2
 Cả hai hàm // Cái này chính xác nhất


Câu 5. Điền biểu thức vào những chỗ còn thiếu trong các hàm dưới đây (2 điểm)

// Hàm tìm độ dài của xâu ký tự
int len(char *s) {int k = 0; while (.........) k++; return (k);} // *s++
// int len(char *s) {int k = 0; while (*s++) k++; return (k);}

// Hàm so sánh hai xâu ký tự
int cmp(char *s1, char *s2) {
for (int i = 0; ............... ; i++) { //s1[i] == s2[i] && s1[i] != 0
if (s1[i] < s2[i]) return (-1);
................................................ // if( s1[i] > s2[i]) return 1;
}
return 0; // hai xâu bằng nhau
}

// Hàm nối hai xâu ký tự
char* concat(char* s1, char* s2) {
int l1 = len(s1), l2 = len(s2);
char* s = new char[..................], *p = s, *q;// l1+ l2
for (q = s1; *q; q++, p++) *p = *q;
.................................................. ......................// for (q = s2; *q; q++, p++) *p = *q;
*p = 0;
return (s);
}


Câu 6. Cho đoạn chương trình dưới đây (2 điểm)
struct date {
int day, month, year;
int compare(int d, int m, int y) {
int d1 = (year << 9) + (month << 5) + day;
int d2 = (y << 9) + (m << 5) + d;
if (d1 < d2)
return -1;
return (d1 > d2);
}
void set(int d, int m, int y) { day = d; month = m; year = y; }
};
struct student {
int id; char name[50]; date dob; // mã, họ tên và ngày sinh
student *prev, *next;
void Create(int i, char *n, int d, int m, int y) {
next = prev = NULL;
id = i;
memcpy(name, n, len(n)+1);
dob.set(d, m, y);
}
void Print() { cout << id << '\t' << name << '\t' <<
dob.day << '/' << dob.month << '/' << dob.year << endl; }
};
struct list {
student *head, *tail;
void Init() { head = tail = NULL; }
void Insert(int id, char *name, int d, int m, int y);
void Print();
};
a) Hoàn thành hàm Insert của struct list để thêm một sinh viên vào đầu danh sách
void Insert(int id, char *name, int d, int m, int y)
{
student stnew = new student;
if(head == NULL)
{
head = stnew;
stnew->next = tail;
stnew->prev = NULL;
} else {
stnew->Create(int id, char *name, int d, int m, int y);
stnew->prev = head;
stnew->next = head->next;
head->next = stnew;
}
};

b) Hoàn thành hàm Print của struct list để in ra danh sách những sinh viên sinh sau ngày 01/01/1980
print ()
{
while(head != tail)
{
//print
head = head->next;
}

kitti
20-01-2011, 09:39 PM
Đề thi C: FPT_APTECH (FAT1_Hà Nội).

Yêu cầu chung: Xây dựng trò chơi xếp gạch.
Mô tả yêu cầu: Chương trình gồm có các chức năng chính sau:
1. Chơi mới.
2. Cấu hình.
3. Kỷ lục.

Chi tiết: Tetris (tiếng Nga) là một trò chơi điện tử đầu tiên được thiết kế và phát triển bởi Alexey Pajitnov. Nó được tạo ra vào ngày 6 tháng 6 năm 1984, trong lúc ông đang làm việc tại Trung tâm Tính toán Dorodnicyn của Viện hàn lầm khoa học Liên Xô tại Moskva. Ông lấy tên của trò chơi từ tiền tố "tetra- của tiêng Hy Lạp, có nghĩa là "bốn" (mỗi bộ phần trong trò chơi gọi là Tetromino, có bốn phần) và quần vợt (tennis), trò chơi thể thao Pạitnov thích nhất.

Luật chơi: <tham khảo>

Gợi ý cách hoạt động của chương trình như sau:

xem ảnh

mức 1: thiết kế được giao diện hợp lý. Thiết kế các hàm chức năng hợp lý. Thiết kế struct hợp lý. Thực hiện được cơ bản các chức năng.
mức 2: thực hiện đầy đủ các chức năng của chương trình. Có thuật toán tìm điểm và điểm thưởng.
mức 3: thiết kế giao diện đẹp, hợp lý. Game play sáng tạo. Các chức năng hoạt động tốt không lỗi.

Hết.
Chú ý: Bạn nào bài giống nhau mang tiền qua phòng giáo vụ thi lại.

Do bài khó và độ phức tạp Cao mà trình của Kitti thì thấp nên không thể code hoàn chỉnh được mời các bác tham khảo bài của bác tauit_dnmd ở đây:
http://forums.congdongcviet.com/showthread.php?t=35476

hoang minh nguyen
23-01-2011, 06:02 PM
Đề thi giữa kỳ trường DHCN tpHCM (là của lớp e thôi chứ lớp khác thì đề khác)
Đề bài: Viết 1 chương trình mô phỏng trò chơi Lấy bi
Mô phỏng trò chơi: Có M viên bi, 2 người chơi lần lượt lấy đi các viên bi sao cho số viên bi lấy ít nhất là 1 và nhiều nhất là 3. Người nào mà lấy phải viên bi cuối cùng thì người đó thua
Giả sử bạn chơi với máy.
Gợi ý: Người chơi cần nhập vào số viên bi M và chọn lượt lấy bi trước(máy lấy trước hay bạn lấy trước) sau đó cứ thay phiên nhau lấy.Cuối cùng thì thông báo kết quả của ván chơi
Thời gian: 60'
yêu cầu: viết bằng ngôn ngữ C++

Sau đây là bài làm của e:

#include<conio.h>
#include<iostream.h>
#include<stdlib.h>
void main()
{
clrscr();
int m,bb,bm,i,k;
randomize();
cout<<"Moi ban nhap so luong bi: ";
cin>>m;
cout<<"ban co muon lay bi truoc ko (chon 1 neu muon lay truoc)?";
cin>>k;
cout<<"Luat choi: Moi luot lay chi duoc lay tu 1->3 bi,neu ban nhap sai ban se mat luot choi;ai lay vien bi cuoi cung se thua"<<"\n";
if(k==1)
{
i=m;
while(i>=0)
{
cout<<"den luot ban: ";
cin>>bb;
i=i-bb;
cout<<"So bi con lai la: "<<i<<"\n";
if(i==1)
{
cout<<"den luot may: 1"<<"\n";
cout<<"you win";
break;
}
if(i==2)
{
bm=1;
cout<<"den luot may: "<<bm<<"\n";
cout<<"you lose";
break;
}
if(i==3)
{
bm=random(2)+1;
cout<<"den luot may: "<<bm<<"\n";
i=i-bm;
cout<<"So bi con lai la: "<<i<<"\n";
if(i==1)
{
cout<<"you lose";
break;
}
}
else
{
bm=random(3)+1;
cout<<"den luot may: "<<bm<<"\n";
i=i-bm;
cout<<"So bi con lai la: "<<i<<"\n";
if(i==1)
{
cout<<"you lose";
break;
}
}
}
}
if(k!=1)
{
i=m;
while(i>=0)
{

if(i==1)
{
cout<<"den luot may: 1"<<"\n";
cout<<"you win";
break;
}
if(i==2)
{
bm=1;
cout<<"den luot may: "<<bm<<"\n";
cout<<"you lose";
break;
}
if(i==3)
{
bm=random(2)+1;
cout<<"den luot may: "<<bm<<"\n";
i=i-bm;
cout<<"So bi con lai la: "<<i<<"\n";
if(i==1)
{
cout<<"you lose";
break;
}
}
else
{
bm=random(3)+1;
cout<<"den luot may: "<<bm<<"\n";
i=i-bm;
cout<<"So bi con lai la: "<<i<<"\n";
if(i==1)
{
cout<<"you lose";
break;
}
else
{
cout<<"Den luot ban: ";
cin>>bb;
i=i-bb;
cout<<"So bi con lai la: "<<i<<"\n";
}
}
}
}
getch();
}

Không biết có đúng không mong mọi người góp ý
Còn bác nào ham vui thì có thể vào đây (http://khoinguonit.com/f79/de-thi-c-c-nhan-ngay-key-kis-2011-bit-2011-ban-quyen-1-nam-711/)

nguyenvandoan_6692
01-03-2011, 01:43 AM
Trường Công nghệ Thông tin Thành phố Hồ Chí Minh chi nhánh Hà Nội:

Câu 1:
giải và biện luận phương trình bậc 2 (tính cả trường hợp suy biến).

Bài giải:

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<math.h>

int gptb2(float a, float b, float c, float* x1, float* x2)
{
float del;
del = b*b - (4*a*c);
if(del < 0) return -1;
else
{
*x1 = (b*b - sqrt(del))/ (2*a);
*x2 = (b*b + sqrt(del))/ (2*a);
}
return 1;
}
int main()
{
clrscr();
float a, b, c, x1, x2;
printf("\nNhap a, b, c:");
scanf("%f%f%f", &a,&b,&c);
fflush(stdin);
if(a == 0)printf("X = %.2f", -b/c);
else
{
if(gptb2(a,b,c,&x1,&x2) == -1)
printf("\nphuong trinh vo nghiem");
else
{
printf("\nx1 = %.2f", x1);
printf("\nx2 = %.2f", x2);
}
}
getch();
return 0;
}

bai tren cho doan return-1 co nghia la gi vay anh?va cho return1,return0 nua?tra loi giup em voi hix

bai giai phuong trinh bac2 doan return1 nghia la gi the anh?

kitti
01-03-2011, 05:02 PM
return -1: trả về kết quả là -1 nếu del < 0 vì trường hợp del = 0 & del = 1 chương chình vẫn xét nên dùng return là -1.
return 1: trả về kết quả 1 để xét trong trương trình vì phương trình bậc hai có 2 nghiệm nên không thể return trực tiếp ra 2 nghiệm được.
return 0: là vì chương trình chính mình dùng là int main nên dùng vậy thôi ko có chương trình vẫn chạy bình thường

phamtrong
31-03-2011, 10:53 AM
Trường ĐH BK Hà Nội
Bài tập môn kĩ thuật lập trình- Thầy Nguyễn Văn Bá:

Lập chương trình tính đạo hàm của 1 hàm biến x nhập từ bàn phím tại điểm x=a(a là hằng số).
note:Hàm nhập vào có thể có cả các hàm sau: sin cos tan log ln, hàm mũ (^).

phamtrong
08-04-2011, 12:46 AM
Hic, sao không ai trả lời giùm vậy?

pengox2011
10-04-2011, 09:25 PM
Bài 1 :
- Viết chương trình tính tích căn bậc hai của một số nhập vào từ bàn phím:
Nếu nhập vào số âm, máy sẽ thông báo:” Không thể tính căn bậc hai của số âm. Bấm phím bất kì để nhập lại”.
Gợi Ý:
Trường hợp số âm để nhập lại thì sử dụng lệnh nháy goto và nhãn
- Nếu nhập vào một số dương thì máy sẽ thông báo :” Nếu a=x thì căn bậc hai của a=y”,
Gợi Ý:
Trường hợp số dương sử dụng hàm sqrt( ) để tính căn bậc hai.

giúp em với

conrongchautien
11-04-2011, 04:21 PM
Môn THCS2: KHTN tpHCM - 2007
Đề tự luận: Gọi a là mảng một chiều chứa n số nguyên dương. Hãy hoàn tất hàm GetMax(), có nhiệm vụ tìm và trả về số lớn nhất trong mảng.

int GetMax(int a[], int n){
...
}
Yêu cầu:
- Chỉ sử dụng 2 biến a và n trong hàm GetMax().
- Không làm thay đổi nội dung của mảng a.

xuyenit55
11-04-2011, 04:27 PM
Môn THCS2: KHTN tpHCM - 2007
Đề tự luận: Gọi a là mảng một chiều chứa n số nguyên dương. Hãy hoàn tất hàm GetMax(), có nhiệm vụ tìm và trả về số lớn nhất trong mảng.

int GetMax(int a[], int n){
...
}
Yêu cầu:
- Chỉ sử dụng 2 biến a và n trong hàm GetMax().
- Không làm thay đổi nội dung của mảng a.

có đc sử dụng biến i để duyệt không bạn !(:-O)(:-O)
như thế này đc ko nhỉ


#include<iostream>
using namespace std;
void nhapmang ( int a[] , int n)
{
for ( int i = 0 ; i < n ; i++)
{
cout<< " a[ " << i << " ] = ";
cin>> a[i];
}
}
void inmang ( int a[] ,int n )
{
for ( int i = 0; i < n ; i++)
{
cout<< a[i] << " , ";
}
}
int getmax( int a[] , int n )
{
for ( int i = 1 ; i < n ; i++)
{
if ( a[0] < a[i])

a[0] = a[i];

}
return a[0];
}
int main()
{

int a[40] , n;
cout<<" nhap n = ";
cin>>n;
nhapmang(a,n);
cout<<" \nmnag vua nhap la :\n";
inmang (a,n);
cout<<"\n gia tri lon nhat cua mang la : " << getmax(a,n) <<endl;
system ("pause");
return 0;
}

conrongchautien
11-04-2011, 04:31 PM
@xuyen: Đề chỉ có thế, tớ cũng không biết

kitti
11-04-2011, 04:41 PM
int getmax( int a[] , int n )
{
while( n > 0)
{
if ( a[0] < a[n])

a[0] = a[n];
n--;

}
return a[0];
}
Cái này không biết ổn không nhỉ? còn một cách nữa là dùng đệ qui!

conrongchautien
11-04-2011, 05:06 PM
Tớ làm đệ qui hihi


#include<iostream.h>
#include<conio.h>
int a[]={5,11,4,9,19,7,3};
int size=7;
int GetMax(int a[], int n){
if(n==1) return a[0];
if(GetMax(a,n-1)>a[n-1])
return GetMax(a,n-1);
else return a[n-1];
}
void main(){
clrscr();
cout<<GetMax(a,size);
getch();
}
Kitti cũng rành rọt ghê hengY(:D




int getmax( int a[] , int n )
{
while( n > 0)
{
if ( a[0] < a[n])

a[0] = a[n];
n--;

}
return a[0];
}
Cái này không biết ổn không nhỉ? còn một cách nữa là dùng đệ qui!
Cách này hay. Tớ chấm cậu điểm 10 (:))
P/S: Cách này mảng thay đổi 180 độ !

kitti
11-04-2011, 05:24 PM
Tớ làm đệ qui hihi


#include<iostream.h>
#include<conio.h>
int a[]={5,11,4,9,19,7,3};
int size=7;
int GetMax(int a[], int n){
if(n==1) return a[0];
if(GetMax(a,n-1)>a[n-1])
return GetMax(a,n-1);
else return a[n-1];
}
void main(){
clrscr();
cout<<GetMax(a,size);
getch();
}
Kitti cũng rành rọt ghê hengY(:D


Cách này hay. Tớ chấm cậu điểm 10 (:))
P/S: Cách này mảng thay đổi 180 độ !

Bài đệ qui của cậu rất hay. Bài đó là mình sửa theo thuật toán của xuyenit55. Mình cũng vừa biết làm thế thì a[0] sẽ bị thay đổi đang định làm cái đệ qui mà còn đang lỗi!

Anonymous
11-04-2011, 09:56 PM
Đề trường mình năm nay đây(chuối khinh khủng,làm chẳng đã tay gì cả,thừa đến 30 phút cơ đấy),code trên giấy nhé:)
Đại học kỹ thuật công nghệ TP Hồ Chí Minh
Câu 1:Viết chương trình nhập số nguyên dương N.Hãy tính và in ra giá trị của biểu thức:

S(N)=1-1/2!+1/3!-...+(-1)^N^-^1/N!

Cầu 2:Viết chương trình nhập số nguyên dương N,kiểm tra xem N có phải là là số chính phương hay không,kiểm tra N có phải là số nguyên tố hay không ?.

Câu 3:Viết chương trình nhập số nguyên dương N(N<=100) thực hiện:
a) Nhập N số nguyên vào dãy a_0,a_1,a_2,...
b) Xuất dãy vừa nhập ra màn hình.
c) Tìm phần tử âm lớn nhất trong dãy

Câu 2,3 miễn bàn
câu 1 dùng cách tầm thường nhất là viết hàm giai thừa để tiện tính toán,cách hay hơn là vẽ lưu đồ thuật toán rồi code theo

kitti
11-04-2011, 10:01 PM
@Anonymous: bạn Nên ghi rõ tên trường bạn là gì?(sửa vào bài cũ). Và nếu đã có lời giải thì bạn hãy post nên chia sẽ với mọi người luôn!

vitbau1412
16-04-2011, 09:18 PM
Trường đại học Bách Khoa Đà Nẵng:
Bài 1: Tính tổng S=1+2+3+….+n


#include<stdio.h>
#include<conio.h>

int main()
{
clrscr();
int n;
long tong;
int i;
do
{
printf("\n Nhap n: ");
scanf("%d", &n);
}while(n <= 0);

tong = 0;
for(i = 1; i <= n; i++) tong += i*i;
printf("\n S = %ld", tong);
getch();
return 0;
}

(trang đầu tiên)
dòng for sao lại là tong+=i*i

kitti
16-04-2011, 09:23 PM
(trang đầu tiên)
dòng for sao lại là tong+=i*i

Nhầm mình đã sửa lại rồi!

ocbu101
19-04-2011, 10:19 AM
Đề thi CSLT trường Đại Học Mở TPHCM
1.Cho trước mảng nguyên gồm n phần tử
-tạo trị ngẫu nhiên ban đầu cho các phần tử mảng trong khoảng [a....b],với a<b,a có thể là số âm.
2.tạo trị ngẫu nhiên ban đầu có thứ tự giảm dần cho các phần tử mảng trong khoảng [a....b],với 0<a<b.
3.Kiểm tra số tự nhiên có phải số fibonanci hay không?
4.Tính trung bình tổng các số fibonanci trong mảng?
5.Xác địh số fibonanci lớn nhất nếu có trong mảng?
6.Di chuyển các phần tử mảng sao cho phần tử có trị dương dồn về bên trái,phần tử có tri âm dồn về bên phải,các số 0 nằm giữa.

ví dụ :cho truoc mảng nguyên sau:{4,21,25,0,89,65,0,55,-10,5,2,-33}
4. tính trung bình tổng fibonanci sẽ là 34.4 (89+25+21+5+2)/5
5.số fibananci nhỏ nhất là 2.
6.mảng sau khi di chuyển là{-10,-33,0,0,89,65,21,55,25,5,2,4}

taoxanhvipboy
20-04-2011, 12:31 AM
bài 1:
a,xây dựng một cấu trúc ưng với phiếu điểm của thí sinh gồm các thành phần:
1,họ và tên
2,quê quán
3,tuổi
4,trường học
5,số báo danh
6,điểm thi
Trong đó:"Họ và tên là một cấu trúc gồm 3 thàn phần:"Họ","tên đệm", và "tên"."Quê quán" là 1 cấu trúc gồm 3 thành phần "xã" , "huyện" và "tỉnh".Điểm thi gồm 3 thành phần :"Điểm toán" ,"điểm lí","điểm hóa"(chính xác đến 0.25)
b,Đọc số liệu từ một phiếu điểm cụ thể và lưu trữ vào các thành phần của cấu trúc nói trên.
c,Tìm kiếm trong danh sách các phiếu điểm của thí sinh đã được lưu trong 1 tệp tin các thí sinh có điểm trên N(điểm được nhập từ bàn phím)
bài 2:
Trong một trường trung học.học sinh phải học 3 môn :toán,Lí và hóa.ngoài ra hs nam phải học thêm môn Kĩ thuật,còn học sinh nữ phải học thêm môn Nữ công.Viết chương trình:
a, nhập họ tên ,giới tính và điểm của n hoc sinh.lưu số liệu lên đĩa.
b,in số liệu về học sinh nam rồi đến học sinh nữ.
c,in thứ tự về các học sinh theo các thứ tự giảm đần của tổng điểm các môn học chính,điểm của môn học bổ sung.
P/S:anh em pro cố gắng giải giúp mình nhá!thanks các bạn

cothientam
08-05-2011, 02:15 PM
câu 1:
Viết ct nhập vào số nguyên n.
-Tính tổng các số trong phạm vi từ 1 đến n.
-Cho biết n có là số nguyên tố hay không.
Câu 2:
Viết chương trình(theo hàm) thực hiện:
a. Nhập mảng một chiều các số nguyên.
b. Tính trung bình cộng các phần tử trong mảng.
c. Liệt kê các phần tử lẽ chia hết cho 3 có trong mảng.
d. Tìm phần tử dương lớn nhất trong mảng.
Câu 3:
Cho ma trận vuông cấp n gồm các số thực.Viết hàm thực hiện các chức năng sau:
a. Liệt kê các phần tử trên đường chéo chính của ma trận.
b. Tính và in ra tổng các phần tử trên mỗi dòng của ma trận.
c. Lệt kê các phần tử ở tam giác trên đường chéo phụ(không tính đường chéo phụ)

kitti
09-05-2011, 06:54 PM
Câu 1:

#include <iostream.h>
#include <math.h>
#include <conio.h>


int ktSNT (const int a)
{
int i;
if(a < 2) return 0;
for(i = 2; i <= (int)sqrt(a); i++)
{
if( a % i == 0)
{
return 0;
}
}
return 1;
}

int main()
{
int n;
int SUM = 0;
cout<< "Nhap n: ";
cin>> n;
if(ktSNT(n) == 0) cout<< "So ban nhap khong phai la so nguyen to\n";
else cout<< "So ban nhap la so nguyen to\n";
for(int i = 1; i <= n; i++)
{
SUM += i;
}
cout << "\nTong La:" << SUM;
getch();
return 0;
}

Bài 2:

#include <iostream.h>
#include <math.h>
#include <conio.h>

int main()
{
int n, a[100];
int SUM = 0;
cout<< "\nNhap n: ";
cin>> n;
for(int i = 0; i < n; i++)
{
cout<< "\nNhap phan tu thu"<< i+1<<" :";
cin>> a[i];

}
cout<< "\n Bang Cac so le chia het cho 3:";
int Max = a[0];
for(int i = 0; i < n; i++)
{
SUM += a[i];
if(a[i] % 2 != 0 && a[i] % 3 == 0) cout<<"\t"<< a[i];
if(Max < a[i]) Max = a[i];
}
cout << "\nTBC La:" << (float)SUM/n;
if(Max > 0) cout<< "\nMAX duong trong mang la:"<< Max;
else cout<<"\nTrong mang khong co so duong";
getch();
return 0;
}

vitbau1412
09-05-2011, 07:39 PM
@kitti: đề của hai bài trên là gì vậy bạn?
ah, ở bài 2:

for(int i = 0; i <= n; i++)
{
SUM += a[i];
if(a[i] % 2 != 0 && a[i] % 3 == 0) cout<<"\t"<< a[i];
if(Max < a[i]) Max = a[i];
}
mình chạy thử nó ra sai, tại sao lại chạy từ 0 đến n, phải <n chứ ta?
còn tính trung bình cộng thì TBC phải kiểu float ????

kitti
09-05-2011, 08:20 PM
@kitti: đề của hai bài trên là gì vậy bạn?
ah, ở bài 2:

for(int i = 0; i <= n; i++)
{
SUM += a[i];
if(a[i] % 2 != 0 && a[i] % 3 == 0) cout<<"\t"<< a[i];
if(Max < a[i]) Max = a[i];
}
mình chạy thử nó ra sai, tại sao lại chạy từ 0 đến n, phải <n chứ ta?
còn tính trung bình cộng thì TBC phải kiểu float ????

Cảm ơn bạn đã nhắc nhở mình đã sửa lại:
còn đề 2 là gì thì đã có bạn post đề thi nên rồi đó bạn tự xem nha! Mình đã ghi rõ tên trường ở đó!

vitbau1412
09-05-2011, 08:44 PM
Cảm ơn bạn đã nhắc nhở mình đã sửa lại:
còn đề 2 là gì thì đã có bạn post đề thi nên rồi đó bạn tự xem nha! Mình đã ghi rõ tên trường ở đó!

Hic...TKS...thì ra cái đề ở trang trước
ah, ở bài 1 hàm kiểm tra số nguyên tố, nếu theo code bạn thì số 1 cũng là số nguyên tố
cho mình góp một tí từ hàm của bạn nhé:


int ktSNT (int a)
{
if (a<2)
return 0;
for(int i = 2; i <= (int)sqrt(a*1.0); i++)
if( a % i == 0)
return 0;
return 1;
}

kitti
09-05-2011, 08:49 PM
Hic...TKS...thì ra cái đề ở trang trước
ah, ở bài 1 hàm kiểm tra số nguyên tố, nếu theo code bạn thì số 1 cũng là số nguyên tố
cho mình góp một tí từ hàm của bạn nhé:


int ktSNT (int a)
{
if (a<2)
return 0;
for(int i = 2; i <= (int)sqrt(a*1.0); i++)
if( a % i == 0)
return 0;
return 1;
}


OK mình đã sửa lại cho chuẩn rồi cảm ơn nha!

vitbau1412
09-05-2011, 08:54 PM
Bạn test làm sao mà số 1 lại là số nguyên tố được?
bạn xem lại đi!

Hic...mình lại sai nữa rồi...sao dạo này sai hoài...cho mình sry
lúc mình copy mình chỉ copy nội dung của hàm ktSNT thôi, chứ không copy cái khai báo int ktSNT (const int a)
và do đó trong bài của mình thì lại ghi: int ktSNT (int a) không có chữ const trong khai báo biến a
...vì vậy nó ra sai...mình chưa hiểu tại sao bỏ chữ const đó đi lại sai nhỉ?????

conrongchautien
09-05-2011, 09:03 PM
Hàm kiểm tra số nguyên tố:

int ktSNT (int a)
{
if(a==2) return 1;
if (a<2 || a%2==0) return 0;
for(int i = 3; i*i <= a; i+=2)
if( a % i == 0)
return 0;
return 1;
}

bangtam
10-05-2011, 09:57 PM
giải dùm em đề thi thực hành của em với:
:(|
Đề bài
Cài đặt danh sách sinh viên của một lớp theo dạng cấu trúc, một sinh viên bao
gồm những thông tin sau:
1. MaSV: Xâu ký tự bao gồm 7 ký tự XXXXYYY (XXXX là năm nhập học
của sinh viên, YYY là số thứ tự của sinh viên đó trong khoa đó)
2. HoVaTen : Xâu ký tự tối đa 28 ký tự (chuẩn hóa tên).
3. DiemThi : Số nguyên trong khoảng [23, 30]
Hãy cài đặt những chức năng sau tổ chức theo kiểu thực đơn cho người dùng lựa
chọn :
1. Nhập vào danh sách sinh viên (kết thúc nhập bằng cách nhập Mã SV bằng
ký tự ‘ ’).
2. In ra danh sách sinh viên theo các tùy chọn sau(có phân trang 10 bản
ghi/trang)
a. In toàn bộ sinh viên.
b. In danh sách sinh viên chất lượng cao (điểm thi đại học >=28).
c. In danh sách sinh viên đại trà (điểm thi đại học <28)
3. Sắp xếp danh sách sinh viên theo thứ tự giảm dần của điểm thi đại học và in
ra màn hình danh sách này.
4. Thêm sinh viên mới vào danh sách sao cho danh sách vẫn được sắp xếp
theo thứ tự giảm dần. (chức năng này chỉ được thực hiện sau khi thực hiện
xong chức năng 3).
5. Tìm kiếm thông tin sinh viên (theo mã sinh viên), hiển thị thông tin chi tiết
của sinh viên đó, và xếp loại thuộc sinh viên chất lượng cao hay sinh viên
đại trà.
6. Xóa một thông tin sinh viên khỏi danh sách.
7. Thoát khỏi chương trình.
Chú ý:
Chương trình sử dụng menu, và các hàm cài đặt theo từng chức năng của
bài.
(D:)> em học c nhưng ko giỏi ai giúp em giải bài này viết mã cụ thể dc ko a. sắp tới đề thi lại bọn em sẽ có dạng kiểu này tip (:X)

tranchuong54
16-06-2011, 06:11 AM
de thi tin truong dh bk ha noi 2010 thoi gian 120'

Câu 1:
Cho hàm f(x) = 32x +5 mọi x>=0
Và f(x) = [2log3(-x) +1] /3 mọi x<0
Viết chương trình con tính giá trị hàm số trên và in kết quả ra màn hình ( giá trị của đối số nhập từ bàn phím).
Câu 2:
Viết chương trình nhập n số nguyên từ bàn phím (10<=n<=100) vào mảng, kết thúc quá trình nhập số bằng một chữ cái. Tìm xem có bao nhiêu số thảo mãn điều kiện : số đó bằng số đứng trước nó cộng 3, in ra màn hình các số đó.
Câu 3 :
Viết chương trình nhập 1 chuỗi ký tự từ bàn phím ( có độ dài không quá 100 ký tự kể cả ký tự trắng ), đếm xem có bao nhiêu từ, đưa ra màn hình số từ và xâu đã cho khi đã loại bỏ các ký tự trắng ( các từ được ngăn cách bởi ký tự trắng ).
Câu 4:
Một bản ghi Vật tư có các thông tin ( Tên vật tư : 40 ký tự, Chủng loại : 5 ký tự, Số lượng : Số nguyên, Đơn giá : Số có hai chữ số thập phân, Nguồn gốc : 20 ký tự), Hãy viết chương trình thực hiện các chức năng sau :
1. Nhập các bản ghi về vật tư của một kho hàng từ bàn phím và lưu vào tệp có tên VATTU.DAT( biết rằng một kho có không quá 40 mặt hàng ). Kết thúc quá trình nhập bản ghi khi tên vật tư gồm các ký tự “#####”.
2. Đọc các bản ghi về vật tư từ tệp nói trên vào mảng và sắp xếp các bản ghi trong mảng theo chiều giảm dần của số lượng.
3. In ra màn hình tên các vật tư có nguồn gốc là “NHAPKHAU” và ghi các bản ghi của các vật tư này vào tệp có tên HANGNHAPKHAU.DAT theo thứ tự tăng dần của đơn giá.
Câu 5:
Cho n là số nguyên dương được nhập từ bàn phím, viết chương trình đệ quy tính giá trị của biểu thức sau : S(n) =n!!, trong đó giai thừa cách n!! được định nghĩa như sau :
+ Nếu n=2k+1 thì n!!=1.3.5….(2k+1).
+ Nếu n=2k thì n!!=2.4.6….(2k).
Câu 6:
Viết chương trình tìm bội số chung nhỏ nhất của 2 số nguyên dương a,b nhập từ bàn phím.

tieutuanmay
17-06-2011, 11:19 PM
Xây dựng chương trình quản lý danh sách các hình bao gồm hình tam giác (được tạo bởi 3 đỉnh), hình tròn (tâm và bán kính), hình chữ nhật (đỉnh trái trên, đỉnh phải dưới).
Thiết kế các lớp đối tượng với phương thức nhập, xuất, tính chu vi, diện tích của các hình
Viết chương trình cho phép tạo ra danh sách các hình, tìm hình có chu vi lớn nhất, hình có chu vi nhỏ nhất
yêu cầu phải có tính kế thừa đa hình... ai giúp em với

Panda_dth
20-06-2011, 07:04 AM
Câu 3 :
Viết chương trình nhập 1 chuỗi ký tự từ bàn phím ( có độ dài không quá 100 ký tự kể cả ký tự trắng ), đếm xem có bao nhiêu từ, đưa ra màn hình số từ và xâu đã cho khi đã loại bỏ các ký tự trắng ( các từ được ngăn cách bởi ký tự trắng ).


#include "stdafx.h"
#include <string.h>
#include <stdio.h>
#include <conio.h>

int DemSoTu(char str[])
{
int dem=0;
int n=strlen(str);
str[n]=' ';//Them ki tu ' ' vao cuoi cau de dam bao thuat toan o duoi se dung voi tu nam o cuoi cuoi
str[n+1]='\0'; //Dat ki tu '\0' vao cuoi cau, la dau hieu ket thuc cua mot chuoi
for(int i=0;i<strlen(str);i++)
{
if((str[i]!=' ')&&(str[i+1]==' ')) dem++; //Tim thay mot tu moi => bien 'dem' tang len mot
}
return dem;
}

int main()
{
char cau[100];
printf("Nhap vao mot cau: ");
flushall(); //Xoa bo dem ban phim truoc khi nhap vao mot cau
gets(cau);
printf("So tu trong cau ban vua nhap la: %d",DemSoTu(cau));
getch();
return 0;
}

Câu 5:
Cho n là số nguyên dương được nhập từ bàn phím, viết chương trình đệ quy tính giá trị của biểu thức sau : S(n) =n!!, trong đó giai thừa cách n!! được định nghĩa như sau :
+ Nếu n=2k+1 thì n!!=1.3.5….(2k+1).
+ Nếu n=2k thì n!!=2.4.6….(2k).


long GiaiThuaCach(int n)
{
if(n%2==1) //Neu n la so le thuc goi de quy theo so le
{
if(n==1) return 1;
else return n*GiaiThuaCach(n-2);
}
if(n%2==0) //Neu n la so chan thuc hien goi de quy theo so chan
{
if(n==2) return 2;
else return n*GiaiThuaCach(n-2);
}
}
int main()
{
printf("\nNhap vao mot so nguyen n: ");
int n;
scanf("%d",&n);
printf("n!!= %d",GiaiThuaCach(n));
getch();
return 0;
}

kitti
20-06-2011, 06:31 PM
Câu 1 đề luyện thi trường bách khoa:
Cho hàm f(x) = 32x +5 mọi x>=0
Và f(x) = [2log3(-x) +1] /3 mọi x<0
Viết chương trình con tính giá trị hàm số trên và in kết quả ra màn hình ( giá trị của đối số nhập từ bàn phím).

#include<iostream.h>
#include<math.h>
#include<conio.h>

float fx(float x)
{
if(x >= 0)
return 35*x +5;
else return (2*pow(-x,1.0/3.0) +1)/3;
}

int main()
{
float x;
float X;
cout<<"\n Nhap x: ";
cin>>x;
X = fx(x);
cout<<"\n F(x) = "<<X;
getch();
}
Câu 6:
Viết chương trình tìm bội số chung nhỏ nhất của 2 số nguyên dương a,b nhập từ bàn phím.

#include <stdio.h>
#include <conio.h>
#include <math.h>
int BSCNN(int a,int b)
{
int z;
for(int i=1;i<=b;i++)
{
if((a*i)%b==0)
{
z=(a*i);
break;
}
}
return z;
}
void main()
{
int a,b;
printf("nhap a: ");
scanf("%d%*c",&a);
printf("nhap b: ");
scanf("%d%*c",&b);
printf("boi chung nho nhat la %d",BSCNN(a,b));
getch();
}

peterdrew
20-06-2011, 06:46 PM
Câu 1 đề luyện thi trường bách khoa:
Cho hàm f(x) = 32x +5 mọi x>=0
Và f(x) = [2log3(-x) +1] /3 mọi x<0
Viết chương trình con tính giá trị hàm số trên và in kết quả ra màn hình ( giá trị của đối số nhập từ bàn phím).

#include<iostream.h>
#include<math.h>
#include<conio.h>

float fx(float x)
{
if(x >= 0)
return 35*x +5;
else return (2*pow(-x,1.0/3.0) +1)/3;
}

int main()
{
float x;
float X;
cout<<"\n Nhap x: ";
cin>>x;
X = fx(x);
cout<<"\n F(x) = "<<X;
getch();
}

log3(-x) hay (-x)^(1/3)???? Hình như nhầm lẫn?

kitti
20-06-2011, 06:56 PM
log3(-x) hay (-x)^(1/3)???? Hình như nhầm lẫn?

ta gọi a là log cơ số 3 của -x . -x = 3^a => a = căn bậc 3 của -x (vì cơ số ở đây là hằng số = 3). mà căn bậc 3 của -x = -x^(1/3) => a = -x^(1/3).
cái này là kiến thức toán học. em giải theo phương phá đó nếu sai xin bác chỉ giáo.

beautifulsoul84hung
20-06-2011, 07:01 PM
ta gọi a là log cơ số 3 của -x . -x = 3^a => a = căn bậc 3 của -x (vì cơ số ở đây là hằng số = 3). mà căn bậc 3 của -x = -x^(1/3) => a = -x^(1/3).
cái này là kiến thức toán học. em giải theo phương phá đó nếu sai xin bác chỉ giáo.

các hạ thật pro. thế cho hỏi một chút. nếu -x = 3^a => a = căn bậc 3 của -x
mặt khác -x = a^3 => a = -x^1/3 vậy suy ra 3^a = a^3 =))

peterdrew
20-06-2011, 07:01 PM
ta gọi a là log cơ số 3 của -x . -x = 3^a => a = căn bậc 3 của -x (vì cơ số ở đây là hằng số = 3). mà căn bậc 3 của -x = -x^(1/3) => a = -x^(1/3).
cái này là kiến thức toán học. em giải theo phương phá đó nếu sai xin bác chỉ giáo.

Chưa chắc! Nhìn có vẻ logic đấy, nhưng không đúng.

@beautifulsoul84hung: Đó là một lỗi mà nhiều người chứng minh toán học hay mắc sai lắm! Peter cũng bị trả giá khi một lần thi tham gia một kỳ thi nhỏ trong quảng thời gian là học sinh phổ thông, híc...

kitti
20-06-2011, 07:08 PM
các hạ thật pro. thế cho hỏi một chút. nếu -x = 3^a => a = căn bậc 3 của -x
mặt khác -x = a^3 => a = -x^1/3 vậy suy ra 3^a = a^3 =))
Mình không hề pro đâu nhé. Đúng là mình nhầm. Nếu bạn có cách giải quyết bài này bạn hãy post nên để mọi người cùng xem. Cảm ơn bạn đã góp ý!


Chưa chắc! Nhìn có vẻ logic đấy, nhưng không đúng.

Em nhầm. vậy bác nào có cách tính log đúng chỉ em với.
Cảm ơn bác đã góp ý.

@all:
Hy vọng mọi người cùng giúp sức giải quyết các đề thi còn chưa có đáp án! Cảm ơn mọi người đã đóng góp cho Đề tài!

peterdrew
20-06-2011, 07:16 PM
Cơ sở toán học đã có, chuyển log3(x) về log10() trong math (chuyển như thế nào thì đã có công thức chuyển đổi cơ số rồi nhé), sau đó tính như bình thường!

beautifulsoul84hung
20-06-2011, 07:38 PM
Mình không hề pro đâu nhé. Đúng là mình nhầm. Nếu bạn có cách giải quyết bài này bạn hãy post nên để mọi người cùng xem. Cảm ơn bạn đã góp ý!
Em nhầm. vậy bác nào có cách tính log đúng chỉ em với.
Cảm ơn bác đã góp ý.
@all:
Hy vọng mọi người cùng giúp sức giải quyết các đề thi còn chưa có đáp án! Cảm ơn mọi người đã đóng góp cho Đề tài!

code đc là pro rồi ^^!~. Mình chả code đc đâu chỉ gợi ý.
loga (b) = logc(b)/logc(a) . trong thư viện math.h có log10(x) (http://cplusplus.com/reference/clibrary/cmath/log10/). bạn thay c = 10 rồi tính tiếp :D

kitti
20-06-2011, 07:45 PM
Đính chính lại Câu 1 đề luyện thi trường bách khoa:
Cho hàm f(x) = 32x +5 mọi x>=0
Và f(x) = [2log3(-x) +1] /3 mọi x<0
Viết chương trình con tính giá trị hàm số trên và in kết quả ra màn hình ( giá trị của đối số nhập từ bàn phím).

#include<iostream.h>
#include<math.h>
#include<conio.h>

float fx(float x)
{
if(x >= 0)
return 35*x +5;
else return (2*(log10(-x)/log10(3)) +1)/3;
}

int main()
{
float x;
float X;
cout<<"\n Nhap x: ";
cin>>x;
X = fx(x);
cout<<"\n F(x) = "<<X;
getch();
}

thptnguyenvancu.tsbn
22-06-2011, 11:38 AM
Đề thi cuối kỳ Môn C++ của Đai Học Công Nghệ-DHQGHN
Giảng viên: thầy Lê Sĩ Vinh; Ngày: 22/6/2011;
Time: 60 ph;
Câu 1: Viết chương trình nhập vào hai số nguyên dương không quá 10 chữ số. In ra tổng của chúng.//Mình tưởng làm nhanh nhưng cũng tinh tinh ghê (:d);
Câu 2: Chuẩn hóa xâu ký tự theo điều kiện sau:
+Đầu và cuối xâu không chứa dấu cách;
+Khoảng cách giữa 2 từ không quá 2 dấu cách;
+In hoa ở đầu xâu và sau dấu cách;
-Ví dụ: Nhập vào “ hello world hihi ; ”
In ra:”Hello World Hihi;”
Câu 3-xây dựng phương thức lớp sinh viên có hai phương thức nhập và xuất tên sinh viên;
Câu 4-Tính tổng các số lẻ < 100;
Câu 5: tinh tổng các sô nguyên tố nhỏ hơn 120;
Câu 6:Nhập dữ liệu từ file tên là “number.txt”,gồm dãy các số nguyên , in ra màn hình file đó có bao nhiêu số và tính trung bình cộng của chúng;
Câu 7: viết hàm getNumber(a,b) trong chương trình sau:
Int main()
{ int a,b;
getNumber(a,b);
cout << a+b;}

Bài làm:
Mình gửi bài 2 lên trước, sau mình sẽ gửi nốt bài còn lại;
Bài 2: Chuẩn Hóa:


#include <iostream>
#include <fstream>
#include <cstring>

using namespace std;
char inHoa( char & ch )//chuyen Ky tu thanh In Hoa;
{
if ( ('a' < ch) &&( ch < 'z') )
return (char( int(ch) -32 ));//Neu la chu thuong thi --> chu Hoa;
else
return ch;// Truong hop con lai thi giu nguyen;
}
void chuanHoa( char s[100] )
{
int l = strlen(s);
// Bo dau cach o dau xau;
while ( s[0] == ' ' )
{
for ( int i=0; i<l-1; i++ )
{
s[i] = s[i+1];
}
l--;

s[l] = '\0';
}
// In Hoa Ky tu dau;
s[0] = inHoa(s[0]);
// BO dau cach o cuoi;
while ( s[l-1] == ' ' )
{
l--;
s[l] = '\0';
}
// Bo dau cach o giua;
for ( int i=0; i < strlen(s); i++ )
{
if ( (s[i] == ' ') && (s[i+1]== ' ') )
{
for ( int j=i; j < strlen(s); j++ )
{
s[j] = s[j+1];
}
s[ strlen(s) ] = '\0';

i--;
}
//IN Hoa ky tu sau dau cach;
if ( (s[i] == ' ') && (s[i+1] != ' ') )
s[i+1] = inHoa(s[i+1]);

}
//for ( int i=0; i<strlen(s); i++ )
// if ( s[i] == ' ' )
// s[i+1] = inHoa(s[i+1]);

}
int main()
{

char s[100]= " hello world ;endl ";
chuanHoa(s);
cout << s << "__";

system("pause");
}

kitti
22-06-2011, 10:28 PM
Đề thi cuối kỳ Môn C++ của Đai Học Công Nghệ-DHQGHN
Giảng viên: thầy Lê Sĩ Vinh; Ngày: 22/6/2011;
Time: 60 ph;
Câu 1: Viết chương trình nhập vào hai số nguyên dương không quá 10 chữ số. In ra tổng của chúng.

#include<iostream.h>
#include<conio.h>
#include<string.h>

int main()
{
char a[10],b[10];
int tong[11];
int A[10];
int B[10];
int n, m, k, tg;
nhan:
do
{
cout<<"\n Nhap a: ";
cin>>a;
n = strlen(a);
for(int i = 0; i < n; i++)
{
if(a[i] < 48 || a[i] > 57)
goto nhan;
}
}while(n < 0 || n > 10);
tiep:
do
{
cout<<"\n Nhap b: ";
cin>>b;
m = strlen(b);
for(int i = 0; i < m; i++)
{
if(b[i] < 48 || b[i] > 57)
goto tiep;
}
}while(m < 0 || m > 10);

for(int i = 0; i < n; i++)
{
A[i] = a[i] - 48;
}
for(int i = 0; i < m; i++)
{
B[i] = b[i] - 48;
}
k = 0;
int tam = 0;
if( n > m)
{
int j = m-1;
for(int i = n-1; i >= 0; i--)
{
if(j >= 0)
if( tam + A[i] + B[j] >= 10)
{
tg = (tam + A[i] + B[j]) % 10;
tam = 1;
}
else
{
tg = tam + A[i] + B[j];
tam = 0;
}
else tg = A[i];
tong[k] = tg;
k++;
j--;
}

}
else
{
int j = n-1;
for(int i = n-1; i >= 0; i--)
{
if(j >= 0)
if( tam + B[i] + A[j] >= 10)
{
tg = (tam + B[i] + A[j]) % 10;
tam = 1;
}
else
{
tg = tam + B[i] + A[j];
tam = 0;
}
else tg = B[i];
tong[k] = tg;
k++;
j--;
}
}
if( tam + A[0] + B[0] >= 10)
{
tong[k] = 1;
k++;
}
cout<<"\n Tong la:";
for(int i = k-1; i >= 0; i --)
cout<<tong[i];
getch();
}

beautifulsoul84hung
23-06-2011, 07:40 AM
Đề thi cuối kỳ Môn C++ của Đai Học Công Nghệ-DHQGHN
Giảng viên: thầy Lê Sĩ Vinh; Ngày: 22/6/2011;
Time: 60 ph;
Câu 1: Viết chương trình nhập vào hai số nguyên dương không quá 10 chữ số. In ra tổng của chúng.

#include<iostream.h>
#include<conio.h>
#include<string.h>

int main()
{
char a[10],b[10];
int tong[11];
int A[10];
int B[10];
int n, m, k, tg;
nhan:
do
{
cout<<"\n Nhap a: ";
cin>>a;
n = strlen(a);
for(int i = 0; i < n; i++)
{
if(a[i] < 48 || a[i] > 57)
goto nhan;
}
}while(n < 0 || n > 10);
tiep:
do
{
cout<<"\n Nhap b: ";
cin>>b;
m = strlen(b);
for(int i = 0; i < m; i++)
{
if(b[i] < 48 || b[i] > 57)
goto tiep;
}
}while(m < 0 || m > 10);

for(int i = 0; i < n; i++)
{
A[i] = a[i] - 48;
}
for(int i = 0; i < m; i++)
{
B[i] = b[i] - 48;
}
k = 0;
int tam = 0;
if( n > m)
{
int j = m-1;
for(int i = n-1; i >= 0; i--)
{
if(j >= 0)
if( tam + A[i] + B[j] >= 10)
{
tg = (tam + A[i] + B[j]) % 10;
tam = 1;
}
else
{
tg = tam + A[i] + B[j];
tam = 0;
}
else tg = A[i];
tong[k] = tg;
k++;
j--;
}

}
else
{
int j = n-1;
for(int i = n-1; i >= 0; i--)
{
if(j >= 0)
if( tam + B[i] + A[j] >= 10)
{
tg = (tam + B[i] + A[j]) % 10;
tam = 1;
}
else
{
tg = tam + B[i] + A[j];
tam = 0;
}
else tg = B[i];
tong[k] = tg;
k++;
j--;
}
}
if( tam + A[0] + B[0] >= 10)
{
tong[k] = 1;
k++;
}
cout<<"\n Tong la:";
for(int i = k-1; i >= 0; i --)
cout<<tong[i];
getch();
}

:D Nhanh chân gớm :D Mới thi hum qua.
đề này của mình nữa. Mọi người tham khảo

ĐẠI HỌC CÔNG NGHỆ - ĐHQGHN

câu 1: Nhập N. Liệt kê các số fibonaci <= N;
câu 2: Xây dựng chương trình (Class) quản lý sinh viên: bao gồm tên, điểm toán, điểm văn
a. Xây dựng chương trình sắp xếp thí sinh theo điểm giảm dần <điểm trung bình>
b.làm tròn 0.25->0.5 0.75->1;

xuyenit55
23-06-2011, 11:37 AM
Câu 1: Viết chương trình nhập vào hai số nguyên dương không quá 10 chữ số. In ra tổng của chúng.

dùng atoi này (:#)(:#)
.


#include<iostream>
#include<string.h>
using namespace std;

int main()
{
char *a = new char[10];
char *b = new char[10];
cout << "\nNhap a : ";
cin.getline(a,10);
cout <<"\nNhap b = ";
cin.getline(b,10);
long long int t = atoi(a);
long long int t2 = atoi(b);
cout << "\n Tong cua a va b la : " << t +t2 << endl;
system ("pause");
return 0;
}

peterdrew
23-06-2011, 03:56 PM
dùng atoi này (:#)(:#)
.


#include<iostream>
#include<string.h>
using namespace std;

int main()
{
char *a = new char[10];
char *b = new char[10];
cout << "\nNhap a : ";
cin.getline(a,10);
cout <<"\nNhap b = ";
cin.getline(b,10);
long long int t = atoi(a);
long long int t2 = atoi(b);
cout << "\n Tong cua a va b la : " << t +t2 << endl;
system ("pause");
return 0;
}


Em dùng atoi() thì vẫn bị giới hạn đó thôi, liệu có thực hiện được các dữ liệu > int được không? Em có thể xem lại prototype của function này sẽ rõ.

xuyenit55
23-06-2011, 04:49 PM
Em dùng atoi() thì vẫn bị giới hạn đó thôi, liệu có thực hiện được các dữ liệu > int được không? Em có thể xem lại prototype của function này sẽ rõ.

theo yêu cầu của đề bài là số chữ số giới hạn <10 chữ số , em sử dụng long long int là ok mà !(:#)(:#)

peterdrew
23-06-2011, 04:57 PM
theo yêu cầu của đề bài là số chữ số giới hạn <10 chữ số , em sử dụng long long int là ok mà !(:#)(:#)

Nhưng atoi() của em trả về kiểu gì?

xuyenit55
23-06-2011, 05:00 PM
Nhưng atoi() của em trả về kiểu gì?

atoi trả về kiểu int , em dùng long long int cũng đc mà !

peterdrew
23-06-2011, 05:00 PM
atoi trả về kiểu int , em dùng long long int cũng đc mà !

Dĩ nhiên là được! Nhưng thực tế nó chỉ là int thôi, em hiểu ý anh rồi chứ?

tranchuong54
23-06-2011, 05:21 PM
các bác ơi bài 4 trong đề thi dh back khoa Ha Nội có bác nào giải giùm em ko, mọi người thảo luận cho ý kiến nha. thank các pac.
Câu 4:(đề thi tin học đh bách khoa hà nội 2010)
Một bản ghi Vật tư có các thông tin ( Tên vật tư : 40 ký tự, Chủng loại : 5 ký tự, Số lượng : Số nguyên, Đơn giá : Số có hai chữ số thập phân, Nguồn gốc : 20 ký tự), Hãy viết chương trình thực hiện các chức năng sau :
1. Nhập các bản ghi về vật tư của một kho hàng từ bàn phím và lưu vào tệp có tên VATTU.DAT( biết rằng một kho có không quá 40 mặt hàng ). Kết thúc quá trình nhập bản ghi khi tên vật tư gồm các ký tự “#####”.
2. Đọc các bản ghi về vật tư từ tệp nói trên vào mảng và sắp xếp các bản ghi trong mảng theo chiều giảm dần của số lượng.
3. In ra màn hình tên các vật tư có nguồn gốc là “NHAPKHAU” và ghi các bản ghi của các vật tư này vào tệp có tên HANGNHAPKHAU.DAT theo thứ tự tăng dần của đơn giá.

kitti
23-06-2011, 06:44 PM
câu 1: Nhập N. Liệt kê các số fibonaci <= N;

#include<iostream.h>
#include<conio.h>

long fibonaci(unsigned n)
{
if(n == 0) return 0;
return (n==1)?1: fibonaci(n-1)+fibonaci(n-2);
}

int main()
{
int N;
long x = 0;
cout<<"\n Nhap N: ";
cin>>N;
cout<<"\nBang cac so fibonaci\n";
for (int i = 0; i <= N; i++)
{
if(x != fibonaci(i))
{
x = fibonaci(i);
if(x <= N)
cout<<x<<"\t";
}
}
getch();
}
@beautifulsoul84hung: lần sau nhớ post rõ tên trường.

tranchuong54
02-07-2011, 04:47 PM
em mới sưu tầm một đề thi nữa góp vào topic mời các bác tham khảo nhé.

Đề thi tin học 2009
Trường ĐH Bách Khoa Hà Nội.
Thời gian 120’
Câu 1
Cho hàm số f(x) = { 3x^2 -2x +5 với mọi x >= 0 ; (2x^2 +1)/x với mọi x < 0
Viết chương trình con tính giá trị hàm số trên và in kết quả ra màn hình.
Câu 2
Viết chương trình nhập n số nguyên từ bàn phím ( 2<= n <=52) , kết thúc quá trình nhập số bằng một chữ cái. Đếm xem có bao nhiêu số chia hết cho 3, in ra màn hình các số đó.
Câu 3
Viết chương trình tìm ước chung lớn nhất của 3 số nguyên dương a, b, c nhập từ bàn phím.
Câu 4
Một bản ghi Sinh viên có các thông tin sau: (Họ và Tên: 35 ký tự, Lớp: 5 ký tự, Năm sinh: số nguyên, Số hiệu sinh viên: 7 ký tự, Điểm trung bình các môn học: số có một chữ số thập phân).
Hãy viết chương trình thực hiện các chức năng sau:
1. Nhập các bản ghi sinh viên của một lớp học từ bàn phím và lưu vào tệp có tên SINHVIEN.DAT (biết rằng một lớp không có quá 50 sinh viên). Kết thúc quá trình nhập bản ghi bằng các ký tự ‘&&&’.
2. Đọc các bản ghi về sinh viên từ tệp nói trên vào mảng và sắp xếp các bản ghi trong mảng theo chiều tăng dần của số hiệu sinh viên.
3. In ra màn hình Họ và tên các sinh viên có điểm trung bình >=7,0 và ghi các bản ghi của các sinh viên này vào tệp có tên LOAIKHA.DAT theo thứ tự tăng dần của số hiệu sinh viên
Câu 5.
Viết chương trình đệ quy tính giá trị của dãy số được xác định theo công thức sau:
U_1=U_2=1 và U_{n}=4U_{n-1}+3U_{n-2} với mọi n>=3.

Câu 6.
Viết chương trình thực hiện nhập n xâu từ bàn phím (n cũng được nhập từ bàn phím). In ra xâu cuối cùng có độ dài lớn nhất.
Cán bộ coi thi ko giải thích gì thêm

xuyenit55
02-07-2011, 07:52 PM
bài 6 !


Viết chương trình thực hiện nhập n xâu từ bàn phím (n cũng được nhập từ bàn phím). In ra xâu cuối cùng có độ dài lớn nhất.



/*
Name:
Copyright:
Author: xuyenit55
Date: 02/07/11 19:14
Description: Viet chuong trình thuc hien nhap xau va tim xau co do dai lon nhat
*/
#include<iostream>
#include<string>
using namespace std;

int main()
{

char *a[10];
int n , i;
cout << "\nNhap so luong chuoi ki tu : ";
cin >> n;
for ( i = 0 ; i < n ; i++)
{
a[i] = new char [100];
cout << "\nNhap xau thu " << i+1 << " : " ;
fflush(stdin);
cin.getline(a[i] ,100);

}
for ( i = 0 ; i < n ; i++)
{
if ( strlen(a[0]) < strlen(a[i]))
{
strcpy(a[0] ,a[i]);
}
}
cout << "\nXau co do dai lon nhat la : " << a[0] << endl;
system ("pause");
return 0;
}

ps : có ai viết hộ mình rõ bài số 5 đc không ? :D

peterdrew
02-07-2011, 08:05 PM
bài 6 !




/*
Name:
Copyright:
Author: xuyenit55
Date: 02/07/11 19:14
Description: Viet chuong trình thuc hien nhap xau va tim xau co do dai lon nhat
*/
#include<iostream>
#include<string>
using namespace std;

int main()
{

char *a[10];
int n , i;
cout << "\nNhap so luong chuoi ki tu : ";
cin >> n;
for ( i = 0 ; i < n ; i++)
{
a[i] = new char [100];
cout << "\nNhap xau thu " << i+1 << " : " ;
fflush(stdin);
cin.getline(a[i] ,100);

}
for ( i = 0 ; i < n ; i++)
{
if ( strlen(a[0]) < strlen(a[i]))
{
strcpy(a[0] ,a[i]);
}
}
cout << "\nXau co do dai lon nhat la : " << a[0] << endl;
system ("pause");
return 0;
}

ps : có ai viết hộ mình rõ bài số 5 đc không ? :D

Em viết code nhiều rồi mà vẫn chưa lên tay được! Có lẽ đây là những code cơ bản mà anh có thể đánh lỗi em ngay vì Memory leak, phải vậy không?

xuyenit55
02-07-2011, 08:19 PM
Em viết code nhiều rồi mà vẫn chưa lên tay được! Có lẽ đây là những code cơ bản mà anh có thể đánh lỗi em ngay vì Memory leak, phải vậy không?

anh chỉ dùm em với , cái phần xâu này em vẫn chưa nắm rõ đc kĩ !

peterdrew
02-07-2011, 08:35 PM
Vấn đề không phải là thao tác xâu, về memory leak trên diễn đàn có rồi đó em, em thử search để hiểu sâu hơn thôi. Nói đơn giản nó là: Nếu em Cấp phát thì phải có Giải phóng, việc làm trên của em không chuẩn ở khía cạnh này, chúc em code tốt và hãy luôn nhớ những nguyên tắc cơ bản trên một ngôn ngữ,

p/s: Anh lâu rồi không động đến code, chỉ nhìn code để phán lung tung thôi, có ai đó lỗi thì bắt lỗi đó và cảnh báo thôi chứ giờ mà động đến code chắc anh tiêu mất.

beautifulsoul84hung
03-07-2011, 01:54 AM
ps : có ai viết hộ mình rõ bài số 5 đc không ? :D

bài này bạn ý viết sai đề bài rồi bạn :D
Đề bài như trên thì .... :( :D <chắc bạn xuyến hỏi đểu :-P>

tranchuong54
03-07-2011, 04:04 PM
bài này bạn ý viết sai đề bài rồi bạn :D
Đề bài như trên thì .... :( :D <chắc bạn xuyến hỏi đểu :-P>

đề bài câu 5 có thế thui, em viết thêm phần ghi chú vào đó rùi.

beautifulsoul84hung
03-07-2011, 06:57 PM
đề bài câu 5 có thế thui, em viết thêm phần ghi chú vào đó rùi.

Làm sao mà đề bài như thế này đc hả bạn ?


U1 = U2 = 1; Un = 4Un + 3Un-2 với mọi n >= 3 (ghi chú: U1, U2, Un với 1, 2, n là chỉ số dưới nhé. em viết trên word nhưng copy sang đây nó lại hiện như thế, hix)
nếu Un = 4Un + 3Un - 2 = 7Un - 2;
suy ra 6Un = 2 vậy Un = 1/ 3 à [:-([:-([:-(
Mình nghĩ bạn nên coi lại cái đề bài (8-)>(8-)>(8-)>(8-)>

peterdrew
03-07-2011, 07:05 PM
đề bài câu 5 có thế thui, em viết thêm phần ghi chú vào đó rùi.

Nghiên cứu cách gõ Latex tại diễn đàn đi, vì như thế các công thức toán học mới được rõ ràng. Nếu không thì bạn nên chụp một hình ảnh về công thức đó và post lên. OK?

Có phải ý bạn muốn là U_1=U_2=1 và U_{n}=4U_{n-1}+3U_{n-2} với mọi n>=3.

Nếu như vậy thì Peter đơn cử một công thức tính cho U_{n} nhé (còn phần code thì dành cho các bạn):

U_{n}=\frac{1}{14}[(7-\sqrt{7}){(2+\sqrt{7})}^{n-1}+(7+\sqrt{7}){(2-\sqrt{7})}^{n-1}]


p/s: Đây là kết quả của việc giải phương trình đặc trưng của dãy số trên.

beautifulsoul84hung
03-07-2011, 07:43 PM
Nếu đề bài như anh peter nói thì mình xin góp lời giải



#include<stdio.h>
#include<conio.h>

int ketqua (int n)
{
if ((n==1) || (n==2))
return 1;
else return (4*ketqua(n-1) + 3*ketqua(n-2));
}

int main ()
{
int n;
do
{
printf ("Nhap N: "); scanf ("%d", &n);
}while (n < 0); // bị sai phải sửa thành (n <= 0)
printf ("Ket qua cua bieu thuc la: %d", ketqua (n));
return 0;
}


Những bài như thế này thì ko nên làm theo đệ quy vì khi gọi với N lớn thì chi phí tăng theo cấp số nhân :D

peterdrew
03-07-2011, 07:50 PM
Nếu đề bài như anh peter nói thì mình xin góp lời giải



#include<stdio.h>
#include<conio.h>

int ketqua (int n)
{
if ((n==1) || (n==2))
return 1;
else return (4*ketqua(n-1) + 3*ketqua(n-2)); // Nếu n mà nhỏ hơn 1 thì đoạn này tiêu mất!
}

int main ()
{
int n;
do
{
printf ("Nhap N: "); scanf ("%d", &n);
}while (n < 0);
printf ("Ket qua cua bieu thuc la: %d", ketqua (n));
return 0;
}


Những bài như thế này thì ko nên làm theo đệ quy vì khi gọi với N lớn thì chi phí tăng theo cấp số nhân :D

See my comment in code, OK? Have fun!

beautifulsoul84hung
03-07-2011, 07:52 PM
See my comment in code, OK? Have fun!

Trong hàm main em để do while mà anh pete :D

peterdrew
03-07-2011, 07:54 PM
Trong hàm main em để do while mà anh pete :D

Vẫn die mà, hi hi

beautifulsoul84hung
03-07-2011, 08:02 PM
Vẫn die mà, hi hi

Ấy chết em sơ ý quá (:=(|)(:=(|)(:=(|)(:=(|)
em sửa lại. Cám ơn anh peter ):)T):)T):)T):)T):)T):)T):)T



#include<stdio.h>
#include<conio.h>

int ketqua (int n)
{
if ((n==1) || (n==2))
return 1;
else return (4*ketqua(n-1) + 3*ketqua(n-2));
}


int main ()
{
int n;
do
{
printf ("Nhap N: "); scanf ("%d", &n);
}while (n <= 0);
printf ("Ket qua cua bieu thuc la: %d", ketqua (n));
return 0;
}

tranchuong54
04-07-2011, 12:46 AM
Nghiên cứu cách gõ Latex tại diễn đàn đi, vì như thế các công thức toán học mới được rõ ràng. Nếu không thì bạn nên chụp một hình ảnh về công thức đó và post lên. OK?

Có phải ý bạn muốn là U_1=U_2=1 và U_{n}=4U_{n-1}+3U_{n-2} với mọi n>=3.

Nếu như vậy thì Peter đơn cử một công thức tính cho U_{n} nhé (còn phần code thì dành cho các bạn):

U_{n}=\frac{1}{14}[(7-\sqrt{7}){(2+\sqrt{7})}^{n-1}+(7+\sqrt{7}){(2-\sqrt{7})}^{n-1}]


p/s: Đây là kết quả của việc giải phương trình đặc trưng của dãy số trên.

đề bài câu 5 dhbk đúng như bác peter rùi. thanks bác nha. sao bác viết đc các chỉ số này giỏi thế, nghiên cứu cách gõ latex ở đâu vậy bác.

tranchuong54
04-07-2011, 06:44 AM
oh. em viết theo kiểu latex đc rùi. có pác nào có key hoặc ***** của phần mềm latex: MTW6.0b không vậy, em search trên mạng nhưng down về ko cài đc hix. pác nào có thì post lên cho em và mọi người cùng chia sẻ nhé, thank các pác.

kids301090
04-07-2011, 05:52 PM
Nếu đề bài như anh peter nói thì mình xin góp lời giải



#include<stdio.h>
#include<conio.h>

int ketqua (int n)
{
if ((n==1) || (n==2))
return 1;
else return (4*ketqua(n-1) + 3*ketqua(n-2));
}

int main ()
{
int n;
do
{
printf ("Nhap N: "); scanf ("%d", &n);
}while (n < 0); // bị sai phải sửa thành (n <= 0)
printf ("Ket qua cua bieu thuc la: %d", ketqua (n));
return 0;
}


Những bài như thế này thì ko nên làm theo đệ quy vì khi gọi với N lớn thì chi phí tăng theo cấp số nhân :D
Nếu theo đề bài này:
Câu 5.
Viết chương trình đệ quy tính giá trị của dãy số được xác định theo công thức sau:
và với mọi n>=3.
Thì code của hung chương trình có ngủm với n=20 chẳng hạn :D:D

beautifulsoul84hung
04-07-2011, 07:28 PM
Nếu theo đề bài này:
Câu 5.
Viết chương trình đệ quy tính giá trị của dãy số được xác định theo công thức sau:
Thì code của hung chương trình có ngủm với n=20 chẳng hạn :D:D

Câu này mình ko hiểu lắm ? Bạn viết rõ một chút đc ko ?
Còn theo mình nghĩ n < 3 cũng chấp nhận đc hì hì, Ko nên bắt lỗi người dùng, người lập trình nên nới tay :D

pkthanh92
05-07-2011, 10:35 PM
@beautyfulsoul: tức là phải giới hạn cận trên nữa.
dùng double thì n đến 463 là kịch
long long thì n đến 31
long int thì chỉ lên được 19 thôi.

trunghai_Neo
07-07-2011, 11:53 PM
đề thi đại học Hoa Sen ,các pro giải giúp mình với

Viết chương trình tính lương cho cán bộ công nhân viên. Thông tin bảng lương như sau
Mã NV Họ tên LCB Ngày công Tiền lương BHXH BHYT Thực lãnh
01 Tran A 100 24
02 Tran B 100 20
03 Tran C 100 28
Cách tính:
- Tiền lương = (LCB/22)*Ngày công
- BHXH = Tiền lương *5%
- BHYT = Tiền lương *1%
- Thực lãnh = Tiền lương – BHXH – BHYT
Viết chương trình theo các hàm sau:
- Nhập danh sách lương nhân viên, lưu vào file luong.txt
- Đọc nội dung file luong.txt và in ra màn hình
- Viết hàm tính tổng ngày công mà toàn bộ nhân viên đã làm
- Tìm người có tiền thực lãnh ít nhất
- Viết hàm tính lương trung bình phải trả cho 1 nhân viên
- Sắp xếp theo tiền thực lãnh giảm dần

anhminh87
29-07-2011, 07:00 PM
1/ Viết chương trình tính tổng, hiệu, tích, thương hai số nguyên được nhập từ bàn phím
2/ Viết chương trình nhập tìm số lớn nhất của 3 số nguyên được nhập từ bàn phím
3/ Viết chương trình nhập vào một mảng số nguyên từ bàn phím và tính :
Tổng mảng
Tích mảng
Tìm giá trị lớn nhất trong mảng và xuất giá trị lớn nhất và chỉ số của nó ra màn hình

4/ Viết chương trình nhập vào hai mảng một chiều A và B có cùng số phần tử là N
phần tử, sau đó viết các hàm để thực hiện:
a/ Chọn 1 để nhập mảng A và mảng B
b/ Chọn 2 để cộng mảng C = A + B
c/ Chọn 2 để trừ mảng C = A - B
d/ Chon 4 để thoát chương trình, trước khi thoát chương trình phải xuất hiện
thông báo, nếu nhấn K hoặc k thì thoát.

5/ Viết chương trình nhập vào một số nguyên N. Các giá trị từ 1 đến N nếu là số chẳn
thì tính giai thừa chẳn và nếu là các số lẻ thì tính giai thừa lẻ.
Ví dụ: Khi nhập vào N=6 ( 1 * 2 * 3 * 4 * 5 * 6) ta có:
Gtc = 2 * 4 * 6
Gtl = 1 * 3 * 5

kid_191
30-07-2011, 11:39 AM
Bài 1: MA TRẬN
Một ma trận mxn được chứa trong một file văn bản có tên MATRAN.INP gồm: dòng đầu chứa hai số nguyên dương m, n. m dòng tiếp theo mỗi dòng chứa n phần tử của từng hàng của ma trận. Hãy viết chương trình đọc dữ liệu từ file MT.INP, tính tổng từng hàng của ma trận và ghi vào file văn bản có tên MATRAN.OUT trong đó, dòng đầu chứa số nguyên m, dòng thứ hai chứa tổng từng hàng của ma trận (0<m,n<=20).
Ví dụ:
MATRAN.INP MATRAN.OUT
5 4
3 8 –1 5
5 7 –8 0
4 –3 1 6
2 4 –1 7
3 6 8 -5 5
15 4 8 12 12

Bài 2: DỊCH SARS
Một cơ quan có N nhân viên được đánh số thứ tự từ 1 đến N. Mỗi người có một phòng làm việc riêng của mình. Do nhu cầu công việc, hàng ngày mỗi nhân viên có thể phải tiếp xúc với một số nhân viên khác. Vào một ngày làm việc bình thường, có một nhân viên bị nhiễm bệnh SARS, nhưng do không biết nên người này vẫn đi làm. Đến cuối ngày làm việc người ta mới phát hiện ra người nhiễm bệnh SARS đầu tiên, Khả năng lây lan của SARS rất nhanh chóng: một người nhiễm bệnh nếu tiếp xúc với một người khác có thể sẽ truyền bệnh cho người này.
Yêu cầu
Hãy giúp các bác sỹ kiểm tra xem cuối ngày hôm đó, có tối đa bao nhiêu người có thể sẽ nhiễm bệnh và đó là những người nào để còn cách ly. Người có tiếp xúc với người nhiễm bệnh được coi là người nhiễm bệnh.
Dữ liệu:
Dữ liệu vào từ file văn bản SARS.INP.
 Dòng đầu tiên ghi 2 số tự nhiên N và K (1< N  250, 1 K  N) tương ứng là số lượng người làm việc trong toà nhà và số hiệu của nhân viên đã nhiễm SARS đầu tiên.
 Dòng thứ I trong N dòng tiếp theo ghi danh sách những người có tiếp xúc với người thứ I theo cách sau: số đầu tiên J của dòng là tổng số nhân viên đã gặp người thứ I, tiếp theo là J số tự nhiên lần lượt là số hiệu của các nhân viên đó. Nếu J = 0 có nghĩa rằng không ai đã tiếp xúc với người thứ I.
Kết quả
Kết quả ghi ra file văn bản SARS.OUT như sau:
 Dòng đầu tiên ghi số S là tổng số người có thể bị lây nhiễm SARS.
 Dòng thứ 2 liệt kê tất cả các người có thể bị lây nhiễm SARS cần cách ly, danh sách cần được sắp theo thứ tự tăng dần của số hiệu nhân viên.
Trong file dữ liệu vào và file kết quả, các số trên một dòng cách nhau ít nhất một dấu cách.
Ví dụ:
SARS.INP SARS.OUT
5 1
2 2 3
2 1 3
1 2
1 5
1 4 3
1 2 3

Bài 3: Cấp số cộng
Cho một dãy gồm N số nguyên a1, a2, a3,..,an với |ai|  30000 (i = 1, 2,...,N). Hãy tìm trong dãy đó một dãy con dài nhất lập thành một cấp số cộng có công sai là d (0 < d  100).
Dữ liệu vào: đọc từ file văn bản CSCONG. INP, trong đó
- Dòng đầu ghi số N
- Dòng tiếp theo chứa N phần tử của dãy.
Dữ liệu ra: ghi ra file văn bản CSCONG.OUT, gồm
- Dòng đầu ghi số M là số phần tử và công sai d của dãy cấp số cộng tìm được.
- Dòng tiếp theo ghi dãy cấp số cộng từ dãy ban đầu.
Ví dụ:
CSCONG.INP CSCONG.OUT
10
1 2 3 -6 3 8 5 4 7 9 4 2
1 3 7 9

Bài 4: XẾP HÀNG MUA VÉ
Có N người xếp hàng mua vé. Ta đánh số những người xếp hàng từ 1 đến N theo thứ tự đúng trong hàng. Thời gian phục vụ bán vé cho người thứ i là ti. Mỗi người cần mua một vé nhưng được quyền mua tối đa 2 vé, vì thế một số người có thể nhờ người đứng ngay trước mình mua hộ. Người thứ i nhận mua vé cho người thứ i+1 thì thời gian mua vé cho 2 người là ri. Tìm phương án sao cho N người đều có vé với thời gian ít nhất.
Dữ liệu vào từ file văn bản TICK.INP có cấu trúc:
- Dòng thứ nhất ghi số N (1 < N ≤ 2000);
- Dòng thứ hai ghi N số nguyên dương t1, t2, …, tN
- Dòng thứ ba ghi N – 1 số r1, r2, …, rN-1
Kết quả ghi ra file văn bản TICK.OUT gồm:
- Dòng thứ nhất ghi tổng thời gian phục vụ bán vé
- Dòng tiếp theo ghi chỉ số của các khách hàng cần rời khỏi hàng (nếu không có ai thì quy ước ghi số 0).
Ví dụ:
TICK.INP TICK.OUT
5
2 5 7 8 4
3 9 10 10 17
1 0 3 0 5


------------------------------------ Hết --------------------------------------
mình xin cung cấp 1 bài ktra nữa (:-*)

jimhawkins
01-10-2011, 03:34 PM
các bạn cho mình hỏi tý bài này
/* Nhap vao 1 day so nguyen tu ban phim den khi gap so 0 thi dung. In ra tong cac so nguyen duong */
#include <stdio.h>
#include <conio.h>
void main(void)
{
int in, itong = 0;
for(; ;)
{
printf("Nhap vao 1 so nguyen: ");
scanf("%d", &in);
if (in < 0)
continue; //in < 0 quay nguoc len dau vong lap
if (in == 0)
break; //in = 0 thoat vong lap
itong += in;
}
printf("Tong: %d.\n", itong);
getch();
}

bài này mình không hiểu khi mình nhập số liệu từ bàn phím là (9,2,-1) nó tính tổng là 11 , nó chỉ tính số dương chứ ko tính số âm
còn chỗ này nữa if (in < 0) bài này yêu cầu là nhập bao nhiêu số tùy ý , cứ khi nào nhập số 0 thì nó mới tính tổng (vậy thì in mình nhập vào là số dưong cũng đuoc miễn là khác không tại sao cứ nhất thiết là (in<0) ai trả lời cho mình chỗ này dùm nha ?(:D)
còn chỗ này nữa mình thay if(in<0) bằng if(in !=0) tại sao không đuọc , vì đề yêu cầu chỉ khi nào nhập tới số không mới tính tổng còn không thì cứ nhập khi nào tới nhập sô 0 nó mới tính (khi mình thay bằng lện if(in !=0) thì nó tính tổng bằng 0 why why
ai chỉ mình với ? ?

CTK41
05-10-2011, 12:10 AM
Các bạn giải thích cho mình mấy câu trắc nghiệm nhé

jeremyviet
09-10-2011, 09:18 PM
ĐỀ THI SỐ 1: LIÊN THÔNG CAO ĐẲNG – ĐẠI HỌC
TRƯỜNG HV BƯU CHÍNH VIỄN THÔNG
MÔN THI KĨ THUẬT LẬP TRÌNH
Thời gian 180 phút
Câu 1 (1.5đ)
Viết chương trình “tuyển sinh liên thông đại học”: nhập mã khu vực, mã đối tượng, điểm thi 2 môn CTDL và KTLT. Hiện thông báo thí sinh đậu hay rớt. biết rằng:
Khu vực Điểm ưu tiên
A 1.75
B 1.25
C 1.0
D 0.5
Khác 0.25

Đối tượng Điểm ưu tiên
1 1.5
2 1.25
3 1.0
4 0.5
Khác 0.0

Cách xét tuyển:
+ Thí sinh nếu có ít nhất một môn dưới 5 điểm thì rớt
+ Tổng điểm = điểm môn 1 + điểm môn 2 + điểm khu vực + điểm ưu tiên đối tượng. Nếu tổng điểm >= 12 điểm thì đậu, ngược lại thì rớt

Câu 2 (0.75đ)
Viết hàm tìm số lớn nhất trong mảng chứa các số nguyên, mảng có m hàng, n cột. Hàm trả về số lớn nhất tìm được.
Câu 3 (1.5 đ)
Cho các dãy số an như sau:
a0 = -1; a1 =1;
an =2an-1 -3an-2 (n>1)
Hãy viết hàm tính số hạng thứ n bằng hai cách:
a. sử dụng đệ qui
b. b. không sử dụng đệ quy

Câu 4(2.25đ)
Viết chương trình giải hệ phương trình gồm n phương trình và n ẩn, có dạng sau: a1,n Xn =b1
A2,n-1 xn-1 + a2,n xn =b2

an,1 x1 + an,2 x2 +…+an,n-1 xn-1 + an,n xn =bn
(các ai,j khác 0).
Chương trình cần viết các hàm sau: hàm nhập hệ phương trình, hàm xuất hệ phương trình, hàm giải hệ phương trình, hàm main.

Câu 5(1.5 đ)
Viết chương trình liệt kê các dãy nhị phân chiều dài là n và có số bít là số chẵn.

Câu 6(2.5 đ)
Viết chương trình cộng hai ma trận, biết rằng ma trận được lưu trong file văn bản và ma trận tổng cũng được ghi trong file văn bản. Chương trình cần viết các hàm sau: hàm nhập ma trận ghi vào file; Hàm đọc file ma trận, xuất ra màn hình, hàm cộng hai file ma trận, kết quả lưu vào file ma trận, hàm main. Biết rằng file ma trận có dạng sau
2 3
1 5 3
3 1 2
Hàng đầu có hai số nguyên là số hàng, số cột của ma trận, các hàm tiếp theo là dữ liệu của ma trận

nguyenvanducls92
14-10-2011, 08:49 AM
MỤC TIÊU

Học cách tổ chức một chương trình với nhiều chức năng.
Học cách kết hợp các kiến thức đã học về vòng lặp, mảng, hàm, struct…
Học cách gỡ lỗi chương trình.
Tạo hứng thú xây dựng những chương trình hoàn chỉnh hơn.

YÊU CẦU CHUNG

Xây dựng chương trình quản lý câu hỏi thi trắc nghiệm.

MÔ TẢ YÊU CẦU

Chương trình gồm có các chức năng chính sau:
Quản lý cấu hỏi/Trả lời

CHI TIẾT

Gợi ý cách hoạt động của chương trình như sau:

======Quản lý Câu hỏi/Trả lời=======
1. Xem danh sách Q/A
2. Cập nhật Q/A
3. Tạo mới một Q/A
0. Thoát.
#Chọn:3
=====Thêm mới một Q/A=======
Nhập mã danh mục: G001
Đây là lĩnh vực Kiến thức phổ thông
Nhập mã câu hỏi: QA0001
Câu hỏi: Ngày quốc khánh nước CHXHCN Việt Nam?
Điểm số: 1.5
Đáp án 1: 1/2/1945
Đúng/Sai?(D/S) S
Đáp án 2: 2/9/1945
Đúng/Sai?(D/S) D
Thêm đáp án nữa?(Y/N) Y
Đáp án 3: 2/9/1946
Đúng/Sai?(D/S) S
Thêm đáp án nữa?(Y/N) N
Bạn muốn lưu câu hỏi này? (Y/N) Y
====Quản lý Câu hỏi/Trả lời========
1. Xem danh sách Q/A
2. Cập nhật Q/A
3. Tạo mới một Q/A
0. Thoát.
#Chọn: 2
Nhập mã danh mục: G001
Đây là lĩnh vực Kiến thức phổ thông
Nhập mã câu hỏi: QA0001
Bạn muốn sửa hay xóa câu hỏi này? (S/X) S
Sửa Câu hỏi: Ngày quốc khánh nước CHXHCN Việt Nam?
Sửa Điểm số: 0.5
Sửa Đáp án 1: 1/2/1945
Đúng/Sai/Xóa?(D/S/X) S
Sửa Đáp án 2: 2/9/1945
Đúng/Sai/Xóa?(D/S/X) D
Sửa Đáp án 3: 2/9/1946
Đúng/Sai/Xóa?(D/S/X) S
Thêm đáp án nữa?(Y/N) N
Bạn muốn lưu câu hỏi này? (Y/N) N
======Quản lý Câu hỏi/Trả lời=======
1. Xem danh sách Q/A
2. Cập nhật Q/A
3. Tạo mới một Q/A
0. Thoát.
#Chọn: 1
======Danh sách các câu hỏi=========
1. Kiến thức phổ thông
2. C Programming
3. Toán
....
....
0. Trờ về menu trước.
#Chọn: 1
======Kiến thức phổ thông========
Kiến thức phổ thông có tổng cộng 130 câu.
Bạn muốn xem câu hỏi nào? (Nhập mã câu hỏi)
....
======Danh sách các câu hỏi=========
1. Kiến thức phổ thông
2. C Programming
3. Toán
....
....
0. Thoát.
#Chọn: 0
====Quản lý Câu hỏi/Trả lời========
1. Xem danh sách Q/A
2. Cập nhật Q/A
3. Tạo mới một Q/A
0. Thoát.
#Chọn: 0
=================================
Chúc thành công!


Đánh giá
Mức 1 Thiết kế được giao diện hợp lý.
Thiết kế các hàm chức năng hợp lý.
Thiết kế struct hợp lý.
Thực hiện được cơ bản các chức năng.
Mức 2 Thực hiện đầy đủ các chức năng của chương trình.
Mức 3 Sử dụng con trỏ cấp phát động cho các danh sách.
Thiết kế giao diện đẹp hợp lý.
Các chức năng hoạt động tốt không lỗi.

anhkullpro
25-10-2011, 11:12 AM
Đề thi giữa kì 5B k55 việt nhật BKHN
1 .Stack thường các bộ biên dịch dùng để đánh giá các biểu thức và sinh ngôn ngữ máy. Trong
bài này, chúng ta nghiên cứu cách bộ biên dịch đánh giá các biểu thức toán học chỉ bao gồm
hằng số, các phép toán và ( ).
Con người thường viết biểu thức dạng 3 + 4 hoặc 7 / 9, với các toán tử (+ , *, …) được viết
giữa các toán hạng (3, 4, …). Cách viết này gọi là dạng trung tố. Máy tính hiểu dạng hậu tố
với các toán tử được viết sau các toán hạng. Dạng hậu tố của các biểu thức trên là 3 4 + và 7 9
/.
Để đánh giá biểu thức trung tố phức tạp, trình biên dịch trước tiên chuyển nó sang dạng hậu tố
và đánh giá biểu thức hậu tố. Các thuật toán này chỉ cần một phép duyệt từ trái qua phải với
biểu thức hậu tố này, sử dụng một stack để hỗ trợ việc tính toán.
Hãy viết 1 chương trình chuyển biểu thức trung tố về hậu tố. Ví dụ với đầu vào là
(6 + 2) * 5 - 8 / 4
Đầu ra là
6 2 + 5 * 8 4 / -
Chương trình cần đọc biểu thức vào dưới dạng mảng ký tự infix và sử dụng stack để tạo biểu
thức hậu tố postfix. Thuật toán tạo biểu thức hậu tố như sau:
1. Đẩy ngoặc trái ‘(‘ vào stack.
2. Thêm ngoặc phải vào cuối infix.
3. Khi stack chưa rỗng, đọc infix từ trái sang phải và làm các việc sau:
• Nếu ký tự hiện tại trong infix là số, chép nó thành phần tử tiếp theo của postfix.
• Nếu ký tự hiện tại trong infix là ‘(‘, đẩy vào stack.
• Nếu ký tự hiện tại trong infix là toán tử,
o Đẩy toán tử (nếu có) tại đỉnh stack nếu nó có thứ tự ưu tiên bằng hoặc cao hơn
toán tử hiện tại, đưa toán tử vừa đẩy vào postfix.
o Đẩy ký tự hiện tại từ infix vào stack.
• Nếu ký tự hiện tại trong infix là đóng ngoặc:
o Đẩy toán tử tại đỉnh stack và đưa chúng vào postfix đến khi gặp ký tự mở
ngoặc tại đỉnh stack.
o Đẩy dấu mở ngoặc từ stack và bỏ nó đi.

Các phép toán sau được sử dụng trong biểu thức: + - * / ^ (mũ) % (chia lấy phần dư)
Các hàm sử dụng trong chương trình:
a. Hàm convertToPostfix chuyển biểu thức trung tố về hậu tố
b. Hàm isOperator kiểm tra xâu đầu vào có phải là toán tử không
c. Hàm precedence kiểm tra mức độ ưu tiên của toán tử 1 so với toán tử 2. Hàm trả về 1
nếu toán tử 1 có mức độ ưu tiên < toán tử 2, 0 nếu toán tử 1 có mức độ ưu tiên = toán
tử 2, -1 nếu toán tử 1 có mức độ ưu tiên > toán tử 2.
d. Hàm push đẩy giá trị vào stack
e. Hàm pop lấy 1 phần tử ra khỏi stack
f. Hàm stackTop trả về đỉnh của stack mà không cần đẩy phần tử ra khỏi stack.
g. Hàm isEmpty kiểm tra stack có rỗng không
h. Hàm printStack in nội dung stack

anhnhatuit
31-10-2011, 02:46 PM
trong chuong trinh cho ket luan nghiem phai la b chu lam sao ma b^2 duoc.tac gia xem lai kai

yeutin
31-10-2011, 10:38 PM
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<math.h>

int gptb2(float a, float b, float c, float* x1, float* x2)
{
float del;
del = b*b - (4*a*c);
if(del < 0) return -1;
else
{
*x1 = (b*b - sqrt(del))/ (2*a);
*x2 = (b*b + sqrt(del))/ (2*a);
}
return 1;
}
int main()
{
clrscr();
float a, b, c, x1, x2;
printf("\nNhap a, b, c:");
scanf("%f%f%f", &a,&b,&c);
fflush(stdin);
if(a == 0)printf("X = %.2f", -c/b);
else
{
if(gptb2(a,b,c,&x1,&x2) == -1)
printf("\nphuong trinh vo nghiem");
else
{
printf("\nx1 = %.2f", x1);
printf("\nx2 = %.2f", x2);
}
}
getch();
return 0;
}
Bác kitti ơi nghiệm sao lại là b*b - ... trường hợp a==0 sao ko xét b==0 và c==0 ạ

kitti
31-10-2011, 10:45 PM
ồ nhầm! sẽ sửa lại!
cảm ơn bạn nhắc nhở!
Bài này chỉ xét trường hợp a==0 còn các trường hợp còn lại nếu muốn các bạn hoàn toàn có thể thêm vào!

daohung12345
27-11-2011, 08:13 AM
Bài 5 em thấy làm cách này dễ hiểu cho newbie hơn vì không có hàm malloc()


#include <stdio.h>
#include <conio.h>

int snt(int so)
{
int i,dem=0;
for(i=1;i<int(sqrt(so));i++)
if(so%i==0)
dem++;

return(dem);
}
main()
{
int n,a,dem=0,s,i;
printf("Nhap vao n :");
scanf("%d",&n);
for(i=3;dem<n;i++)
{
if((s=snt(i))==1)
{printf("%8d",i);dem++;}
}
printf("\n");
return main();
}

tiendoan1989
07-12-2011, 09:00 PM
Cho phép người dùng nhập vào số nguyên a từ 0 đến 9 cùng chiều dài H và chiều rộng W. Xuất ra màn hình chữ số điện tử của a với chiều dài H và chiều rộng W tương ứng.
Ví dụ: Nhập a = 5, H = 7, W = 5.Xuất ra màn hình con số 5 bằng dấu sao (*)

new_soul_693
09-12-2011, 02:36 AM
Cho dãy giá trị(ai,bi)i=1..n sao cho a1<a2<....<an.Cho a rơi vào 1 trong những khoảng a1,a2...,an.Lập chuong trinh (phương pháp tuần tự hoặc nhị phân)khoảng i sao cho a(i+1)>=a>=a(i) và xác định giá trị b tương ứng theo tỉ lệ tuyến tính đối với các giá trị biên tương ứng b(i+1)và b(i).

Bài này tớ nghĩ là khi nhập n sô, mình sắp xếp dãy tăng dần, sau đó tìm xem điểm a có nằm trong dãy đó hay không,nếu có thì xuất ra vị trí của a luôn...con nếu không thì tớ không biết phải làm sao cả.Mong các bạn giúp mình :)

QUOC HUNG
13-12-2011, 04:56 PM
Đề thi học kì môn C Programming Basic K55 Việt Nhật
Một từ điển dịch "Anh-Việt" đơn giản có dữ liêu được lưu trữ trong file "data.txt" với định dạng như sau: từ tiếng Anh rồi đến dấu TAB rồi đến từ tiếng Việt
vidu: school truong hoc (khoảng cách ở giữa ứng với 1 dấu tab)
Giả sử rằng các từ tiếng Anh đều là các từ ko chứa dấu cách, và ko có sự trùng lặp trong file từ điển. Tiếng việt có thể chứa dấu cách. Các từ tiếng Anh và tiếng Việt ở dạng chữ thường và có đọ dài tối đa 20 kí tự.
Sv tạo cấu trúc để lưu thông tin về từ điển và xây dựng menu thực hiện các công việc sau:
1. Đọc file data.txt và lưu vào cây nhị phân tìm kiếm. Việc so sánh dựa trên từ tiếng anh.
2. Hiển thị toàn bộ dữ liệu trên cây theo thứ tự tăng dần của từ tiếng Anh.
3.Dịch: Nhập một câu tiếng anh chữ hoa hoặc chữ thường các kí tự và dịch ra tiếng việt tương ứng.
*Đầu tiên thực hiện tách câu ra thành từ đơn, chuyển về dạng chữ thường và hiển thị các chữ này ra màn hình. Mỗi chữ trên một dòng.
*Tiếp đó thực hiện dịch câu. Có các trường hợp xảy ra.
Nếu tồn tại từ ko có trong cây thì hiển thị "thiếu từ" và cho phép người dùng bổ sung từ này vào cây, việc bỏ sung vẩn đảm bảo cây thu đc là cây nhị phân tìm kiếm. Trường hợp còn lại hiển thị ra nghĩa tiếng việt.
VD: Nhập vào: I like PHone thì dịch ra là "toi thich dien thoai"
4.Sau khi kết thúc chương trình ghi lại cây vào từ điển để bổ sung(nếu có).

NỘI dun file data.txt :
school truong hoc
computer may tinh
book sach
i toi
like thich
phone dien thoai
camera may anh
train tau hoa
and va

{
Cho điểm:
1. Tạo menu 2 đ
2. Đọc dữ liệu và tạo cây 2 đ
3. Duyệt và hiển thị cây 1đ
4. Nhập xâu tiếng anh
a. tách từ và chuyển về chữ thường và in ra màn hình: 2 đ
b. Dịch: +Thiếu từ bổ sung đc 1đ
+ dịch ra tiếng việt 1đ
5. Lưu lại cây vào file data.txt 1 điểm
///////////////////////////////////////////////
Với đề này Thầy Dũng CT đã củ hành ko ít sinh viên Việt Nhật K55 ĐHBKHN:((
}

pkthanh92
26-12-2011, 10:41 PM
Bài 5 em thấy làm cách này dễ hiểu cho newbie hơn vì không có hàm malloc()

return main() ?

bây giờ mình mới biết có thể đệ quy hàm main().

catbui
06-01-2012, 10:33 AM
Cho mảng ia[0] tại sao mình vẫn nhập mảng vào và chạy được?



#include <stdio.h>
#include <conio.h>

main(void)
{
int ia[0], i, in, isum = 0;

while (in <= 0 || in > 10)
{
printf("Nhap vao gia tri n: ");
scanf("%d", &in);
}
for(i = 0; i < in; i++)
{
printf("Nhap vao phan tu thu %d: ", i + 1);
scanf("%d", &ia[i]);
}
for(i = 0; i < in; i++)
isum += ia[i];
printf("Trung binh cong: %.2f\n", (float) isum/in);
getch();
}

cauberong09
06-01-2012, 08:25 PM
Sao bạn có thể chạy được hay thật.!

kitti
06-01-2012, 09:14 PM
Cho mảng ia[0] tại sao mình vẫn nhập mảng vào và chạy được?

sửa cho bạn đây:

#include <stdio.h>
#include <conio.h>

main(void)
{
int ia[10], i, in, isum = 0;

do
{
printf("Nhap vao gia tri n: ");
scanf("%d", &in);
}while (in <= 0 || in > 10);

for(i = 0; i < in; i++)
{
printf("Nhap vao phan tu thu %d: ", i + 1);
scanf("%d", &ia[i]);
}

for(i = 0; i < in; i++)
isum += ia[i];
printf("Trung binh cong: %.2f\n", (float) isum/in);
getch();
}

hungptit93
11-01-2012, 08:56 AM
Mình mới thi hết môn lập trình c sáng nay,bây giờ mới có thời gian pót đề lên đây để mọi người tham khảo.Mình thi theo chuẩn ACM(nghĩa là chấm tự động)
Bài A: Đếm số ước số nguyên tố
viết chương trình đếm số ước số nguyên tố của một số nguyên (không quá 9 chư số),tính cả chính số đó
Dữ liệu vào:fileA.TXT
* dòng 1 ghi 1 số bộ test
* Mỗi bộ test ghi một số nguyên dương
Kết quả:với mỗi bộ test ghi trên một dòng một số nguyên tố của số đó
Ví dụ
A.TXT KẾT QUẢ
3
256 1
123456 2
123456787 3
Đây là file đế gửi lên mạnh chấm,các bài sau cũng tương tự như thế này, mình không viết nữa
do không định dạng được nên mình không pót bài b
Bài c:Đếm các số lớn hơn các số đứng trước nó
cho 1 dãy số nguyên dương có n phần tử(2<=n<=50).Hãy liệt kê số các phần tử trong dãy không nhỏ hơn các số đứng trước nó(tính cả phần tử đầu tiên)

BÀI D:Phép cộng các số nguyên
Viết chương trình cộng hai số nguyên dương BẤT KÌ(không quá 256 chữ số)
BÀI E:Đếm các số đẹp
Một người cho rằng số đẹp là số có dạng thuận nghịch,có tổng chữ số chia hết cho 10 và chỉ bao gôm các chư số chẵn.Bài toán đặt ra là cho trước 2 số nguyên duương a,b và biết trước a<b.Hãy đếm xem trong khoảng a,b có bao nhiêu số đẹp
BÀI F: Tìm số tại vị trí cho trước trong ma trận
Cho 2 ma trận vuông A,B chỉ gồm số nguyên dương cấp n. Hãy viết chương trình tính số ở vị trí(i,j) trong ma trận tổng A+B

BÀI G: Đếm các xâu nhị phân đặc biệt
cho số tự nhiên n,k(1<=k<=n<=50).hãy viết chương trình đếm tất cả các xâu nhị phân có độ dài n chứa duy nhất một dãy 3 bít 0 liên tiếp
0 0 0 1 0
0 0 0 1 1
0 1 0 0 0
1 0 0 0 0
1 1 0 0 0
Bài H:Đếm các số thuận nghịch trong file
cho một file văn bản chỉ gồm các số nguyên dương <10^9. viết chương trình liệt kê các số thuận nghịch khác nhau trong file theo thứ tự số nào xuất hiện trước viết trước và số lận xuất hiện của nó
BÀI I:máy bán hàng tự động
khi mua hàng bằng máy bán hàng tự động, người mua sẽ trả bằng một số tiền chẵn lớn hơn hoặc bằng giá của sản phẩm.Máy sẽ tính toán để trả lại số tiền thừa cho người mua.Giả sử trong máy chỉ có 3 mệnh giá tiền là 1 dollar,10 dollar,5 dollar với quy ước mỗi lần trả chỉ được phép dùng ít hơn 5 tờ 1 dollar, và ít hơn 2 tờ 5 dollar
Hãy viết chương trình tính số tiền mỗi loại mà máy bán hàng tự động phải trả lại cho người mua
Dữ liệu vào (fileI.txt): dòng đầu tiên là số bộ test, mỗi bộ test ghi trên một dòng hai số nguyên không âm là giá của sản phẩm và tổng số tiền người mua đưa vào. cả 2 giá trị này đều không vượt quá 10^5

kết quả:với mỗi bộ test, viết ra biểu diễn số tiền cần trả của máy bán hàng tự động theo mẫu trong bộ test ví dụ dưới đây

Ví dụ cho input và output
I.TXT KẾT QUẢ
3 28=2*10+1*5+3*1
72100 163=16*10+0*5+3*1
37200 45=4*10+1*5+0*1
550
BÀI J: có lẽ là bài khó nhất,nhưng do không định dạng được nên mình chưa pót nên được,tiếc quá
CÁC bạn có thể viết code ngay trên topic này để ta cùng trao đổi nhé!

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

bichdieu1011
12-02-2012, 08:20 PM
Câu 1: (3 điểm) Viết một số ra dạng thừa số nguyên tố của nó (chỉ in ra dòng cuối
cùng).
Ví dụ:
100 = 2 * 50
100 = 2 * 2 * 25
100 = 2 * 2 * 5 * 5
Câu 2: (2 điểm) Đếm các phần tử trong mảng các số nguyên, có tính chất sau
“chia hết cho số bên phải và không chia hết cho số bên trái. Trong ví dụ bên dưới
2 số 20 và 5 là 2 số thõa mãn tính chất trên.

11 20 10 30 5

Lưu ý: những số nào chỉ có một bên phải hoặc một bên trái thì mặc định bên còn
lại thõa mã tính chất. Số 5 trong ví dụ trên không có số bên phải nên mặc định nó
thõa mãn tính chất “chia hết cho số bên phải”.

Câu 3: (2 điểm) Cho ma trận số thực A(M,N) . Tìm các phần tử x có giá trị tuyệt
đối lớn nhất của ma trận ( nêu rõ chỉ số hàng và chỉ số cột của nó ). Ngoài ra còn
cho biết thêm là phần tử đó xuất hiện bao nhiêu lần trong ma trận A(M,N). Nhập
và xuất ma trận bằng phương pháp nhập xuất FILE.

Câu 4: (3 điểm) Cho thông tin của một thửa ruộng (THUARUONG) bao gồm:
 Mã thửa ruộng: (tối đa 10 kí tự)
 Giá tiền 1m vuông: (kiểu số nguyên dài)
 Chiều dài: (kiểu số thực)
 Chiều rộng: (kiểu số thực)
- Hãy viết chương trình so sánh diện tích của hai thửa ruộng do người dùng nhập
vào.

phuchaontu
13-02-2012, 08:38 AM
Câu 1: (3 điểm) Viết một số ra dạng thừa số nguyên tố của nó (chỉ in ra dòng cuối
cùng).
Ví dụ:
100 = 2 * 50
100 = 2 * 2 * 25
100 = 2 * 2 * 5 * 5
Câu 2: (2 điểm) Đếm các phần tử trong mảng các số nguyên, có tính chất sau
“chia hết cho số bên phải và không chia hết cho số bên trái. Trong ví dụ bên dưới
2 số 20 và 5 là 2 số thõa mãn tính chất trên.

11 20 10 30 5

Lưu ý: những số nào chỉ có một bên phải hoặc một bên trái thì mặc định bên còn
lại thõa mã tính chất. Số 5 trong ví dụ trên không có số bên phải nên mặc định nó
thõa mãn tính chất “chia hết cho số bên phải”.

Câu 3: (2 điểm) Cho ma trận số thực A(M,N) . Tìm các phần tử x có giá trị tuyệt
đối lớn nhất của ma trận ( nêu rõ chỉ số hàng và chỉ số cột của nó ). Ngoài ra còn
cho biết thêm là phần tử đó xuất hiện bao nhiêu lần trong ma trận A(M,N). Nhập
và xuất ma trận bằng phương pháp nhập xuất FILE.

Câu 4: (3 điểm) Cho thông tin của một thửa ruộng (THUARUONG) bao gồm:
 Mã thửa ruộng: (tối đa 10 kí tự)
 Giá tiền 1m vuông: (kiểu số nguyên dài)
 Chiều dài: (kiểu số thực)
 Chiều rộng: (kiểu số thực)
- Hãy viết chương trình so sánh diện tích của hai thửa ruộng do người dùng nhập
vào.

Mình xin làm đề này như sau:
Bài 1:


#include "iostream"
#include "conio.h"
using namespace std;

int main()
{
int n;
cin>>n;
int i = 2;
do
{
if(n%i==0){ cout<<i; n/=i; if(n>=i)cout<<"*";}
else i++;
}while(n>1);
cout<<endl;
system("pause");
return 0;
}

Bài 2:


#include "iostream"
using namespace std;


int main()
{
int *a;
int n;
cout<<"Nhap so phan tu: ";
cin>>n;
a = new int[n];

for(int i=0;i<n;i++){ cout<<"Nhap a["<<i<<"]: "; cin>>a[i]; }
cout<<"Xuat mang: ";
for(int i=0;i<n;i++)cout<<a[i]<<" ";

int dem = 0;
if(a[0] % a[1] == 0)dem++;
if(a[n-1] % a[n-2] !=0 )dem++;
for(int i=1;i<n-1;i++)
if(a[i] % a[i-1]!=0 && a[i]%a[i+1]==0)dem++;
cout<<endl<<"Kq: "<<dem<<endl;
system("pause");
return 0;
}

Bài 3:


#include "iostream"
#include "conio.h"
using namespace std;

int abs(int a)
{
if(a<0)return -a;
return a;
}

// Khoi tao truoc file: "3.inp"
/*
3 4
1 2 3 4
2 3 4 5
4 3 2 5
*/

int main()
{
int m,n;
freopen("3.inp","r",stdin);
freopen("3.out","w",stdout);
cin>>m>>n;
int **a;
for(int i=0;i<m;i++)a[i] = new int [n];
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)cin>>a[i][j];



int max = 0;
int vti = 0, vtj = 0;

for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
if(abs(a[i][j] ) > max){ max = abs(a[i][j]); vti = i; vtj = j; }

int tam = a[vti][vtj];
int solan = 0;

for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
{
if(tam == a[i][j])solan++;
}


cout<<"Gia tri co tri tuyet doi max: "<<a[vti][vtj]<<endl;
cout<<"Tai vi tri: ("<<vti<<" "<<vtj<<")"<<endl;
cout<<"So lan: "<<solan<<endl;


return 0;
}

Bài 4: Mình nghĩ ghi thiếu đề, bởi lẽ câu 3 điểm mà đề hơi "nhạt" vậy.

hamana
13-02-2012, 09:34 PM
Đề thi tin học đại cương Học viện CN-BC-VT TPHCM
Câu 1: Viết chương trình tính tổng sau:
T=[TCUL(2)]! + [TCUL(4)]! + [TCUL(6)]! + .... + [TCUL(2*n)]!
Với n là giá trị nguyên dương nhập từ bàn phím và n>=2.Trong đó TCUL(i) là tổng các ước lẽ của số i.
Câu 2: Viết chương trình nhập vào một mãng gồm 10 số nguyên trong đó có ít nhất 2 số âm.
a/ Kiểm tra mảng trên có thỏa điều kiện có 2 số âm không? Nếu có thì trả về là có,ngược lại là không.
b/Giả sử mãng trên thỏa mãng điều kiện trên,hãy in ra tổng nhỏ nhất của dãy con các số nguyên dương liên tiếp có trong mảng đó.
Minh họa câu 2b: 5 1 -7 8 9 -1 4 3 2 -9 thì in ra 9 vì (4+3+2)< (8+9)

bichdieu1011
15-02-2012, 06:57 PM
[QUOTE=phuchaontu;327330
Bài 4: Mình nghĩ ghi thiếu đề, bởi lẽ câu 3 điểm mà đề hơi "nhạt" vậy.[/QUOTE]

cam doan khong thieu, de truong minh cho hoi de~ ak ma

Phuochung2807
24-02-2012, 10:24 AM
Tham gia lâu mà chưa đóng góp cho 4rum, hôm nay đóng góp đề thi thực hành nhập môn lập trình thi hồi trước tết của ĐH KHTN tphcm

PDF nhé, tại lười đánh máy quá @@

ngoctrandp
11-03-2012, 04:00 PM
bài 2) viết CT nhập vào 2 số nguyên .thực hiện hoán đổi giá trị của nó va in kết quả ra màn hình
Lưu ý : chỉ dùng hàm if và else và cout thui ,nên em hơi khó hiểu .[/QUOTE]

bài 2)
#include<inontream.h>
void main()
{
int a,b,tam;
cout>>"nhập a:"<<cin a;
cout>>"nhập b:"<<cin b;
tam=a;
a=b;
b=tam;
cout<<"giá trị của a sau khi hoan vi:" <<b;
cout<<"giá trị của b sau khi hoán vị:" <<a;

hoabattu_k53
14-04-2012, 10:56 AM
hic.minh co may cau C ma không ai giup mat rui

maixuanquynh301
14-04-2012, 02:54 PM
/*quan li hoc sinh sinh vien*/
#include <stdio.h>
#include <conio.h>
#include "string.h"
typedef struct sinhvien
{
char maso[20];
char hoten[20];
int namsinh;
float toan;
float ly;
float hoa;
float tong;
}sinhvien;
sinhvien sv[10];
int i,j,n;
void nhap()
{
printf("\n nhap so sinh vien: ");scanf("%d",&n);
for(i=0;i<n ;i++)
{
printf("\nma so : ");//scanf("%s",sv[i].maso);
gets(sv[i].maso);
printf("\nho ten: ");//scanf("%s",sv[i].hoten);
gets(sv[i].hoten);

printf("\nnam sinh : ");scanf("%d",sv[i].namsinh);
printf("\ndiem mon toan : ");scanf("%f",sv[i].toan);
printf("\ndiem mon ly: ");scanf("%f",sv[i].ly);
printf("\ndiem mon hoa: ");scanf("%f",sv[i].hoa);
}
}
//in ra man hinh
void inra()
{
printf("\nthu tu cac sinh vien ");
for(i=0;i<n;i++)
{
printf("\n maso: %s",sv[i].maso);
printf("\n hoten: %s",sv[i].hoten);
printf("\nnamsinh: %d",sv[i].namsinh);
printf("\ndiem mon toan: %f",sv[i].toan);
printf("\ndiem mon ly: %f",sv[i].toan);
printf("\ndiem mon hoa: %f",sv[i].hoa);
printf("\ntong diem:%f",(sv[i].toan+sv[i].ly+sv[i].hoa));
}
}
//in ra danh sach sinh ven co diem tren 20
void diemdat()
{
printf("hoc sinh dat diem\n");
for(i=0;i<n;i++)
{
if((sv[i].toan+sv[i].ly+sv[i].hoa)>=20)
{
printf("ho ten: %s",sv[i].hoten);
printf("tong diem: %f",(sv[i].toan+sv[i].ly+sv[i].hoa));
}
}
}
//in ra danh sach thi lai
void dstl()
{
printf("danh sach thi lai\n");
for(i=0;i<n;i++)
{
if((sv[i].toan+sv[i].ly+sv[i].hoa)<5)
printf("hoten: %s",sv[i].hoten);
}
}
void main()
{
nhap();
inra();
diemdat();
dstl();
getch();
}

thekiller
20-04-2012, 05:02 PM
1. Viết chương trình nhập vào một xâu ký tự và in ra xâu nghich đảo của nó.
2. Viết chương trình nhập giá trị vào cho ma trận A gồm m hàng, n cột. Sau đó,
hiển thị ra màn hình ma trận đối xứng của nó.
3. Cho 2 mảng A, B có các phần tử đều đã được sắp xếp tăng (giảm) dần. Viết
chương trình trộn 2 mảng trên để thu được mảng thứ 3 mà vẫn đảm bảo tính
tăng (giảm) dần của mảng.
______________________________
Lâu rồi không lên, mình có đề này đóng góp cho các bạn tham khảo

thekiller
21-04-2012, 12:08 PM
câu 1:
Viết chương trình nhập vào một xâu ký tự và in ra xâu nghich đảo của nó



#include <stdio.h>
#include <string.h>
#include<iostream.h>
int main()
{
char str[256];

cout<<"Nhap vao mot chuoi: ";cin>>str;

cout<<"chuoi dao nguoc: ";
for (char i = (strlen(str) -1); i >= 0; --i)
cout<<(char) str[i];

return 0;
}
______________________________
làm thế này có đúng không các bạn?
Xin mọi người cho ý kiến
mình mới học môn này thôi

kieuanh111193
22-04-2012, 05:00 PM
có thể giúp mình giải bài này được hok

Viết chương trình giải quyết 2 bài toán dưới đây. Chương trình có một vòng
lặp chờ nhập lựa chọn của người dùng:
- Lựa chọn 0: kết thúc chương trình.
- Lựa chọn 1: nhập dữ liệu và giải quyết bài toán 1.
- Lựa chọn 2: nhập dữ liệu và giải quyết bài toán 2.
- Lựa chọn khác: yêu cầu người dùng nhập lại.
Bài toán 1: Thống kê số lượng sinh viên giỏi, khá, trung bình và yếu.
Mỗi một sinh viên trong lớp có 2 cột điểm giữa kỳ (ĐGK) và cuối kỳ (ĐCK).
Điểm tổng kết (ĐTK) được tính theo công thức ĐTK = (ĐGK + 2*ĐCK)/3. Các sinh
viên được xếp hạng như sau: Giỏi: ĐTK > 8.0; Khá: 6.5 < ĐTK ≤ 8.0; Trung bình: 5.0 <
ĐTK ≤ 6.5; Yếu: ĐTK ≤ 5.0. Hãy cho biết số lượng sinh viên giỏi, khá, trung bình và
yếu.
Dữ liệu nhập: nhập từ bàn phím. Dòng đầu tiên có một số nguyên dương N là số
sinh viên. N dòng tiếp theo mỗi dòng chứa 2 số thực lần lượt là 2 cột điểm giữa kỳ và
cuối kỳ của một sinh viên.
Dữ liệu xuất: xuất ra màn hình số lượng sinh viên giỏi, khá, trung bình và yếu.
Ví dụ:

Dữ liệu nhập Dữ liệu xuất
3 Gioi : 1
6.0 6.0 Kha : 0
7.0 9.0 Trung binh : 1
5.0 0.0 Yeu : 1
Bài toán 2: Giải hệ phương trình tuyến tính 3 ẩn. Hãy tìm nghiệm X =(x1,x2,x3)T của phương trình AX = b dưới bằng phương pháp Cramer:
a11 a12 a13 x1 b1
(a21 a22 a23) (x2) = (b2)
a31 a32 a33 x3 b3
Dữ liệu nhập : A và b được nhập từ bàn phím theo từng dòng (ví dụ các dòng a11 a12 a13, b1). A và b đảm bảo phương trình có nghiệm duy nhất.
Dữ liệu xuất : xuất ra nghiệm duy nhất của phương trình.

thich_it
22-04-2012, 11:03 PM
__________________________________________________ ___________
đây là đề thi tin học đại cương HV CN Bưu Chính Viễn Thông
(cơ sở 2)

Đề bài
(90')
Bài 1;
T=(-1)^0*1+(-1)^1*2+(-1)^2*3+....+(-1)^(n-1)*n
Với n dương nhập từ bàn phím, hãy tính tổng trên;
với điều kiện dùng hàm int mt(int a) dùng để tính (-1)^(n-1);
Bài 2;
Nhập một mảng 10 số nguyên trong đó có ít nhất 2 số nhỏ hơn không;
Tính tổng tất cả các số dương nằm giữa 2 số âm đầu tiên và cuối cùng;
Nếu 2 số âm kề nhau thì trả về tổng bằng 0;

Tớ làm bài 2 nhé, mong các ace chỉ giáo dùm.


#include <iostream>

using namespace std;
void nhap_mang(int a[], int size);
void in_mang(int a[], int size);
int tinh_tong(int a[], int size);

int main()
{
int a[20],size;
cout << "Nhap size: "; cin >> size;
nhap_mang(a,size);
in_mang(a,size);
cout << tinh_tong(a,size) << endl;
return 0;
}
// Ham nhap vao mang
void nhap_mang(int a[], int size)
{
cout << "Nhap vao mang di ban thoa man dau bai di ban: " << endl;
for(int i=0; i<size; i++) {
cout << "a[" << i <<"]=";
cin >> a[i];
}
}
// ham in mang
void in_mang(int a[], int size){
for(int i=0; i<size; i++)
cout << a[i] << " ";
cout << endl;
}
// tinh tong duong
int tinh_tong(int a[], int size) {
int tong=0;
int i,j,k;
for(i=0; i<size; i++)
if(a[i]<0) break; // xac dinh chi so gioi han duoi
for(j=size-1; j>=0; j--)
if(a[j]<0) break;
for(k=i+1; k<=j-1; k++) // xac dinh chi so gioi han tren
if(a[k]>0)tong += a[k];
return tong;
}

thekiller
23-04-2012, 10:30 AM
3. Cho 2 mảng A, B có các phần tử đều đã được sắp xếp tăng (giảm) dần. Viết
chương trình trộn 2 mảng trên để thu được mảng thứ 3 mà vẫn đảm bảo tính
tăng (giảm) dần của mảng.
___________________

đây là cách làm của Thầy Hồng


void TronMang(int a[], int na, int b[], int nb, int c[], int &nc){

nc=0;

//copy mang a sang c

for(int i=0;i<na;i++)

c[nc++]=a[i];

//đưa phân tử mang b vao c đúng thứ tự

for(i=0;i<nb;i++){

//tìm vị trí thêm b[i]

for(int k=0;k<nc;k++)

if(c[k]<b[i]) break; //vị trí chèn b[i] là k

//dịch các phần tử từ k đến nc-1 ra sau 1 vị trí để bỏ phần tử b[i] vào k

for(int j=nc;j>k;j--)

c[j]=c[j-1];

c[k]=b[i];

nc++;//tăng số phần tử của c

}

}
__________________________________
mình up lên cho mọi người tham khảo và cho ý kiến

thekiller
23-04-2012, 01:50 PM
Có ai giải được 2 câu này không nhỉ

2. Viết chương trình nhập giá trị vào cho ma trận A gồm m hàng, n cột. Sau đó,
hiển thị ra màn hình ma trận đối xứng của nó.
3. Cho 2 mảng A, B có các phần tử đều đã được sắp xếp tăng (giảm) dần. Viết
chương trình trộn 2 mảng trên để thu được mảng thứ 3 mà vẫn đảm bảo tính
tăng (giảm) dần của mảng.

kitti
24-04-2012, 05:06 PM
Câu 2:
Ma trận đối xứng (http://diendan.congdongcviet.com/showthread.php?t=32907)
Câu 3:
Cho 2 mảng A, B có các phần tử đều đã được sắp xếp tăng (giảm) dần (http://diendan.congdongcviet.com/showthread.php?t=25374)

thekiller
25-04-2012, 02:42 PM
Thank kitti




______________
_______________
_________________

kitti
02-05-2012, 04:22 PM
Tuyển tập đề thi các môn lập trình trường ĐH khoa học tự nhiên TP Hồ Chí Minh (http://diendan.congdongcviet.com/showthread.php?t=105406)

orchidshl1
15-06-2012, 09:37 PM
bài 1 liên thông hv bưu chính, e mới học lập trình sai các bác chỉ dạy tận tình ạ


#include "stdio.h"
#include "conio.h"
#include "Math.h"
float nhapmkv(char mkv)
{
printf("nhap vao mkv : ");
mkv=getche();
if(mkv=='a')
return 1.75;
else
if(mkv=='b')
return 1.25;
else
if(mkv=='c')
return 1;
else
if(mkv=='d')
return 0.5;
else
return 0.25;
}
float nhapmdt(int mdt)
{
printf("\nnhap vao ma doi tuong : ");
scanf("%d",&mdt);
if(mdt==1)
return 1.5;
else
if(mdt==2)
return 1;
else
if(mdt==3)
return 0.75;
else
if(mdt==4)
return 0.5;
else
return 0.25;
}
void main()
{
int mdt;
char mkv;
float ctdl,ktlt,e,f;
float tong;
e=nhapmkv(mkv);
f=nhapmdt(mdt);
printf("nhap vao diem mon ctdl : ");
scanf("%f",&ctdl);
printf("nhap vao diem mon ktlt : ");
scanf("%f",&ktlt);
if(ctdl<5||ktlt<5)
{
printf("Ban da bi truot\n");
}
else
{
tong=e+f+ctdl+ktlt;
if(tong>=12)
printf("ban da do");
else
printf("ban da truot");
}
getch();
}

Bài 2

#include "stdio.h"
#include "conio.h"
int const max=50;
int a[max][max];
int i,j,n,m;
int maxmang()
{
int MAX;
MAX=a[1][1];
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
if(a[i][j]>MAX)
MAX=a[i][j];
}
return MAX;
}
void main()
{
int e;
printf("nhap cap ma tran ");
printf("nhap dong n : ");
scanf("%d",&n);
printf("nhap cot m : ");
scanf("%d",&m);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
printf("nhap a[%d][%d]",i,j);
scanf("%d",&a[i][j]);
}
e=maxmang();
printf("phan tu lon nhat la %d",e );
getch();
}

bài 3 đệ quy

#include "stdio.h"
#include "conio.h"
int dequy(int n)
{
if(n==0)
return -1;
else if(n==1)
return 1;
else
return (dequy(n-1)*2-3*dequy(n-2));
}
void main()
{
int n;
int s;
printf("nhap n : ");
scanf("%d",&n);
s=dequy(n);
printf("%d",s);
getch();
}

orchidshl1
16-06-2012, 09:45 AM
Ai làm dùm e bài này với :D


Viết chương trình giải hệ phương trình gồm n phương trình và n ẩn, có dạng sau:
a1,n xn = b1
a2,n-1 xn-1 + a2,n xn = b2
…............................................... ..................
an,1 x1 + an,2 x2 +…+ an,n-1 xn-1 + an,n xn = bn
(các ai,j khác 0).

Chương trình cần viết các hàm sau: hàm nhập hệ phương trình, hàm xuất hệ phương trình, hàm giải hệ phương trình, hàm main.

orchidshl1
18-06-2012, 06:12 PM
đã làm được bài 4 ạ :D


#include "stdio.h"
#include "conio.h"
int const max=50;
int n;
float a[max][max];
float b[max];

void nhap()
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i;j++)
{
printf("nhap a[%d][%d] : ",i,j);
scanf("%f",&a[i][j]);
}
printf("nhap b[%d] : ",i);
scanf("%f",&b[i]);
}
}
void giai_he_pt()
{
float t[max];
for(int i=1;i<=n;i++)
{
float s=0;
for(int j=1;j<i;j++)
{
s+=a[i][j]*t[j];
}
t[i]= (b[i]-s) /a[i][i];
printf("\nt[%d]:%f",i,t[i]);
}
}

void main()
{
printf("nhap so he pt n : ");
scanf("%d",&n);
printf("nhap he so cho he pt \n");
nhap();
giai_he_pt();
getch();
}

bkmr5
30-06-2012, 07:43 PM
Cách sử dụng stack ơ đề thi c basic việt nhật.Cách này gọn hơn cách làm băng queue(:-)h(:-)h

cyan88
25-07-2012, 09:57 AM
Yêu cầu :
- Cho 3 lựa chọn sau :
1.Cho phép nhập thông tin sinh viên và lưu thành file TXT.
2.Hiển thị thông tin các sinh viên vừa nhập từ file. hoặc đọc từ file
3.Thoát.



#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define MAX 100
struct danh_sach
{
char nothing[20];
char mssv[20];
char ten[50];
char tieuchuan[50];
char diachi[50];
int phi;
}sinh_vien[MAX];
int lua_chon();
void data();
void nhap_vao();
void list();
void luu_file();
int t;
main()
{
int choice;
for(;;)
{
choice=lua_chon();
switch(choice)
{
case 1:
nhap_vao();
luu_file();
break;
case 2: list();
break;
case 3: exit(0);
}
}
}


int lua_chon()
{
int c;
printf ("\n*----------------------------------------------*\n");
printf ("* 1.Cho phep nhap thong tin SV va luu vao file. \n");
printf ("* 2.Hien thi thong tin SV vua nhap tu file. \n");
printf ("* 3.Thoat. \n");
printf ("* Tong danh sach : %d , Con lai : %d \n",t,MAX-t);
printf ("*----------------------------------------------*\n");
do
{
printf("\n Hay cho lua chon cua ban (bang so) : ");
scanf("%d",&c);
}
while(c<0||c>3);
return c;
}

void nhap_vao()

{ printf("\n STT : %d\n",t);
gets(sinh_vien[t].nothing);
printf("\n Ma so sinh vien : ");
gets(sinh_vien[t].mssv);
printf("\n Ho va ten : ");
gets(sinh_vien[t].ten);
printf("\n Tieu chuan : ");
gets(sinh_vien[t].tieuchuan);
printf("\n Dia chi : ");
gets(sinh_vien[t].diachi);
printf("\n Hoc phi (USD): ");
scanf("%d",&sinh_vien[t].phi);
t++;
}

void list()
{
int n;
for(n=0;n<t;n++)
printf("\nSTT: %d\t MSSV: %s\t |Ho va ten : %s\t |Tieu chuan : %s\t |Dia chi : %s\t |Phi :%d USD\n",n,sinh_vien[n].mssv,sinh_vien[n].ten,sinh_vien[n].tieuchuan,sinh_vien[n].diachi,sinh_vien[n].phi);
printf ("\n--------------------------------------------------------------------------------");
}
void luu_file()
{
danh_sach txt_file;
FILE *f;
if ((f=fopen("C:\\Danh sach sinh vien.txt","wt"))==NULL)
{
printf ("\nKhong the mo file !\n");
exit (0);
}
fwrite(&sinh_vien,sizeof(danh_sach),1,f);
fclose (f);
printf ("\nThong tin SV da luu tai C:\\Danh sach sinh vien.txt\n");
printf ("\n--------------------------------------------------------------------------------");
}


Khuyết điểm :
- Khi lưu thành file TXT , mở file TXT ra thì không hiểu được số nguyên và số thực ở phần biến "sinh_vien[t].phi". (có thể bị lỗi font)
- Cần bổ sung thêm phần đọc file. thay vì xuất thông tin bằng hàm "void list(void)"

Mọi người tìm hiểu tham khảo bổ sung cho bài hoàn chỉnh giúp mình nhé,cám ơn rất nhiều !!!

namtuancntt
01-08-2012, 04:26 PM
Đây là đề thi tốt nghiệp môn C trường mình !
Bạn nào quan tâm giải giúp mình bài này nhé!

1. Cho chương trình:
#include<conio.h>
#include<stdio.h>
void result(int,int);
void main()
{ int x=20,y=10;
printf("Truoc khi goi ham: x=%d,y = %d\n",x,y);
result(x,y);
printf("Sau khi goi ham: x=%d,y=%d\n",x,y);
getch();
}
void result(int a,int b)
{
int x,y;
x=(a+b)/2;
y=(a-b)/2;
a=x;
b=y;
}
a) Cho biết kết quả của x và y trước và sau khi gọi hàm Result().
b) Đưa ra lời nhận xét về việc khai báo x và y.
c) Giải thích kết quả.
2.
a) Đưa ra lời nhận xét của phép gán *p = st. Trong đó p là con trỏ kí tự và st là một xâu có kích thước 50 kí tự.
b)Viết một hàm trả về giá trị = 0 nếu hai xâu truyền vào là bằng nhau, ngược lại hai xâu không bằng nhau (Không dùng hàm strcmp() hoặc strcmpi()).
c) Gọi hàm từ chương trình chính
3
a) Cho biết giá trị của ++p sau khi thực hiện phép gán p = &a. Trong đó p là con trỏ số nguyên, a là một mảng một chiều chứa được 50 phần số nguyên.
b) Viết một hàm trả về số lượng các phần tử là số nguyên tố có mặt trong mảng a.
c) Gọi hàm từ chương trình chính.
4.
a) Viết hàm hoán vị hai biến thực a, b bằng cách sử dụng con trỏ (đối vào là hai con trỏ).
b) Viết chương trình chính nhập một dãy số thực a1, a2,..an. Thực hiện sắp xếp dãy số trên có sử dụng hàm hoán vị đã viết ở trên.
5.
b) Viết hàm tìm một chuỗi con trong một chuỗi đã cho, kết quả trả về là -1 nếu không tìm thấy, là n nếu chuỗi con tìm thấy ở kí tự thứ n của chuỗi đã cho. (không sử dụng hàm mẫu của C)
a) Viết hàm thực hiện tách một chuỗi kí tự con từ một chuỗi đã cho từ kí tự thứ i đến kí tự thứ k (không sử dụng hàm mẫu của C)

christopheminh
16-10-2012, 02:24 PM
Pro nào biết giúp mình với !! thank
Câu 1: Giả sử muốn quản lý một danh sách sinh viên theo cấu trúc dữ liệu danh sách liên kết đơn, mỗi sinh viên có các thông tin sau: mã sinh viên (int), họ sinh viên (tối đa 50 khơn hoặc ý tự). tên sinh viên ( tối da 10 ký tự), mã lớp ( tối đa 10 ký tự), mã lớp ( tối đa 10 ký tự), điểm trung bình cuối khóa, điểm thi tốt nghiệp, xếp loại.
a) viết khai báo biến con trỏ First để quản lý danh sách sinh viên theo cáu trúc dữ liệu là danh sách liên kết đơn.
b) viết chương trình con nhập vào một danh sách sinh viên sao cho quá trình nhập vào sẽ dừng lại khi mã số sinh viên là số nhỏ hơn hoặc bằng không. Xếp loại được tính theo yếu cầu sau:
- Nếu ĐTB<5 : Xếp loại ="Không đạt"
- Nếu 5<= ĐTB<7 : Xếp loại =" Trung bình"
- Nếu 7<= ĐTB<59 : Xếp loại ="Khá"
- Nếu ĐTB >=9 : Xếp loại ="Giỏi"
Với ĐTB =( điểm trung bình cuối khóa + Điểm thi tốt nghiệp )/2
Lưu ý: mã số sinh viên không được trùnh.
c) Viết chương trình con liệt kê danh sách siên viên của một lớp có mã lớp là X trong danh sách liên kết đơn ra màn hình, sau khi in xong thì intiếp sĩ số của lớp đó.
D) Viết chương trình con ghi danh sách sinh viên trong danh sách liên kết đơn vào file nhị phân có tên file là "DSSV.DAT"
Câu 2:
Giả sử ta muốn chuyển đổi danh sách từ cấu trúc danh sách liên kết đơn sang cấu trúc dữ liệu mới là danh sách tuyến tính.
a) Viết khai báo biến ds để lưu trữ danh sách sinh viên theo cấu trúc danh sách tuyến tính.
b) Viết chương trình con chuyển đổi danh sách sinh viên từ trong danh sách liên kết đơn với con trỏ đầu là First sang danh sách tuyến tính ds . Sau khi chuyển đổi xong, thì danh sách sinh viên trong danh sách liên kết đơn sẽ bị xóa khỏi bộ nhớ trong.
c) viết chương trình con xóa tất cả sinh viên thuộc lớp X ra khỏi danh sách sinh viên đanh lưu trong ds.
d) Viết chương trình con tạo một file văn bản: "C:\DSLOP.TXT" chứa danh sách các mã lớp của trường trong danh sách sinh viên, mỗi lớp thuộc một dòng trong file.
e) Viết chương trình con sắp xếp danh sách sinh viên trong danh sách tuyến tính ds tăng dần theo mã lớp, trong từng lớp thì sắp tăng dần theo tên sinh viên, nếu tiêp tục trùng tên thì sắp tăng dần theo họ.
Bạn nào quan tâm giải dùm minh nhé! Thank một cái

thedong91bn
21-11-2012, 10:51 AM
[QUOTE=kitti;201396]Trường Công nghệ Thông tin Thành phố Hồ Chí Minh chi nhánh Hà Nội:

Câu 1:
giải và biện luận phương trình bậc 2 (tính cả trường hợp suy biến).

Bài giải:

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<math.h>

int gptb2(float a, float b, float c, float* x1, float* x2)
{
float del;
del = b*b - (4*a*c);
if(del < 0) return -1;
else
{
*x1 = (-b - sqrt(del))/ (2*a);
*x2 = (-b + sqrt(del))/ (2*a);
}
return 1;
}
int main()
{
clrscr();
float a, b, c, x1, x2;
printf("\nNhap a, b, c:");
scanf("%f%f%f", &a,&b,&c);
fflush(stdin);
if(a == 0)printf("X = %.2f", -c/b);
else
{
if(gptb2(a,b,c,&x1,&x2) == -1)
printf("\nphuong trinh vo nghiem");
else
{
printf("\nx1 = %.2f", x1);
printf("\nx2 = %.2f", x2);
}
}
getch();
return 0;
}


Câu 2:
viết chương trình cho phép nhập n từ bàn phím (nếu n <= 0 thì bắt nhập lại) . Tính tổng s = 1^2 + 2^2+.... + n^2.

Bài giải:

#include<stdio.h>
#include<conio.h>

int main()
{
clrscr();
int n;
long tong;
int i;
do
{
printf("\n Nhap n: ");
scanf("%d", &n);
}while(n <= 0);

tong = 0;
for(i = 1; i <= n; i++) tong += i*i;
printf("\n S = %ld", tong);
getch();
return 0;
}


Câu 3:
Nhập chuỗi s từ bàn phím. Kiểm tra tính đối xứng (nếu có đếm số ký tự giống nhau).

Bài giải:


#include<stdio.h>
#include<conio.h>
#include<string.h>

int main()
{
clrscr();
int i, j, dem = 0;
char s[100];
printf("\n Nhap chuoi: ");
gets(s);
for(i=0,j=strlen(s)-1; i<j; i++, j--)
{
if(s[i]!=s[j])
{
printf("\n khong doi xung");
getch();
return 0;
}
else
{
dem++;
}
}
printf("\n co doi xung");
printf("\n So chhu giong nhau trong chuoi: %d", dem);
getch();
return 0;
}


ĐỂ ĐẢM BẢO TẤT CẢ ĐỀ THI CỦA CÁC TRƯỜNG ĐỀU ĐƯỢC POST NÊN
KITTI HY VỌNG MỌI NGƯỜI CÙNG THAM GIA POST ĐỀ THI CỦA TRƯỜNG MÌNH(nếu có thể thì post luôn bài giải) để mọi người tham khảo
ĐỂ CHO CÁC BẠN CÓ THỂ THAM KHẢO MỘT CÁCH TỐT NHẤT KITTI XIN YÊU CÂU CÁC MEM POST ĐỀ THI HÃY GI RÕ TÊN TRƯỜNG CỦA MÌNH VÀ KHÔNG POST CÁC BÀI ĐÃ CÓ RỒI(tính theo từng trường)
MONG CAC MEM ỦNG HỘ
XIN CHÂN THÀNH CẢM ƠN

TẤT CẢ CÁC BÀI ĐỀU ĐƯỢC VIẾT LẠI THEO Ý HIỂU CỦA KITTI NÊN KHÔNG ĐÀM BẢO GIỐNG 100% SO VỚI ĐỀ THI[
bạn giải thích cho mình chỗ vòng lặp for được không, mình hiểu chỗ đó là cho 2 biến i,j cùng chạy nhưng sao khi mình viết là
for(i=0;i<j;i++)
for(j=strlen(s)-1;j>i;j--)
hình như sai ak.mình chạy kết quả không giống.bạn thử viết không gộp hai biến i,j vào hộ mình vs để mình hiều về cái đó.thank bạn

nhatdhv
19-12-2012, 03:33 AM
Cho tệp văn bản input.txt gồm các số nguyên cách nhau ít nhất một dấu cách trống hoặc ít nhất một dấu xuống dòng (1 điểm)
a. Viết hàm đọc các phần tử của một tệp văn bản vào một mảng một chiều (2 điểm)
b. Viết hàm xem mảng một chiểu (2 điểm)
c. Viết hàm tạo một mảng một chiều b gồm các phần tử đại diện lấy từ mảng một chiều a (3 điểm)
Chẳng hạn: mảng a: 1 2 4 3 2 1 5 2
mảng b: 1 2 4 3 5
Viết hàm main sử dụng các hàm trên để đọc các phần tử của tệp input.txt vào một mảng một chiểu a. Tạo mảng một chiều b gồm các phần tử đại diện của mảng a. Cho xem các mảng a, b. (2 điểm)

Trường Đại Học Vinh_ Thực tập cơ sơ...
Mong đc giúp đỡ.. trên C thường thui nhé

Quang_CN-PM
24-12-2012, 11:36 AM
Cho tệp văn bản input.txt gồm các số nguyên cách nhau ít nhất một dấu cách trống hoặc ít nhất một dấu xuống dòng (1 điểm)
a. Viết hàm đọc các phần tử của một tệp văn bản vào một mảng một chiều (2 điểm)
b. Viết hàm xem mảng một chiểu (2 điểm)
c. Viết hàm tạo một mảng một chiều b gồm các phần tử đại diện lấy từ mảng một chiều a (3 điểm)
Chẳng hạn: mảng a: 1 2 4 3 2 1 5 2
mảng b: 1 2 4 3 5
Viết hàm main sử dụng các hàm trên để đọc các phần tử của tệp input.txt vào một mảng một chiểu a. Tạo mảng một chiều b gồm các phần tử đại diện của mảng a. Cho xem các mảng a, b. (2 điểm)

Trường Đại Học Vinh_ Thực tập cơ sơ...
Mong đc giúp đỡ.. trên C thường thui nhé

sao không có giới hạn số phần tử và giá trị của mỗi phần tử nhỉ?

EmilyThief
21-01-2013, 11:37 AM
Đây là đề thi C++ ở trường mình. Trường mình thì vui 1 cái là dạy một đường ra đề một nẻo.(:-)??

Câu 1: Cho một ma trận A gồm m hàng và n cột. Hãy viết chương trình nhập vào các giá trị cho A. Viết chương trình xuất các giá trị vừa nhập cho A. Tìm và in ra giá trị và chỉ số của phần tử lẻ cuối cùng trong ma trận A. Tính tổng các phần tử chẵn hàng thứ 2 của A. (2 cái nhập xuất thì làm dễ dàng, đến 2 cái sau thì bó tay toàn tập luôn, cả lớp ngơ ngác nhìn nhau vì chưa gặp dạng này bao giờ (:X))

Câu 2: Cho cấu trúc NHANVIEN gồm HoTen, NamSinh, BacLuong. Khai báo mảng NV[10]:
- Xây dựng hàm Nhap() để nhập vào họ tên, năm sinh, bậc lương của NV.
- Xây dựng hàm In() để in họ tên NV.
- Xây dựng hàm SapXep() để xếp lại mảng NV theo chiều giảm dần của bậc lương. Gọi hàm In() để in ra màn hình họ tên của từng phần tử mảng sau khi sắp xếp.
- Xây dựng hàm main() để gọi tất cả. ((:-)? Câu này thì thật sự chưa có ai dạy, lên lớp thầy cô toàn cưỡi ngựa xem hoa, học sinh thì ngồi mở hép-lai ra bắn với nhau....)

Ai giúp em giải 2 bài trên với ạ!(D:)>

vyexempy
02-03-2013, 03:54 AM
Đây là bài mình thi hôm vừa rồi, hôm đấy thầy đã đến muộn đề lại còn khoai, lại chỉ đc làm trong 90 phút, rất chi là bức xúc nhóe.
up đề lên cho mọi người tham khảo, mọi người có thể ko cần làm theo queue cũng được
Hoan nghênh chủ thớt code bài này

Đề thi học kỳ môn:C programming Basic
Dành cho sinh viên chương trình Việt Nhật-CNTT-DHBKHN-thời gian 90 phút
Giảng viên:Mr Cao Tuấn Dũng ngày 8/12/2010
Sinh viên được sử dụng tài liệu, mọi kiến thức đã học, chép bài nhau thoải mái( ăn 0 ráng chịu)

Mô phỏng trò chơi " Luận võ"
Cuộc thi đấu luận võ giữa 2 môn phái được tiến hành theo thể thức đồng đội, 1 vs 1 và theo lượt.
Hai môn phái cử lần lượt từng võ sĩ tiến vào võ đài và thi đấu. thắng ở lại thi đấu tiếp, thua thì lượn,
người khác lên thay. Môn phái nào hết võ sĩ thi đấu trước sẽ thua cuộc. Viết chương trình mô phỏng
trò chơi với menu dòng lệnh thực hiện:
1. Đọc dữ liệu(4.5 point)
Thông tin của các võ sĩ được lưu trong 2 tập tin monphai1.txt va monphai2.txt. mỗi dòng là
thông tin của 1 người theo định dạng:
<biet_hieu> <mau> <tancong> <nhanhnhen> <phongthu>
biệt hiệu: kiểu xâu;
còn lại là số nguyên dương.
các thông tin này được đọc vào 2 hàng đợi thi đấu ứng với 2 môn phái. kết thúc quá trình đọc in ra
danh sách đấu thủ của 2 môn phái với đủ thông tin, có đánh thứ tự và căn lề theo cột
Yêu cầu: nếu có số liệu không hợp lệ chương trình báo lỗi, trở về manu
số lượng 2 bên không cân bằng, hiện thông báo, thóat chương trình
2. thi đấu(3 point)
các đấu thủ từ hàng đợi ra võ đài. Hai đối thủ thi đấu theo lượt đánh. Người có chỉ số nhanhnhen
cao hơn tấn công trước. mức độ tổn hại sẽ được trừ vào máu của đối thủ như sau:
Người tấn công.<tancong> - nguoi phong thu.<phongthu>
người phòng thủ nếu không bị hết máu sẽ tấn công lại cho đến khi 1 người bị loại. Người tấn công 1
lần duy nhất mà đối thủ bị down thì gọi là KNOCKOUT. người thắng sẽ tiếp tục thi đấu với chỉ số hiện tại.

In diễn biến trận đấu ra màn hình. ví dụ:

Tran 1:Monphai1-Nguoisat(4 thông số) vs Monphai2-tiachop(4 thông số)
nguoisat(mau) tan cong-tiachop(mau) mất ... máu
( nếu tia chớp bị loại thì thông báo KNOCKOUT, nếu không thì tiếp tục)
tiachop(mau)tan cong-nguoisat(mau) mất ... máu
...
Tran2:...
...
Kết quả:Môn phái 1 thua

3. Xếp hạng(2 point)
mỗi lần tấn công đối thủ mỗi võ sĩ đc 1 điểm, nếu ra đòn knockout thì đc 3 điểm.. In ra bảng xếp hạng tổng
hợp theo chiều giảm dần điểm số.

4. thóat chương trình

Đề thi kiểu này dài .... ai làm được thì rất có tư duy đó. Test thử đi anh em.

utbong48
14-03-2013, 11:03 PM
Mọi người cùng nghiên cứu làm mấy bài này nào

dinhhai22
30-04-2013, 08:18 AM
Câu 1: Anh chj hãy viết chương trình tính và hiễn thị lên màn hình tổng (2diem)
S=1! + 2! +3! +....+n!
Với n nguyên dương được nhập từ bàn phím
Câu 2: Anh chj hãy viết chương trình nhập và hiễn thị hàng hóa gồm các MaSo, tenHang, Soluong, Gia.
Yêu cầu:
- Khai báo câu trúc hàng hóa gồm các trường nêu trên
- Xây dựng hàm NHAP(HANGHOA hh[], int n): để nhập n mặt hàng có cấu trúc HANGHOA.
- Xây dựng hàm HIENTHI(HANGHOA hh[], int n), để hiễn thị danh sách các mặt hàng theo dạng:
DANH SÁCH HÀNG HÓA
Ma so TenHang SoLuong Gia
HH001 Máy điều hòa 10 11000
HH002 Máy hút bụi 20 2000
- Xây dựng hàm main() để thực hiện nhập số n từ bàn phím, nhập n hàng hóa và hiễn thị danh sách hàng hóa

dinhhai22
30-04-2013, 08:27 AM
Câu 1: Anh chj hãy viết chương trình tính và hiễn thị lên màn hình tổng (2diem)
S=1! + 2! +3! +....+n!
Với n nguyên dương được nhập từ bàn phím
Câu 2: Anh chj hãy viết chương trình nhập và hiễn thị hàng hóa gồm các MaSo, tenHang, Soluong, Gia.
Yêu cầu:
- Khai báo câu trúc hàng hóa gồm các trường nêu trên
- Xây dựng hàm NHAP(HANGHOA hh[], int n): để nhập n mặt hàng có cấu trúc HANGHOA.
- Xây dựng hàm HIENTHI(HANGHOA hh[], int n), để hiễn thị danh sách các mặt hàng theo dạng:
DANH SÁCH HÀNG HÓA
Ma so TenHang SoLuong Gia
HH001 Máy điều hòa 10 11000
HH002 Máy hút bụi 20 2000
- Xây dựng hàm main() để thực hiện nhập số n từ bàn phím, nhập n hàng hóa và hiễn thị danh sách hàng hóa

THI9X
30-04-2013, 06:22 PM
Đây là bài mình thi hôm vừa rồi, hôm đấy thầy đã đến muộn đề lại còn khoai, lại chỉ đc làm trong 90 phút, rất chi là bức xúc nhóe.
up đề lên cho mọi người tham khảo, mọi người có thể ko cần làm theo queue cũng được
Hoan nghênh chủ thớt code bài này

Đề thi học kỳ môn:C programming Basic
Dành cho sinh viên chương trình Việt Nhật-CNTT-DHBKHN-thời gian 90 phút
Giảng viên:Mr Cao Tuấn Dũng ngày 8/12/2010
Sinh viên được sử dụng tài liệu, mọi kiến thức đã học, chép bài nhau thoải mái( ăn 0 ráng chịu)

Mô phỏng trò chơi " Luận võ"
Cuộc thi đấu luận võ giữa 2 môn phái được tiến hành theo thể thức đồng đội, 1 vs 1 và theo lượt.
Hai môn phái cử lần lượt từng võ sĩ tiến vào võ đài và thi đấu. thắng ở lại thi đấu tiếp, thua thì lượn,
người khác lên thay. Môn phái nào hết võ sĩ thi đấu trước sẽ thua cuộc. Viết chương trình mô phỏng
trò chơi với menu dòng lệnh thực hiện:
1. Đọc dữ liệu(4.5 point)
Thông tin của các võ sĩ được lưu trong 2 tập tin monphai1.txt va monphai2.txt. mỗi dòng là
thông tin của 1 người theo định dạng:
<biet_hieu> <mau> <tancong> <nhanhnhen> <phongthu>
biệt hiệu: kiểu xâu;
còn lại là số nguyên dương.
các thông tin này được đọc vào 2 hàng đợi thi đấu ứng với 2 môn phái. kết thúc quá trình đọc in ra
danh sách đấu thủ của 2 môn phái với đủ thông tin, có đánh thứ tự và căn lề theo cột
Yêu cầu: nếu có số liệu không hợp lệ chương trình báo lỗi, trở về manu
số lượng 2 bên không cân bằng, hiện thông báo, thóat chương trình
2. thi đấu(3 point)
các đấu thủ từ hàng đợi ra võ đài. Hai đối thủ thi đấu theo lượt đánh. Người có chỉ số nhanhnhen
cao hơn tấn công trước. mức độ tổn hại sẽ được trừ vào máu của đối thủ như sau:
Người tấn công.<tancong> - nguoi phong thu.<phongthu>
người phòng thủ nếu không bị hết máu sẽ tấn công lại cho đến khi 1 người bị loại. Người tấn công 1
lần duy nhất mà đối thủ bị down thì gọi là KNOCKOUT. người thắng sẽ tiếp tục thi đấu với chỉ số hiện tại.

In diễn biến trận đấu ra màn hình. ví dụ:

Tran 1:Monphai1-Nguoisat(4 thông số) vs Monphai2-tiachop(4 thông số)
nguoisat(mau) tan cong-tiachop(mau) mất ... máu
( nếu tia chớp bị loại thì thông báo KNOCKOUT, nếu không thì tiếp tục)
tiachop(mau)tan cong-nguoisat(mau) mất ... máu
...
Tran2:...
...
Kết quả:Môn phái 1 thua

3. Xếp hạng(2 point)
mỗi lần tấn công đối thủ mỗi võ sĩ đc 1 điểm, nếu ra đòn knockout thì đc 3 điểm.. In ra bảng xếp hạng tổng
hợp theo chiều giảm dần điểm số.

4. thóat chương trình


đúng là đề hedspi. thật là dị.
nhưng mà đây là đề môn C ở năm đầu à??

hoangtoro
05-05-2013, 03:30 PM
[QUOTE=dinhhai22;609724]Câu 1: Anh chj hãy viết chương trình tính và hiễn thị lên màn hình tổng (2diem)
S=1! + 2! +3! +....+n!
Với n nguyên dương được nhập từ bàn phím

#include<stdio.h>
#include<conio.h>
#include<iostream.h>
int giaithua(int n){
int gt=1;
for (int i=1;i<=n;i++){
gt=gt*i;
}
return gt;
}
main(){
int n;
cout <<"n:";
cin >>n;
int t=0;
cout <<"Tong :1!+2!+3!+...+n!=";
for (int i=1;i<=n;i++){
t=t+giaithua(i);
}
cout << t;
getch();
}

lamdttm
07-05-2013, 07:52 PM
câu 1 :nhập một dãy n số bất kỳ từ bàn phím với n<10, tính trung bình cộng các số âm, tổng các số dương, đếm các số 0 trong dãy, nhập 1 số x bất kỳ, in ra vị trí các số trong dãy có giá trị x

sacdac999
09-05-2013, 08:19 PM
Câu 1: cho một mảng 10 phần tử kiểu số nguyên sắp xếp theo chiều tăng dần sau đó chèn 1 phần tử có giá trị tùy ý vào mảng vẩn được sắp thứ tự (giả sử số phần tử nhập <10)
Ví Dụ: 11 7 44 8 33 65 24 45 2
In ra: 2 7 8 11 24 33 44 45 65 nhập x=19
In ra: 2 7 8 11 19 24 33 44 45 65

Câu 2:cho 1 mảng có 10 phần tử kiểu số nguyên viết các hàm thực hiện:
1 nhập mảng
2 xuất mảng
3 nhập vào một số nguyên x kiểu 5 a x có trong mảng không ?
- Điền số lần xuất hiện của phần tử x trong mảng
- In ra tất cả các vị trí xuất hiện của x trong mảng

thanks mọi người mong mọi người giúp đỡ

__Furinz__
10-05-2013, 12:07 AM
Đề số 2: Lập trình dạng hàm (chương trình con) thực hiện:
1. Nhập danh sách n sinh viên gồm họ tên, ngày sinh (kiểu cấu
trúc), điểm thi và lưu vào mảng
2. Hiện danh sách sinh viên ra màn hình theo dạng
STT Ho ten
Ngay sinh Diem
3. Sắp xếp danh sách giảm dần của điểm thi và hiện danh sách ra
màn hình
4. Cho biết có bao nhiêu sinh viên thi trượt (Điểm thi <5)
5. Nhập vào tên sinh viên và cho biết sinh viên đó có trong danh
sách không
6. Thực hiện thêm một sinh viên vào cuối danh sách, hiện danh
sách sau khi thêm.
7. Xóa các sinh viên có tên nhập từ bàn phím khỏi danh sách,
hiện danh sách sau khi xóa
8. Ghi danh sách sinh viên vào tệp "SV.DAT".

chimung
04-07-2013, 11:18 PM
Câu 1: cho một mảng 10 phần tử kiểu số nguyên sắp xếp theo chiều tăng dần sau đó chèn 1 phần tử có giá trị tùy ý vào mảng vẩn được sắp thứ tự (giả sử số phần tử nhập <10)
Ví Dụ: 11 7 44 8 33 65 24 45 2
In ra: 2 7 8 11 24 33 44 45 65 nhập x=19
In ra: 2 7 8 11 19 24 33 44 45 65


Phần bổ sung thêm 1 số thì mình thấy ko khác gì việc sắp xếp lại từ đầu mảng nhập vào nên bỏ qua đoạn đó :D

#include <stdio.h>
int nhap[10],in[10];

void ham_nhap();
void sap_xep();
void in_mang();
int* tim_min();

void main()
{
ham_nhap();
sap_xep();
in_mang();
}

void ham_nhap()
{
int i=0;
for (;i<10;++i)
{
printf("so thu %d:",i);
scanf("%d",&nhap[i]);
}
}

void sap_xep()
{
int i;
int *tmp;
for (i=0;i<10;)
{
tmp=tim_min();
in[i]=*tmp;
*tmp=-1;//phần tử đã xét giá trị min. Loại ra khỏi danh sách nhap[]
i+=1;
}

}

void in_mang()
{
int i=0;
for (;i<10;++i)
printf("%d ",in[i]);
}


int* tim_min()
{
int i=0;
int *valmin;//Value min

for (;i<10;)//khỏi tạo giá trị min hiện có trong mảng nhap[]
{
if (nhap[i]!=-1)
{
valmin=&nhap[i];
break;
}
i+=1;
}

for (;i<10;)//tìm giá trị min
{
if (nhap[i]==-1)
{
i+=1;
continue;
}
if (nhap[i]<(*valmin))
{
valmin=&nhap[i];
}
i+=1;
}

return valmin;
}

Code xấu. mọi ng góp ý nhé!

giocuaem2012
05-07-2013, 01:36 AM
Phần bổ sung thêm 1 số thì mình thấy ko khác gì việc sắp xếp lại từ đầu mảng nhập vào nên bỏ qua đoạn đó :D

#include <stdio.h>
int nhap[10],in[10];

void ham_nhap();
void sap_xep();
void in_mang();
int* tim_min();

void main()
{
ham_nhap();
sap_xep();
in_mang();
}

void ham_nhap()
{
int i=0;
for (;i<10;++i)
{
printf("so thu %d:",i);
scanf("%d",&nhap[i]);
}
}

void sap_xep()
{
int i;
int *tmp;
for (i=0;i<10;)
{
tmp=tim_min();
in[i]=*tmp;
*tmp=-1;//phần tử đã xét giá trị min. Loại ra khỏi danh sách nhap[]
i+=1;
}

}

void in_mang()
{
int i=0;
for (;i<10;++i)
printf("%d ",in[i]);
}


int* tim_min()
{
int i=0;
int *valmin;//Value min

for (;i<10;)//khỏi tạo giá trị min hiện có trong mảng nhap[]
{
if (nhap[i]!=-1)
{
valmin=&nhap[i];
break;
}
i+=1;
}

for (;i<10;)//tìm giá trị min
{
if (nhap[i]==-1)
{
i+=1;
continue;
}
if (nhap[i]<(*valmin))
{
valmin=&nhap[i];
}
i+=1;
}

return valmin;
}

Code xấu. mọi ng góp ý nhé!
Biết xấu ko sửa đi.
1, biến toàn cục
2. sắp xếp có mấy thuật toán, ko chịu xem, lại đi làm vòng vo. Bạn tim google có cả đống code sắp xếp.
3. Ở đây ng ta sắp xếp xong mới thêm vào. sao lại ko khác


//ý tưởng của bạn đây
void SapXep(int a[], int n){
int i=0,j=0;
int min,vt;
for(i=0;i<n-1;i++)
{
min=a[i];
vt=i;
for(j=i+1;j<n;j++)
{
if(min>a[j]){
min=a[j];vt=j;
}
}
if(vt!=i){
a[vt]=a[i];
a[i]=min;
}
}}

__Furinz__
09-08-2013, 01:46 PM
Đề bài: Xây dựng chương trình xử lý phép toán cộng trên tập số lớn.

Số lớn được hiểu là số có độ dài lớn, ta không thể dùng các kiểu dữ liệu cơ bản trong C/C++ (như char,

int, long,…) để khai báo.

Yêu cầu chung:

1. Thiết kế các chương trình con thực hiện các chức năng cơ bản.

2. Chương trình có ghi/đọc dữ liệu từ các tệp liên quan.

3. Chương trình tối thiểu phải giải quyết được một số yêu cầu sau:

a) Nhập 2 số lớn (độ dài dưới 300 chữ số).

b) Tính tổng 2 số vừa nhập và hiện kết quả.

c) Nhập một mảng N số lớn. Tính tổng các số trong mảng.

d) Tự động tạo 1 số lớn có độ dài k (k nhập từ bàn phím, k<=300), kiểm tra và thông báo

số vừa tạo là có báo nhiêu chữ số, là số chẵn hay lẻ, có chia hết cho 5?,…

e) Lưu một danh sách N số lớn vào tệp, đọc tệp và hiển thị các số chẵn ra màn hình.

yahooms7
15-09-2013, 04:57 AM
Bạn nào gửi bài giải của
ECE 190 - Introduction to Computing System của trường Đại học Bách Khoa TPHCM (chương trình đào tạo tiên tiến)
cho mình tham khảo với :)
Mới nhập môn C(:-)?? các bạn ơi @@
cám ơn

tombong2007
25-09-2013, 10:57 PM
đề là nhập vào một số tự nhiên n > 0, hãy tìm và in ra màn hình những số nguyên tố thuộc trong khoảng từ 0->n
bro giúp e tìm thuật toán với :(

prog10
25-09-2013, 11:12 PM
đề là nhập vào một số tự nhiên n > 0, hãy tìm và in ra màn hình những số nguyên tố thuộc trong khoảng từ 0->n
bro giúp e tìm thuật toán với :(
Sàng Eratosthene.

XanhBiec
05-10-2013, 04:22 AM
Câu 2 làm bằng C++ đó.

Code mình làm phần 2.1 và 2.2. Đã test thử, thấy ra kết quả đúng. Tuy nhiên vẫn cần sự nhận xét của mọi người về cách làm:


#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
int ktnt(int b);

void docfile(int a[],int *n)
{
*n=0;
FILE *f;
f=fopen("numbers.txt","r");
if(!f){
printf("Error!");
getch();
exit(0);
}
while (!feof(f))
{
// Doc file vao mang
fscanf(f,"%d",&a[*n]);
(*n)++;
}
(*n)--;
fclose(f);
}
void xuat(int a[])
{
int i;
printf("\nCau 1: ");
for(i=1;i<=a[0];i++)
{
// Kiem tra dieu kien va in ket qua cau 2.1 ra man hinh: la so nguyen to, 10<a[i]<1000;
if (ktnt(a[i])==1&&a[i]>10&&a[i]<1000)
printf("%d ",a[i]);
}
}
// Ham kiem tra so nguyen to
int ktnt(int b)
{
if (b>1)
{
for (int j=2;j<=sqrt(b);j++)
if (b%j==0) return 0;
return 1;
}
return 0;
}
// Ham kiem tra UCNL
int timuoc(int m, int n)
{
int r;
if (m%n!=0)
{
while (m%n!=0)
{
r=(m%n);
m=n;
n=r;
}
}
if (r==1) return 1;
else return 0;
}
int main()
{
int n, a[100];
docfile(a,&n);
xuat(a);
printf("\nCau 2: ");
// Kiem tra a[i], a[j] khong la nguyen to va in ra neu la nguyen to cung nhau
for (int i=1; i<a[0];i++)
{
for (int j=i+1;j<=a[0];j++)
{
if ((timuoc(a[i],a[j])==1)&&(ktnt(a[i])==0)&&(ktnt(a[j])==0))
{
printf("(%d, %d) ",a[i],a[j]);
}
}
}
getch();
return 0;
}

XanhBiec
12-10-2013, 10:28 AM
đề là nhập vào một số tự nhiên n > 0, hãy tìm và in ra màn hình những số nguyên tố thuộc trong khoảng từ 0->n
bro giúp e tìm thuật toán với :(

Không biết có đúng không (Mình dùng Turbo C++ 4.5) |-)

#include <conio.h>
#include <stdio.h>
#include <math.h>

int ktnt(int b)
{
if (b>1)
{
for (int j=2;j<=sqrt(b);j++)
if (b%j==0) return 0;
return 1;
}
return 0;
}
int main()
{
int n,i;
printf("Nhap n=");
scanf("%d",&n);
for (i=0;i<=n;i++)
{
if (ktnt(i)==1)
printf("%d ",i);
}
getch();
return 0;
}

zaperbk
10-11-2013, 06:29 PM
Trong không gian 3 chiều oxyz cho một điểm G có tọa độ xác định.Các phép biến đổi tọa độ được thực hiện trên G chia làm 2 loại gồm phép tịnh tiến và phép quay.Cụ thể như sau:
-phép tịnh tiến:
Cú pháp:X length hoặc Y length hoặc Z length
Ý nghĩa:tịnh tiến ddiemr G từ vị trí hiện tại dọc theo trục 0x hoặc Oy hoặc Oz một khoảng có độ dài bằng length
-phép quay
Cú pháp:RX Angle hoặc RY Angle hoặc RZ Angle
Ý nghĩa: quay điểm G quanh trục X hoặc Y hoặc Z một góc Angle độ.Chiều dương là chiều ngược chiều kim đồng hồ
Trên điểm G tiến hành liên tiếp n phép biến đổi tọa độ.Với tọa dộ ban đầu cua G là biết trước,hãy xác địh tọa độ cuối của G.Biết rằng,điểm G chỉ được phép di chuyển trong một vùng giới hạn bởi các tọa độ[Xmin,Ymin,Zmin]đến[Xmax,Ymax,Zmax].Các phép biến đổi tọa độ vượt ra ngoài vùng giới hạn này sẽ bị bỏ qua và thực hiện các phép biến đổi tiếp theo.
Dữ liệu vào được cho trong file Cordinator.IN có cấu trúc như sau:
-dòng đầu tiên gồm 3 số thực cách nhau bởi dấu cách là tọa độ ban đầu của điểm G.các tọa độ được ghi theo thứ tự X,Y,Z
-Dòng thứ 2 gồm 3 số thực cách nhau bởi dấu cách là các tọa độ giới hạn cực tiểu:Xmin,Ymin,Zmin
-Dòng thứ 2 gồm 3 số thực cách nhau bởi dấu cách là các tọa độ giới hạn cực đại:Xmax,Ymax,Zmax
-Các dòng tiếp theo,mỗi dòng chứa 1 lệnh biến đổi tọa độ.Có ít nhất 01 lệnh và có không quá 100 lệnh.
Kết quả tính toán được ghi ra file Cordinator.OUT gồm hai dòng:
-Dòng thứ nhất ghi số lệnh bị bỏ qua và danh sáh các lệnh bị bỏ qua.Các số liệu cách nhau bởi dấu cách.
-Dòng thứ hai ghi tọa độ cuối của điểm G.Các tọa độ được ghi theo thứ tự X,Y,Z và cách nhau bởi dấu cách.

prog10
10-11-2013, 07:12 PM
@^^:
(2.1) Cách đó không hay lắm trong tr` hợp này.
Còn cách nhanh hơn.
(2.2) Quả là khó có thể nghĩ ra cách nào hơn brute force.

linhb1204928
13-11-2013, 07:54 AM
viết chương trình nhập vào một dãy n số thức. IN mang đã nhập ra màn hình. Sau đó Nhập vào một số thực mới đếm số lần xuất hiện va cac vị trí xuất hiện của số thức mới này. in kết quả ra màn hình. Sắp xếp dãy theo thứ tự tăng dần (D:)>

Sagittarius_huy
06-01-2014, 03:42 PM
trường ĐH Lạc Hồng

Xây dựng cấu trúc Căn nhà gồm các thông tin : số nhà, địa chỉ, họ tên chủ nhà, số nhân khẩu.
Nhập vào thông tin của n căn nhà (N<=100). Sắp xếp các căn nhà theo thứ tự tăng dần của số nhân khẩu.
In họ tên chủ nhà nào có số nhân khẩu nhiều nhất.

#include<conio.h>
#include<stdio.h>
#include<iostream>

struct cannha
{
int sonhankhau;
char sonha[10], diachi[50], tenchunha[50];
};
void nhap(cannha a[], int &n)
{
cout<<"Ban muon nhap bao nhieu nha : ";
cin>>n;
for(int i=0; i<n; i++)
{
cout<<"So nha : ";
cin>>a[i].sonha;
cout<<"Dia chi : ";
cin>>a[i].diachi;
cout<<"Ten chu nha : ";
cin>>a[i].tenchunha;
cout<<"Nhan khau : ";
cin>>a[i].sonhankhau;
cout<<"===============================\n";
}
}

void xuat(cannha a[],int &n)
{
for(int i=0;i<n;i++)
{
cout<<"\n So nha : "<<a[i].sonha;
cout<<"\n Dia chi : "<<a[i].diachi;
cout<<"\n Ten chu nha : "<<a[i].tenchunha;
cout<<"\n Nhan khau : "<<a[i].sonhankhau;
}
}

void sapxep(cannha a[], int n)
{
cannha b;
for(int i=0;i<n-1;i++)
for(int j=i+1;j<n;j++)
if(a[i].sonhankhau > a[j].sonhankhau)
{
b.sonhankhau = a[i].sonhankhau;
a[i].sonhankhau = a[j].sonhankhau;
a[j].sonhankhau = b.sonhankhau;

b.sonha = a[i].sonha;
a[i].sonha = a[j].sonha;
a[j].sonha = b.sonha;

b.diachi = a[i].diachi;
a[i].diachi = a[j].diachi;
a[j].diachi = b.diachi;

b.tenchunha = a[i].tenchunha;
a[i].tenchunha = a[j].tenchunha;
a[j].tenchunha = b.tenchunha;
}

cout<<"\n--- So nhan khau tang dan --- ";
for(int i=0;i<n;i++)
{
cout<<"\n So nha : "<<a[i].sonha;
cout<<"\n Dia chi : "<<a[i].diachi;
cout<<"\n Ten chu nha : "<<a[i].tenchunha;
cout<<"\n Nhan khau : "<<a[i].sonhankhau;
}

}
void main()
{
cannha a[100];
int n;
nhap(a,n);
cout<<"---Thong Tin Nha----";
xuat(a,n);
cout<<"********************\n";
sapxep(a,n);
cout<<"\n Nha co so nhan khau nhieu nhat : "<<a[n-1].tenchunha;
getch();
}

kieunuhn
15-01-2014, 06:38 AM
@@ hay llam, okokokokokokokoko

MrNocTV
16-01-2014, 10:04 AM
Trường đại học công nghệ thông tin
Đề thi thực hành nhập môn lập trình - Đề số 1
Học kì I, năm học 2-13-2014. Lớp IT001.E19
Thời gian 60 phút
-Sinh viên không được phép sử dụng tài liệu
-Sinh viên lưu bài với tên tập tin chính là Mã Số Sinh Viên của mình
-Ở đầu tập tin sinh viên phải ghi thông tin của mình dưới dạng ghi chú như sau:
/*
Họ Tên:
MSSV:
Lớp:
Đề số:
*/


Nội dung đề thi
Viết chương trình xây dựng các hàm sau trên mảng 2 chiều (ma trận) A:
1 (3đ) Phát sinh giá trị ngẫu nhiên cho A thỏa các điều kiện sau:
- Mỗi phần tử của A là một số nguyên nằm trong khoảng từ 5-15
- Số dòng bằng số cột = n và 2<=n<=6
2 (2đ) Tính tổng các số lẻ của ma trận A
3 (2đ) Kiểm tra ma trận A có đối xứng qua đường chéo chính không. Nếu A đối xứng qua đường chéo chính, kết quả trả về của hàm là true, ngược lại false
4 (2đ) Xây dựng hàm kiểm tra số nguyên tố bằng phương pháp đệ quy. Sau đó, xuất các số nguyên tố nằm trên đường chéo phụ của ma trận A ra màn hình
Viết hàm main() để kiểm tra các thao tác trên (1đ)




/*
Ho va Ten: TVL
MSSV: 13520460
Lop:
De so: 1
*/

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define MAX 100

/*********************PROTOTYPE******************** */
void Input(int (*a)[MAX],int n); //ham nhap
void Print(int (*a)[MAX],int n); //ham xuat
int Check_Symmetric(int (*a)[MAX],int n); //ham kiem tra ma tran doi xung qua duong cheo chinh
int Check_Primes(int a); //ham kiem tra so nguyen to bang de quy
int Sum_Odd_Number(int (*a)[MAX],int n); //ham tinh tong cac so le trong ma tran
void Print_Prime_On_Part_Cross(int (*a)[MAX],int n); //ham xuat cac so nguyen to tren duong cheo phu ra man hinh
/************************************************** */

int k=1,count=0;

/************************************MAIN********** ***************************/
int main(){
int a[MAX][MAX],n,check;
srand((unsigned) time(NULL));
n=rand()%5+2;
Input(a,n);
Print(a,n);
printf("Chekc if matrix is symmetric through main cross(True\\False): ");
if(Check_Symmetric(a,n))
printf("True! \n");
printf("False! \n");
printf("\n Sum of all odd numbers in matrix: \n");
printf("Sum odd= %d \n",Sum_Odd_Number(a,n));
Print_Prime_On_Part_Cross(a,n);
getchar();
return 0;
}
/************************************************** ***************************/

void Input(int (*a)[MAX],int n){
int i,j;
printf("Input matrix: \n");
srand((unsigned) time(NULL));
for(i=0;i<n;++i)
for(j=0;j<n;++j){
a[i][j]=rand()%11+5;
}
printf("\n");
}

void Print(int (*a)[MAX],int n){
int i,j;
printf("Print matrix: \n");
for(i=0;i<n;++i){
for(j=0;j<n;++j)
printf("%d\t",a[i][j]);
printf("\n");
printf("\n");
}
printf("\n");
}

int Sum_Odd_Number(int (*a)[MAX],int n){
int i,j,sum=0;
for(i=0;i<n;++i)
for(j=0;j<n;++j)
if(a[i][j]%2!=0)
sum+=a[i][j];
return sum;
}

int Check_Primes(int a){
if(k==a){
count++;
return count;
}
else{
if(a%k==0){
count++;
k++;
return Check_Primes(a);
}
else{
k++;
return Check_Primes(a);
}
}
}

int Check_Symmetric(int (*a)[MAX],int n){
int i,j,temp1[MAX],temp2[MAX],count=0,count1=0,count2=0,t1=1,t2=1;
do{
for(i=0;i<n;++i)
for(j=0;j<n;++j)
if(i-j==t1)
temp1[count1++]=a[i][j];
t1++;
}while(t1<n);

do{
for(i=0;i<n;++i)
for(j=0;j<n;++j)
if(j-i==t2)
temp2[count2++]=a[i][j];
t2++;
}while(t2<n);
for(i=0;i<t1;++i)
if(temp1[i]==temp2[i])
count++;
return count==t1;
}

void Print_Prime_On_Part_Cross(int (*a)[MAX],int n){
int i,j,temp[MAX],count=0;
for(i=0;i<n;++i)
for(j=0;j<n;++j)
if(i+j==(n-1))
temp[count++]=a[i][j];
for(i=0;i<count;++i)
if(Check_Primes(temp[i])==2)
printf("%d\t",temp[i]);
printf("\n");
}


Đề số 2:


Viết chuơng trình xây dựng các hàm sau trên mảng 2 chiều (ma trận) B
1 (3đ) Phát sinh giá trị ngẫu nhiên cho B thỏa các điều kiện sau:
- Mỗi phần tử của B là một số nguyên nằm trong khoảng từ 10 - 20
- Số dòng = số cột = n và 2<=n<=6
2 (2đ) Tính tổng các số chẵn của ma trận B
3 (2đ) Kiểm tra trong ma trận B có tồn tại số chính phương nào không. Nếu trong B có tồn tại số chính phương, kết quả trả về của hàm la true,ngược lại false.
4 (2đ) Xây dựng hàm tính x^n bằng phương pháp đệ quy. Sau đó dùng hàm tính lũy thừa này để đổi các giá trị của các phần tử trong ma trận B bằng lũy thừa k của giá trị đó
k được nhập từ bàn phím
Viết hàm main() để kiểm tra thao tác trên(1đ)




/*
Ho Ten: TVL
MSSV:13520460
Lop:
De so: 2
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define MAX 101

/*******************************PROTOYPE*********** ***********************/
void Input(int (*a)[MAX],int n); //ham nhap matrix
void Print(int (*a)[MAX],int n); //ham in matrix
int Sum_Even_Num(int (*a)[MAX],int n); //ham tinh tong cac so chan trong matrix
int Check_Square_Number(int n); //ham kiem tra so chinh phuong
int Check_Matrix(int (*a)[MAX],int n); //ham kiem tra matrix co so chinh phuong khong
int Pow(int x,int n); //ham tinh x^n bang de quy
void Change(int (*a)[MAX],int n); //ham thay doi matrix theo cau 4
/************************************************** ***********************/

/************************************MAIN********** ****************************/
int main(){
int n,a[MAX][MAX];
srand((unsigned) time(NULL));
n=rand()%5+2;
Input(a,n);
Print(a,n);
printf("\nSum of evens numbers in matrix: %d\n",Sum_Even_Num(a,n));
if(Check_Matrix(a,n))
printf("True!\n");
else
printf("False!\n");
Change(a,n);
getchar();
return 0;
}
/************************************************** *****************************/

void Input(int (*a)[MAX],int n){
int i,j;
srand((unsigned) time(NULL));
for(i=0;i<n;++i)
for(j=0;j<n;++j)
a[i][j]=rand()%11+10;
printf("\n");
}

void Print(int (*a)[MAX],int n){
int i,j;
for(i=0;i<n;++i){
for(j=0;j<n;++j)
printf("%d\t",a[i][j]);
printf("\n");
printf("\n");
}
}

int Sum_Even_Num(int (*a)[MAX],int n){
int i,j,sum=0;
for(i=0;i<n;++i)
for(j=0;j<n;++j)
if(a[i][j]%2==0)
sum+=a[i][j];
return sum;
}

int Check_Square_Number(int n){
int i=1;
while(i<=n/2){
if(i*i==n)
return true;
i++;
}
return false;
}

int Check_Matrix(int (*a)[MAX],int n){
int i,j,count=0;
for(i=0;i<n;++i)
for(j=0;j<n;++j)
if(Check_Square_Number(a[i][j]))
count++;
return count!=0;
}

int Pow(int x,int n){
if(n==1)
return x;
return x*Pow(x,n-1);
}

void Change(int (*a)[MAX],int n){
int i,j,k;
printf("\n Enter K: ");
scanf("%d",&k);
for(i=0;i<n;++i)
for(j=0;j<n;++j)
a[i][j]=Pow(a[i][j],k);
printf("\nMatrix after being changed: \n");
Print(a,n);
}

cazs23
22-02-2014, 08:51 AM
Có pro nào hướng dẫn em bài này với em làm mãi không ra :'(
Viết chương trình nhập vào số nguyên dương n, in ra màn hình và đếm xem n có bao nhiêu chữ số là số nguyên tố.
giúp em với

MrNocTV
28-02-2014, 07:17 PM
Có pro nào hướng dẫn em bài này với em làm mãi không ra :'(
Viết chương trình nhập vào số nguyên dương n, in ra màn hình và đếm xem n có bao nhiêu chữ số là số nguyên tố.
giúp em với

VD: 14578

Viết hàm kiểm tra số nguyên tố: CheckPrime(int a);
Viết hàm đếm xem trong số n có bao nhiêu chữ số là số nguyên tố: CountPrime(int n), hàm này trả về số lượng chữ số nguyên tố có trong n.
Khai báo biến đếm Count=0;
Lặp lại công việc sau:
Chia n % 10 , dùng hàm kiểm tra số nguyên tố kiểm tra kết quả (nếu là số nguyên tố thì Count++, dừng vòng lặp khi n/=10=0, cũng là phép chia cuối cùng.
n/=10;

Bạn cũng có thể dùng chuỗi, truong trường hợp nhập vào 1 số quá dài, các kiểu giá trị không chứa được. Dùng hàm atoi để chuyển từng kì tự thành số, hoặc - '0' .

prog10
28-02-2014, 07:29 PM
^ Bài này cứ check chữ số 2, 3, 5, 7 cho đơn giản.

josvuduong
20-03-2014, 11:14 PM
chào m.n làm giúp mình bài này với.mình mới học C.Mong hồi đáp sớm của m.n. :) Viết chương trình nhập từ bàn phím 2 số nguyên dương a,b .Hãy đưa ra màn hình ước chung lớn nhất và bội chung lớn nhất của 2 số đó.

- - - Nội dung đã được cập nhật ngày 20-03-2014 lúc 11:14 PM - - -

chào m.n làm giúp mình bài này với.mình mới học C.Mong hồi đáp sớm của m.n. :) Viết chương trình nhập từ bàn phím 2 số nguyên dương a,b .Hãy đưa ra màn hình ước chung lớn nhất và bội chung lớn nhất của 2 số đó............(:=(|)(:=(|)(:=(|)(:=(|)(:=(|)(:=( |)

neverdie20111
23-03-2014, 10:35 AM
chào m.n làm giúp mình bài này với.mình mới học C.Mong hồi đáp sớm của m.n. :) Viết chương trình nhập từ bàn phím 2 số nguyên dương a,b .Hãy đưa ra màn hình ước chung lớn nhất và bội chung lớn nhất của 2 số đó.

- - - Nội dung đã được cập nhật ngày 20-03-2014 lúc 11:14 PM - - -

chào m.n làm giúp mình bài này với.mình mới học C.Mong hồi đáp sớm của m.n. :) Viết chương trình nhập từ bàn phím 2 số nguyên dương a,b .Hãy đưa ra màn hình ước chung lớn nhất và bội chung lớn nhất của 2 số đó............(:=(|)(:=(|)(:=(|)(:=(|)(:=(|)(:=( |)

Bạn đã có ý tưởng bài toán ni chưa . Nếu có rồi thì bạn trình bày lên ae giúp cho. Nếu chưa có thì ae giúp. Quan trọng là bạn phải có ý tưởng.
Bài này cũng dễ thôi . Bạn suy nghĩ đi :) chúc bạn thành công :)

prog10
23-03-2014, 10:38 AM
Bạn đã có ý tưởng bài toán ni chưa . Nếu có rồi thì bạn trình bày lên ae giúp cho. Nếu chưa có thì ae giúp. Quan trọng là bạn phải có ý tưởng.
Bài này cũng dễ thôi . Bạn suy nghĩ đi :) chúc bạn thành công :)
Cái này dễ muh :D

neverdie20111
23-03-2014, 10:39 AM
Cái này dễ muh :D
Chắc khó :(.......

kusoipro
05-06-2014, 10:42 AM
Mọi người cho em cái ý tưởng để nhập điểm vào ma trận với ! ):)T):)T):)T

Xuan Thaanh
08-08-2014, 07:25 PM
Đề thi thực hành cuối kì môn Hệ thống máy tính và ngôn ngữ C ĐH Bách Khoa TP HCM
Nhập vào mảng 2 chiều m dòng và n cột,sau đó thực hiện:
1.Tính tổng tất cả các số chẳn/lẻ của từng dòng
2.Xuất ra số lớn nhất/bé nhất của từng dòng
3.Đếm số số nguyên tố của mảng