1 [Hot] Đề bài và lời giải KTLT Tue Jun 12, 2012 10:52 pm
Câu 1: Mảng a gồm n phần tủ (100>=n>0). Viết chương trình thực hiện:
1. Nhập vào mảng a, n phần tủ, in mảng đã nhập.
2. Tìm và in ra màn hình giá trị Max, in giá trị đó ra.
3. Xóa khỏi mảng phần tử lẻ, in giá trị đó ra.
Giải:
Câu 2: Thông tin về 1 cán bộ gồm có: Họ tên, ngày công, mứ lương, thực lĩnh( thực lĩnh =ngày công x mức lương).
1. nhập danh sách n cán bộ (n nhập tư bàn phím). In danh sách đã nhập.
2. nhập vào giá trị x, in danh sách cán bộ có ngày công = x.
3. xóa danh sách cán bộ ngày công <10. In danh sách đã xóa.
Giải:
1. Nhập vào mảng a, n phần tủ, in mảng đã nhập.
2. Tìm và in ra màn hình giá trị Max, in giá trị đó ra.
3. Xóa khỏi mảng phần tử lẻ, in giá trị đó ra.
Giải:
- Code:
#include <iostream.h>
#include <conio.h>
#include <math.h>
#include <iomanip.h>
#include <stdio.h>
//====Ham nhap va in mang====
void nhapMang(int A[],int n)
{
for(int i =0;i<n;i++)
{
cout<<"A["<<i+1<<"]= ";
cin>>A[i];
}
}
void inMang(int A[], int n)
{
for(int i=0;i<n;i++)
cout<<setw(4)<<A[i];
}
//====Tim va dem Max====
int timMax(int A[],int n)
{
int Max=A[0];
for(int i=0;i<n;i++)
{
if(Max<=A[i])
Max=A[i];
}
return Max;
}
int demMax(int A[],int n)
{
int Dem=0;
for(int i=0;i<n;i++)
{
if(A[i]==timMax(A,n))
Dem++;
}
return Dem;
}
//====Xoa VTle====
void xoaVT(int A[],int &n,int vt)
{
for(int i =vt;i<n-1;i++)
A[i]=A[i+1];
n=n-1 ;
}
void xoaLe(int A[],int &n)
{
int i =0;
while (i<n)
if (A[i]%2!=0)
xoaVT(A,n,i);
else
i++;
}
//====Chuong trinh chinh====
void main()
{
int A[100];
int n;
clrscr();
cout<<"Nhap n=";cin>>n;
cout<<"Nhap gia tri cho mang:\n"; nhapMang(A,n);
cout<<"Mang vua nhap la:\n"; inMang(A,n);
cout<<"\nGia tri Max la:"<<timMax(A,n);
cout<<"\nSo phan tu Max la:"<<demMax(A,n);
cout<<"\nXoa cac phan tu le:"; xoaLe(A,n);inMang(A,n);
getch();
}
Câu 2: Thông tin về 1 cán bộ gồm có: Họ tên, ngày công, mứ lương, thực lĩnh( thực lĩnh =ngày công x mức lương).
1. nhập danh sách n cán bộ (n nhập tư bàn phím). In danh sách đã nhập.
2. nhập vào giá trị x, in danh sách cán bộ có ngày công = x.
3. xóa danh sách cán bộ ngày công <10. In danh sách đã xóa.
Giải:
- Code:
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <iomanip.h>
#include <math.h>
//===========KHAI BAO BAN GHI=====================
struct canbo
{
char ten[30];
int ncong;
float tlinh,mluong;
};
//===========CHUONG TRINH CON=====================
//=============Y'1 Cau 2=================
void nhapCB(canbo &CB)
{
cout<<"Nhap ten CB:";
gets(CB.ten);
cout<<"Nhap ngay cong:";
cin>>CB.ncong;
cout<<"Nhap muc luong :";
cin>>CB.mluong;
CB.tlinh=CB.ncong*CB.mluong;
}
//-----------------------------------------------------------
void inCB(canbo &CB)
{
cout<<setw(20)<<CB.ten;
cout<<setw(10)<<CB.ncong;
cout<<setw(10)<<CB.mluong;
cout<<setw(10)<<CB.tlinh<<endl;
}
//------------------------------------------------------------
void nhapMang(canbo ds[], int n)
{
for(int i=0;i<n;i++)
{
cout<<"Nhap thong tin can bo thu "<<i+1<<endl;
nhapCB(ds[i]);
}
}
//----------------------------------------------------------------
void inMang(canbo ds[],int n)
{
for (int i=0;i<n;i++)
inCB(ds[i]);
}
//======================Y'2 Cau 2====================
void inDSX(canbo ds[],int n,int x)
{
for(int i=0;i<n;i++)
if (ds[i].ncong==x)
inCB(ds[i]);
}
//======================Y' 3 Cau2====================
void xoaVT(canbo ds[],int &n,int &vt)
{
for(int i=vt;i<n;i++)
ds[i]=ds[i+1];
n--;
}
void xoaCB(canbo ds[],int &n)
{
int i=0;
while (i<n)
{
if (ds[i].ncong < 10)
xoaVT(ds,n,i);
else
i++;
}
inMang(ds,n);
}
//=====================CHUONG TRINH CHINH======================
void main()
{
canbo ds[100];
int n,x;
clrscr();
cout<<"Nhap so Can Bo= ";
cin>>n;
nhapMang(ds,n);
cout<<"Danh sach Can Bo da nhap:\n";
inMang(ds,n);
cout<<"Nhap gia tri x= ";
cin>>x;
cout<<"Danh sach CB co luong = "<<x<<"\n";
inDSX(ds,n,x);
cout<<"Danh sach da xoa CB co ngay cong < 10\n";
xoaCB(ds,n);
getch();
}
Đây là đề thi KTLT của KTPM1-K4
Bạn nào có lời giải khác thì xem xét nha.
Bạn nào có lời giải khác thì xem xét nha.