Sie sind auf Seite 1von 15

ÔN TẬP KỸ THUẬT LẬP TRÌNH

Nội dung: Lab1

Bài 1: Xây dựng cấu trúc dữ liệu để lưu trữ đa thức có bậc tự nhiên n (0 ≤ n ≤ 100)
trên trường số nguyên (ai, x thuộc Z):
𝑛
𝑓(𝑥)=∑(𝑎𝑖𝑥𝑖
)
𝑖=0
Với cấu trúc dữ liệu được xây dựng, hãy viết chương trình thực hiện các
công việc sau:
a) Tính giá trị của đa thức tại giá trị x0 nào đó.
b) Tính tổng, hiệu, tích, thương hai đa thức p và q.
Bài làm:

Bài 2: Cho một danh sách lưu thông tin của các nhân viên trong một công
ty, thông tin gồm:
- Mã nhân viên (chuỗi, tối đa là 8 ký tự)
- Họ và tên (chuỗi, tối đa là 20 ký tự)
- Phòng ban (chuỗi, tối đa 10 ký tự)
- Lương cơ bản (số nguyên)
- Thưởng (số nguyên)
- Thực lãnh (số nguyên, trong đó thực lãnh = lương cơ bản + thưởng)
Hãy thực hiện các công việc sau:
a) Tính tổng thực lãnh tháng của tất cả nhân viên trong công ty.
b) In danh sách những nhân viên có mức lương cơ bản thấp nhất.
c) Đếm số lượng nhân viên có mức thưởng >= 1200000.
d) In danh sách các nhân viên tăng dần theo phòng ban, nếu phòng ban trùng
nhau thì giảm dần theo mã nhân viên.
Bài làm:
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<conio.h>
#include<stdlib.h>
struct nhanvien
{
char manv [8];
char hoten [20];
char phongban [10];
int luong;
int thuong;
int thuclanh;
};
nhanvien nhap(nhanvien &NV)
{
fflush(stdin);
printf("\nNhap vao ma nhan vien: ");gets(NV.manv);
printf("\nNhap ho va ten nhan vien: ");gets(NV.hoten);
printf("\nNhap vao phong ban: ");gets(NV.phongban);
printf("\nNhap vao luong nhan vien: ");scanf("%d",&NV.luong);
printf("\nNhap vao thuong nhan vien: ");scanf("%d",&NV.thuong);
printf("\nThuc lanh cua nhan vien la %d",NV.luong+NV.thuong);
printf("\n\t ----- ");
}
int main ()
{
int n,min,dem=0;
nhanvien NV;
printf("Nhap vao so luong nhan vien: ");
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
nhap(NV);
if(i==1)
min=NV.luong;
if(i>=2&&NV.luong<=min)
min=NV.luong;
if(NV.luong<=1200000)dem++;
}
system("cls");
printf("\nLuong thap nhat la: %d",min);
printf("\nSo luong nhan vien luong duoi 1.200.000 la: %d NV",dem);
}
Bài 3: Cải thiện bài 1 và bài 2 bằng cách nhập xuất dữ liệu bằng tệp tin
FILE. Cách tổ chức thông tin trong file nhập tùy ý.
Bài làm:

Bài 4: Viết chương trình cho phép nhập vào một dãy số nguyên, tìm phần tử
lớn nhất, vị trí của phần tử đó trong dãy số và in ra màn hình. Yêu cầu: Làm cả 2
trường hợp: sử dụng mảng và kiểu con trỏ.
Bài làm:
_Phần sử dụng kiểu mảng:
#include<conio.h>
#include<stdio.h>

void nhapmang(int a[],int &n)


{
int i;
printf("nhap so luong phan tu n:\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf ("nhap phan tu thu %d:",i);
scanf("%d",&a[i]);
}
}
void xuatmang(int a[],int &n)
{
int i;
printf("so luong phan tu n:\n");
for(i=0;i<n;i++)
printf ("%d ",a[i]);
}
int timmax(int a[],int n)
{
int i=0,s=0,max=0;
for (i=0;i<n;i++)
{
if(max<a[i])
{
max=a[i];
s=i;
}
}
printf("\nSo lon nhat trong mang vua nhap la Max=%d",max);
printf("\nVi tri so lon nhat la %d",s);
}
int main()
{
int i,n,a[100],max;
nhapmang(a,n);
xuatmang(a,n);
timmax(a,n);
}
_Phần sử dụng kiểu con trỏ:
#include<conio.h>
#include<stdio.h>

void nhapmang(int &n)


{
int *a= new int[100];
printf("nhap vao N:");
scanf("%d",&n);
for(int i=0;i<n;i++)
{
printf("nhap vao phan tu thu a[%d]",i);
scanf("%d",&a[i]);
}
int i=0,s=0,max=0;
for (i=0;i<n;i++)
{
if(max<a[i])
{
max=a[i];
s=i;
}
}
printf("\nSo lon nhat trong mang vua nhap la Max=%d",max);
printf("\nVi tri so lon nhat la %d",s);
}

int main()
{
int i,n,a[100],max;
nhapmang(n);
}
Bài 5: Cho một dãy số nguyên {a}. Tìm tổng lớn nhất trong tất cả các tổng
của dãy con của {a}. Trong đó: dãy con liên tiếp là dãy mà thành phần của nó là
các thành phần liên tiếp nhau trong {a}, ta gọi tổng của dãy con là tổng của tất cả
các thành phần của nó. Yêu cầu: Làm cả 2 trường hợp: sử dụng mảng và con trỏ.
Bài làm:
_Phần sử dụng kiểu mảng:
#include<conio.h>
#include<stdio.h>
void nhapmang(int a[],int &n)
{
int i;
printf("nhap so luong phan tu n:\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf ("nhap phan tu thu %d:",i);
scanf("%d",&a[i]);
}
}
int tim(int a[],int i,int n)
{
int s=0,dem=0;
for(int j=i;j<n;j++)
{
if(a[j+1]>=a[j])
{
s+=a[j];
dem++;
}
else
{
if(dem==0)
return s=0;
else
return s+=a[j];
}
}
return s;
}
int main()
{
int a[100],n,i,dem=0;
nhapmang(a,n);
int max=tim(a,0,n);
for(int i=1;i<n-1;i++)
{
if(tim(a,i,n)>=max)
max=tim(a,i,n);
}
printf("\nTong cua day tang lon nhat la: %d",max);
}
_Phần sử dụng kiểu con trỏ:
#include<conio.h>
#include<stdio.h>
void nhapmang(int a[],int &n)
{
int i;
printf("nhap so luong phan tu n:\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf ("nhap phan tu thu %d:",i);
scanf("%d",&a[i]);
}
}
int tim(int a[],int i,int n)
{
int s=0,dem=0;
for(int j=i;j<n;j++)
{
if(a[j+1]>=a[j])
{s+=a[j];dem++;}
else
{if(dem==0)
return s=0;
else
return s+=a[j];}
}
return s;
}
int main()
{

int n,i,dem=0;
int *a=new int[n];
nhapmang(a,n);
int max=tim(a,0,n);
for(int i=1;i<n-1;i++)
{
if(tim(a,i,n)>=max)
max=tim(a,i,n);
}
printf("\nTong cua day tang lon nhat la: %d",max);
}
Bài 6: Viết chương trình thực hiện việc trộn hai dãy có thứ tự thành một dãy
có thứ tự. Yêu cầu không được trộn chung rồi mới sắp thứ tự. Khi trộn phải tận
dụng được tính chất đã sắp của hai dãy con. Yêu cầu: sử dụng con trỏ và tệp tin
FILE.
Bài làm:

Bài 7: Viết các chương trình sau theo cấu trúc hàm đệ qui và không
đệ qui: a) S(n) = 12 + 22 + 32 + … + n2
b) S(n) = 1 + 1/2 + 1/3 + … + 1/n
c) Tính S(n) = 1/2 + 3/4 + 5/6 + ... + (2n+1)/(2n+2)
d) Tính S(n) = 1 + 1/(1+2) + 1/(1+2+3) + ... + 1/(1+2+3+...+n)
e) Tìm ước số lẻ lớn nhất của số nguyên dương n . Ví dụ : n = 100 ước lẻ
lớn nhất của 100 là 25
f) Hãy đếm số lượng chữ số của số nguyên dương n
g) Hãy tính tổng các chữ số của số nguyên dương n
Bài làm:
_Phần sử dung đệ qui:
#include<conio.h>
#include<stdio.h>
int tongs(int n)
{
if(n<=1)
return 1;
else
return n*n+tongs(n-1);
}
float tongs1(float n)
{
if(n==1)
return 1;
else
return tongs1(n-1)+1/n;
}
float tongs2(float n)
{
if(n==0)
return 1/2;
else
return tongs2(n-1)+((2*n+1)/(2*n+2));
}
float ttongs(int n)
{
if(n==1)
return 1;
else
return n+ttongs(n-1);
}
float tongs3(int n)
{
if(n==1)
return 1;
else
return tongs3(n-1)+1/ttongs(n);
}
int Uclln(int k)
{
if(k % 2 == 1)
{
return k;
}
return Uclln(k/2);
}
int demsn(int k)
{
if(k==0)
return 0;
return 1+demsn(k/10);
}
int tongdemsn(int k,int &n)
{

if(k==0)return 0;
else
{
n+=k%10;
k=k/10;
return tongdemsn(k,n);
}

}
int main()
{
int k,n,s=0,ucln=0,dem=0,dem1=0,m=0;
float s1=0,s2=0,s3=0;
printf("Nhap vao n:");
scanf("%d",&n);
s=tongs(n);
printf("Tong s(n)=%d\n",s);
s1=tongs1(n);
printf("Tong s1(n)=%.2f\n",s1);
s2=tongs2(n);
printf("Tong s2(n)=%.2f\n",s2);
s3=tongs3(n);
printf("Tong s3(n)=%.2f\n",s3);
printf("\nNhap vao k:");
scanf("%d",&k);
ucln=Uclln(k);
printf("UCLN cua %d la %d",k,ucln);
dem=demsn(k);
printf("\nSo chu so cua so nguyen la:%d",dem);
tongdemsn(k,m);
printf("\nSo chu so cua so nguyen la:%d",m);
}
_Phần không sử dụng đệ qui:
#include<conio.h>
#include<stdio.h>
#include<math.h>
int Tong1(int &n)
{
int s=0;
for (int i=1;i<=n;i++)
{
s+=i*i;
}
return s;
}
float Tong2(int &n)
{
float s1=0;
for (int i=1;i<=n;i++)
{
s1=s1+float(1)/i;
}
return s1;
}
float Tong3(int &n)
{
float s2=0;
for (int i=0;i<=n;i++)
{
s2=s2+float((2*i+1))/(2*i+2);
}
return s2;
}
float Tong4(int &n)
{
float s=0,s3=0;
for (int i=1;i<=n;i++)
{
s+=i;
{
s3=s3+float (1)/s;
}
}
return s3;
}
int timucln(int &k)
{
for(int i=k;i>=1;i--)
{
if(k%i==0 && (i%2!=0))
{
return i;
}
}
}
int demsn(int &k)
{
int i,dem=0;
for(i=k;i!=0;i=i/10)
dem+=1;
return dem;
}
int tongsn(int k)
{
int a,b,s=0;
a=k/10;
for(int i=0;;i++)
{
if(i==0)b=k%10;else b=a%10;
s+=b;
if(i!=0)a=a/10;
if(a==0)break;
}
printf("\nTong cac chu so cua so nguyen d la s=%d",s);
}
int main()
{
int ucln=0,d,n,k,s=0,dem=0;
float s1=0,s2=0,s3=0,s4=0;
printf("Nhap vao n:\n");
scanf("%d",&n);
s=Tong1(n);
printf("Tong cua s(n) = %d\n",s);
s1=Tong2(n);
printf("Tong cua s1(n) = %.2f\n",s1);
s2=Tong3(n);
printf("Tong cua s2(n) = %.2f\n",s2);
s3=Tong4(n);
printf("Tong cua s3(n) = %.2f",s3);
printf("\nNhap vao k:");
scanf("%d",&k);
ucln=timucln(k);
{
printf("Uoc so le lon nhat cua %d la:",k);
printf("%d",ucln);
}
dem=demsn(k);
printf("\nSo nguyen k gom %d chu so",dem);
tongsn(k);
}

Das könnte Ihnen auch gefallen