Professional Documents
Culture Documents
1.Xác định đầu vào, đầu ra và vẽ lưu đồ thuật toán cho chương trình tính S:
S = 12 − 22 + 32 −... + (−1)n−1 2
2.Xác định đầu vào, đầu ra và vẽ lưu đồ thuật toán cho chương trình tính n!!.
Nếu n chẵn : n!! = 2 x 4 x 6 x ... x 2n
Nếu n lẻ : n!! = 1 x 3 x 5 x ... x (2n-1)
3.Xác định đầu vào, đầu ra và vẽ lưu đồ thuật toán cho chương trình tính tổng các số hoàn
chỉnh nhỏ hơn n. Với n là số nguyên thỏa 0 < n < 50, nhập từ bàn phím.
4.Trình bày các tính chất của thuật toán?
Xây dựng giải thuật để giải quyết bài toán nhập vào số nguyên n thỏa điều kiện 1<= n <=
100, sau đó kiểm tra số n có phải là số hoàn chỉnh hay không?
Tính rõ ràng
Thuật toán được thực hiện trên nguyên tắc lệnh. Vì vậy các câu lệnh cần được đưa ra một
cách rõ ràng, dễ hiểu và swps xếp theo trình tự nhất định.
a/ Xác định dầu vào, đầu ra cho bài toán nhập 1 số nguyên dương (n) có giá trị trong khoảng
từ 100 đến 999. In tất cả các số nguyên tố trong khoảng từ 1 đến n.
#include <stdio.h>
#include <math.h>
int main(){
int n;
do{
printf("\nNhap n = ");
scanf("%d", &n);
if(n>999||n<100)
printf("100<n<999");
}while(n>999||n<100);
int i;
int k=0;
for(i = 2; i <= n; i++){
if(n % i == 0){
k++;
}
}
if(k == 0){
printf("\n%d la so nguyen to", n);
}
else
printf("\n%d khong la so nguyen to", n);
return 0;
}
#include <stdio.h>
void main(void)
{
system("cls");
int n;
do
{
do
{
printf("Input n (1<=n<=100): ");
scanf("%d", &n);
} while (n > 100);
} while (n < 1);
if (KT_SCP(n) == 1)
printf("La so chinh phuong");
else
printf("Khong la so chinh phuong");
}
a/ Xác định dầu vào, đầu ra cho bài toán nhập 1 số nguyên dương (n) có giá trị trong
khoảng từ 100 đến 999. In ra số đảo của n. Vd, với n=123, sẽ in ra số đảo là 321.
#include <stdio.h>
void main(void)
{
system("cls");
int n;
do
{
do
{
printf("Input n (100<=n<=999): ");
scanf("%d", &n);
} while (n > 999);
} while (n < 100);
int reverse = 0;
while (n != 0)
{
reverse = reverse * 10 + n % 10;
n = n / 10;
}
printf("Reverse number is : %d", reverse);
}
6.Viết chương trình nhập mảng 1 chiều gồm n số nguyên và thực hiện các yêu cầu sau :
a/ Kiểm tra mảng có chứa đồng thời số dương, số âm và số 0 hay không?
b/ Viết hàm trả về vị trí của tất cả phần tử là số nguyên tố.
c/ Xóa tất cả số nguyên tố có trong mảng.
#include <stdio.h>
#include <math.h>
}
}
}
return m;
}
int main()
{
int checkam=0;
int k=0;
int checkduong=0;
int check=0;
int temp;
long n;
long arr[n];
int xoa=0;
printf("Nhap n: ");
scanf("%d", &n);
nhapmang(n,arr);
for(int i=0;i<n;i++){
if(arr[i]==0){
check = 1;
}else if(arr[i]<0){
checkam = 1;
}else{
checkduong = 1;
}
}
if(checkam==1 && checkduong==1 && check==1){
temp=1;
}else{
temp=0;
}
printf("\n");
if(temp==1){
printf("Mang chua so duong,am,0 \n");
}else {
printf("Mang khong chua so duong,am va so 0 \n");
}
long ant[k];
k = vitringuyento(n,arr,ant);
if(k!=0)
{
printf("Cac vi tri la so nguyen to : ");
for(int i=0;i<k;i++){
printf("%d ", ant[i]);
}
printf("\n");
for(int i =0;i<k;i++){
for(int j=ant[i]-xoa;j<=n;j++){
arr[j] = arr[j+1];
}
xoa++;
n--;
}
7.Viết chương trình nhập mảng 1 chiều gồm n số nguyên và thực hiện các yêu cầu sau :
a/ Kiểm tra mảng có đuợc sắp thứ tự hay không?
#include <stdio.h>
int main()
{
system("cls");
int A[100];
int n;
printf("Input n: ");
scanf("%d", &n);
nhapmang(A, n);
timvitri(A, n);
}
c/ Tạo mảng b từ mảng trên sao cho mảng b chỉ chứa các phần tử là số nguyên tố.
8.Viết chương trình nhập mảng 1 chiều gồm n số nguyên và thực hiện các yêu cầu sau :
a/ Kiểm tra mảng có đan xen chẵn lẻ hay không?
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void main(void)
{
system("cls");
printf("Kiem tra mang xen ke chan le");
int A[100], n = 0;
printf("\nInput n: ");
scanf("%d", &n);
nhapmang(A, n);
int i;
int xenke = 1;
for (i = 0; i < n; i++)
if ((A[i] % 2 == 0 && A[i + 1] % 2 == 0) || (A[i] % 2 != 0 && A[i + 1] % 2 != 0))
{
xenke = 0;
break;
}
if (xenke == 1)
printf("\nMang CO xen ke chan le");
else
printf("\nMang KHONG xen ke chan le");
}
b/ Viết hàm tìm vị trí của phần tử là số hoàn chỉnh lớn nhất.
c/ Tạo mảng b từ mảng trên sao cho mảng b chỉ chứa các phần tử là số hoàn chỉnh.
#include <stdio.h>
#include <math.h>
#include <conio.h>
void NhapMang(int a[], int &n)
{
printf("Nhap so luong phan tu n: ");
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
printf(" a[%d]: ", i);
scanf("%d", &a[i]);
}
}
void XuatMang(int a[], int n)
{
for (int i = 0; i < n; i++)
{
printf("%d\t", a[i]);
}
}
}
9.Viết chương trình nhập mảng 1 chiều gồm n số nguyên và thực hiện các yêu cầu sau :
a/ Kiểm tra mảng có đan xen âm dương hay không?
b/ Viết hàm tìm vị trí của phần tử là số hoàn chỉnh nhỏ nhất.
c/ Sắp xếp các phần tử là số hoàn chỉnh giảm dần, các phần tử khác giữ nguyên vị trí.
#include <stdio.h>
#include <math.h>
#include <conio.h>
void NhapMang(int a[], int &n)
{
printf("Nhap so luong phan tu n: ");
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
printf(" a[%d]: ", i);
scanf("%d", &a[i]);
}
}
void XuatMang(int a[], int n)
{
for (int i = 0; i < n; i++)
{
printf("%d\t", a[i]);
}
}
void KiemTraMang(int a[],int n )
{
int i;
for(i=0;i<n-1;i++)
if(a[i]<0 && a[i+1]>0 )
{
printf("mang xen ke am duong");
break;
}
if(a[i]>0 && a[i+1]<0)
{
printf("mang xen ke am duong");
}
else
{
printf ("\nmang khong co xen ke am duong");
}
}
int SoHoanChinh (int n)
{
int tong =1;
for (int i=2;i<n;i++)
{
if (n%i==0)
{
tong+=i;
}
}
if (tong==n)
{
return 1;
}
else
{
return 0;
}
}
void TimVTmin(int a[],int n)
{
int min=0,index;
for(int i=0;i<n;i++)
{
if(SoHoanChinh(a[i])==1)
{
min=a[i];
index=i;
for (int j=i+1;j<n;j++)
{
if(SoHoanChinh(a[j])==1)
{
if (min>a[j])
{
min=a[j];
}
}
}
break;
}
}
printf ("\n vi tri phan tu nho nhat la :a[%d]",index);
}
void HoanVi(int &a,int &b)
{
int temp=a;
a=b;
b=temp;
}
void SapXepGiamDan(int a[],int n)
{
for (int i=0;i<n-1;i++)
{
if(SoHoanChinh (a[i])==1)
{
for (int j=i+1;j<n;j++)
{
if(SoHoanChinh (a[j])==1 && a[i]<a[j])
{
HoanVi(a[i],a[j]);
}
}
}
}
}
int main ()
{
int a[100],n,kq;
NhapMang(a,n);
XuatMang(a,n);
KiemTraMang(a,n);
SoHoanChinh(n);
TimVTmin(a,n);
SapXepGiamDan(a,n);
printf("\nMang sau khi sap xep cac so hoan chinh giam dan \n");
XuatMang(a,n);
getch();
return 0;
}
10.Viết chương trình nhập mảng gồm n số nguyên. Tìm phần tử chẵn lớn nhất trong mảng.
#include <stdio.h>
#include <math.h>
#include <conio.h>
void NhapMang(int a[], int &n)
{
printf("Nhap so luong phan tu n: ");
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
printf(" a[%d]: ", i);
scanf("%d", &a[i]);
}
}
void XuatMang(int a[], int n)
{
for (int i = 0; i < n; i++)
{
printf("%d\t", a[i]);
}
}
int SoChanLonNhat(int a[],int n)
{
int max;
for(int i=0;i<n;i++)
{
if(a[i]%2==0)
{
max=a[i];
for(int j=0;j<n;j++)
if(a[j]>max && a[j]%2==0) max=a[j];
}
}
return max;
}
int main()
{
int a[100],n;
NhapMang(a,n);
XuatMang(a,n);
printf ("\n Phan Tu chan lon nhat = %d",SoChanLonNhat(a,n));
}
11.Viết chương trình nhập mảng gồm n số nguyên. Tìm phần tử lẻ nhỏ nhất trong mảng.
#include <stdio.h>
#include <math.h>
#include <conio.h>
void NhapMang(int a[], int &n)
{
printf("Nhap so luong phan tu n: ");
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
printf(" a[%d]: ", i);
scanf("%d", &a[i]);
}
}
void XuatMang(int a[], int n)
{
for (int i = 0; i < n; i++)
{
printf("%d\t", a[i]);
}
}
int SoChanLonNhat(int a[],int n)
{
int max;
for(int i=0;i<n;i++)
{
if(a[i]%2!=0)
{
max=a[i];
for(int j=0;j<n;j++)
if(a[j]>max && a[j]%2!=0) max=a[j];
}
}
return max;
}
int main()
{
int a[100],n;
NhapMang(a,n);
XuatMang(a,n);
printf ("\n Phan Tu chan lon nhat = %d",SoChanLonNhat(a,n));
}
12.Xây dựng cấu trúc phân số với hai thuộc tính là tử số và mẫu số. Viết chương trình thực
hiện những yêu cầu sau:
a/ Nhập vào thông tin cho hai phân số a,b.
b/ Viết hàm tính cộng, trừ, nhân, chia 2 phân số a,b.
c/ Viết hàm kiểm tra xem một phân số có phải là tối giãn hay không.
d/ Viết hàm tìm dạng tối giãn của phân số.
#include<stdio.h>
#include<conio.h>
struct PhanSo
{
float TuSo;
float MauSo;
};
typedef struct PhanSo PHANSO;
void NhapPhanSo(PHANSO &ps)
{
float temp;
printf("\nNhap tu so: ");
scanf("%f", &temp);
ps.TuSo = temp;
do
{
printf("\nNhap mau so: ");
scanf("%f", &temp);
ps.MauSo = temp;
if(ps.MauSo == 0)
{
printf("\nMau so phai khac 0. ");
}
}while(ps.MauSo == 0);
}
while(a != b)
{
if(a > b)
{
a = a - b;
}
else
b = b - a;
}
return a;
}
PHANSO DangToiGian(PHANSO a)
{
float UCLN = TimUocChungLonNhat(a.TuSo, a.MauSo);
a.TuSo = a.TuSo / UCLN;
a.MauSo = a.MauSo / UCLN;
return a;
}
PHANSO TinhTong2PhanSo(PHANSO a, PHANSO b)
{
PHANSO ketqua;
ketqua.TuSo = a.TuSo * b.MauSo + a.MauSo * b.TuSo;
ketqua.MauSo = a.MauSo * b.MauSo;
return ketqua;
}
PHANSO TinhHieu2PhanSo(PHANSO a, PHANSO b)
{
PHANSO ketqua;
ketqua.TuSo = a.TuSo * b.MauSo - a.MauSo * b.TuSo;
ketqua.MauSo = a.MauSo * b.MauSo;
return ketqua;
}
PHANSO TinhTich2PhanSo(PHANSO a, PHANSO b)
{
PHANSO ketqua;
ketqua.TuSo = a.TuSo * b.TuSo;
ketqua.MauSo = a.MauSo * b.MauSo;
return ketqua;
}
PHANSO TinhThuong2PhanSo(PHANSO a, PHANSO b)
{
PHANSO ketqua;
ketqua.TuSo = a.TuSo * b.MauSo;
ketqua.MauSo = a.MauSo * b.TuSo;
return ketqua;
}
int KiemTraPhanSoToiGian(PHANSO a)
{
PHANSO c = DangToiGian(a);
if (c.TuSo == a.TuSo && c.MauSo == a.MauSo)
return 1;
return 0;
}
int main()
{
PHANSO ps1, ps2;
NhapPhanSo(ps1);
XuatPhanSo(ps1);
NhapPhanSo(ps2);
XuatPhanSo(ps2);
PHANSO a = DangToiGian(ps1);
printf("\nPhan so toi gian cua a la : ");
XuatPhanSo(a);
PHANSO b = DangToiGian(ps2);
printf("\nPhan so toi gian cua b la : ");
XuatPhanSo(b);
13.Xây dựng cấu trúc phân số với hai thuộc tính là tử số và mẫu số. Viết chương trình thực
hiện những yêu cầu sau:
a/ Nhập vào thông tin cho hai phân số a,b.
b/ Viết hàm tính cộng, trừ, nhân, chia 2 phân số a,b.
c/ Viết hàm kiểm tra xem một phân số có phải là tối giãn hay không.
d/ Viết hàm tìm dạng tối giãn của phân số.
#include<stdio.h>
#include<conio.h>
#include<math.h>
struct PhanSo
{
float TuSo;
float MauSo;
};
typedef struct PhanSo PHANSO;
void NhapPhanSo(PHANSO &ps)
{
float temp;
printf("\nNhap tu so: ");
scanf("%f", &temp);
ps.TuSo = temp;
do
{
printf("\nNhap mau so: ");
scanf("%f", &temp);
ps.MauSo = temp;
if(ps.MauSo == 0)
{
printf("\nMau so phai khac 0. ");
}
}while(ps.MauSo == 0);
}
while(a != b)
{
if(a > b)
{
a = a - b;
}
else
b = b - a;
}
return a;
}
PHANSO DangToiGian(PHANSO a)
{
float UCLN = TimUocChungLonNhat(a.TuSo, a.MauSo);
a.TuSo = a.TuSo / UCLN;
a.MauSo = a.MauSo / UCLN;
return a;
}
PHANSO TinhTong2PhanSo(PHANSO a, PHANSO b)
{
PHANSO ketqua;
ketqua.TuSo = a.TuSo * b.MauSo + a.MauSo * b.TuSo;
ketqua.MauSo = a.MauSo * b.MauSo;
return ketqua;
}
PHANSO TinhHieu2PhanSo(PHANSO a, PHANSO b)
{
PHANSO ketqua;
ketqua.TuSo = a.TuSo * b.MauSo - a.MauSo * b.TuSo;
ketqua.MauSo = a.MauSo * b.MauSo;
return ketqua;
}
PHANSO TinhTich2PhanSo(PHANSO a, PHANSO b)
{
PHANSO ketqua;
ketqua.TuSo = a.TuSo * b.TuSo;
ketqua.MauSo = a.MauSo * b.MauSo;
return ketqua;
}
PHANSO TinhThuong2PhanSo(PHANSO a, PHANSO b)
{
PHANSO ketqua;
ketqua.TuSo = a.TuSo * b.MauSo;
ketqua.MauSo = a.MauSo * b.TuSo;
return ketqua;
}
int KiemTraPhanSoToiGian(PHANSO a)
{
PHANSO c = DangToiGian(a);
if (c.TuSo == a.TuSo && c.MauSo == a.MauSo)
return true;
return false;
}
int main()
{
PHANSO ps1;
PHANSO ps2;
printf("\n\n-------------Xuat---------------\n");
printf("Phan so a: ");
XuatPhanSo(ps1);
printf("\nPhan so b: ");
XuatPhanSo(ps2);
printf("\n\n------------PhanSoToiGian------------");
PHANSO a = DangToiGian(ps1);
printf("\nPhanSo cua a la: ");
XuatPhanSo(a);
PHANSO b = DangToiGian(ps2);
printf("\nPhanSo cua b la: ");
XuatPhanSo(b);
14.Xây dựng cấu trúc điểm trong mặt phẳng Oxy với hai thuộc tính là hoành độ x và tung
độ y. Viết chương trình thực hiện những yêu cầu sau:
a/ Nhập và xuất điểm A theo định dạng (x, y).
b/ Viết hàm tính khoảng cách giữa hai điểm A, B.
c/ Viết hàm kiểm tra 3 điểm A, B, C có tạo thành một tam giác không?
d/ Cho trước 2 điểm A và B, viết hàm tìm điểm C đối xứng với A qua B.
#include <stdio.h>
#include <math.h>
#include<stdlib.h>
// cau a
typedef struct Diem
{
int x, y, z;
} diem;
void nhap(diem& N)
{
printf("\nNhap toa do cua diem %c", N);
printf("Toa do x: ");
scanf("%d", &N.x);
printf("Toa do y: \n");
scanf("%d", &N.y);
printf("Toa do z: ");
scanf("%d", &N.z);
}
void xuat(diem N)
{
printf("Toa do diem ban nhap x:%d ", N.x);
printf("Toa do diem ban nhap y: %d", N.y);
printf("Toa do z: %d ", N.z);
}
// cau b
void khoangcachcaub()
{
int x1, y1, x2, y2;
printf("Nhap vao x1: \n");
printf("Nhap vao y1: \n");
printf("Nhap vao x2: \n");
printf("Nhap vao x2: \n");
}
//cau c
void checkTriangle(int x1, int y1, int x2,
int y2, int x3, int y3)
{
int a = x1 * (y2 - y3)
+ x2 * (y3 - y1)
+ x3 * (y1 - y2);
if (a == 0)
printf("Day khong phai tam giac");
else
printf("Day la tam giac");
}
//cau d
void timdoixung(int xa, int ya, int xb, int yb)
{
float xc, yc;
xc = xb - xa + xb;
yc = yb - ya + yb;
printf("Gia tri cua xc la : %f", xc);
printf("Gia tri cua yc la : %f", yc);
}
void menu() {
printf("\t\t\tCau a. \n");
printf("\t\t\tCau b. \n");
printf("\t\t\tCau c. \n");
printf("\t\t\tCau d. \n");
}
void thucThiMenu() {
int x1, y1, x2, y2, x3, y3;
char chon;
diem n;
do {
menu();
printf("\nNhap vao lua chon cua ban: "); scanf("%s", &chon);
printf("\nLua chon cua ban la: %s", &chon);
switch (chon) {
case 'a':
nhap(n);
xuat(n);
break;
case 'b':
khoangcachcaub();
break;
case 'c':
printf("Nhap vao x1 : ");
scanf("%d", &x1);
printf("Nhap vao y1 : ");
scanf("%d", &y1);
printf("Nhap vao x2 : ");
scanf("%d", &x2);
printf("Nhap vao y2 : ");
scanf("%d", &y2);
printf("Nhap vao x3 : ");
scanf("%d", &x3);
printf("Nhap vao y3 : ");
scanf("%d", &y3);
checkTriangle(x1, y1, x2, y2, x3, y3);
break;
case 'd':
printf("Nhap vao x1 : ");
scanf("%d", &x1);
printf("Nhap vao y1 : ");
scanf("%d", &y1);
printf("Nhap vao x2 : ");
scanf("%d", &x2);
printf("Nhap vao y2 : ");
scanf("%d", &y2);
timdoixung(x1, y2, x1, y2);
break;
case 0:
exit(1);
break;
default:
printf("Loi!"); break;
}
} while (chon != 0 || chon > 3);
}
int main()
{
thucThiMenu();
return 0;
}
15.Xây dựng cấu trúc phân số với hai thuộc tính là tử số và mẫu số. Viết chương trình thực
hiện những yêu cầu sau:
a/ Nhập vào thông tin cho hai phân số a, b.
b/ Viết hàm tính cộng, trừ, nhân, chia 2 phân số a, b.
c/ Viết hàm so sánh 2 phân số a, b.
d/ Viết hàm tìm dạng tối giãn của phân số.
#include<stdio.h>
#include<conio.h>
#include<math.h>
struct PhanSo
{
float TuSo;
float MauSo;
};
typedef struct PhanSo PHANSO;
void NhapPhanSo(PHANSO &ps)
{
float temp;
printf("\nNhap tu so: ");
scanf("%f", &temp);
ps.TuSo = temp;
do
{
printf("\nNhap mau so: ");
scanf("%f", &temp);
ps.MauSo = temp;
if(ps.MauSo == 0)
{
printf("\nMau so phai khac 0. ");
}
}while(ps.MauSo == 0);
}
while(a != b)
{
if(a > b)
{
a = a - b;
}
else
b = b - a;
}
return a;
}
PHANSO DangToiGian(PHANSO a)
{
float UCLN = TimUocChungLonNhat(a.TuSo, a.MauSo);
a.TuSo = a.TuSo / UCLN;
a.MauSo = a.MauSo / UCLN;
return a;
}
PHANSO TinhTong2PhanSo(PHANSO a, PHANSO b)
{
PHANSO ketqua;
ketqua.TuSo = a.TuSo * b.MauSo + a.MauSo * b.TuSo;
ketqua.MauSo = a.MauSo * b.MauSo;
return ketqua;
}
PHANSO TinhHieu2PhanSo(PHANSO a, PHANSO b)
{
PHANSO ketqua;
ketqua.TuSo = a.TuSo * b.MauSo - a.MauSo * b.TuSo;
ketqua.MauSo = a.MauSo * b.MauSo;
return ketqua;
}
PHANSO TinhTich2PhanSo(PHANSO a, PHANSO b)
{
PHANSO ketqua;
ketqua.TuSo = a.TuSo * b.TuSo;
ketqua.MauSo = a.MauSo * b.MauSo;
return ketqua;
}
PHANSO TinhThuong2PhanSo(PHANSO a, PHANSO b)
{
PHANSO ketqua;
ketqua.TuSo = a.TuSo * b.MauSo;
ketqua.MauSo = a.MauSo * b.TuSo;
return ketqua;
}
int SoSanh2PhanSo(PHANSO a, PHANSO b)
{
float kq1 = a.TuSo / a.MauSo;
float kq2 = b.TuSo / b.MauSo;
if (kq1 < kq2)
return -1;
if (kq1 > kq2)
return 1;
return 0;
}
int KiemTraPhanSoToiGian(PHANSO a)
{
PHANSO c = DangToiGian(a);
if (c.TuSo == a.TuSo && c.MauSo == a.MauSo)
return 1;
return 0;
}
int main()
{
PHANSO ps1;
PHANSO ps2;
printf("\n\n-------------Xuat---------------\n");
printf("Phan so a: ");
XuatPhanSo(ps1);
printf("\nPhan so b: ");
XuatPhanSo(ps2);
printf("\n\n------------PhanSoToiGian------------");
PHANSO a = DangToiGian(ps1);
printf("\nPhanSo cua a la: ");
XuatPhanSo(a);
PHANSO b = DangToiGian(ps2);
printf("\nPhanSo cua b la: ");
XuatPhanSo(b);
printf("\n\n------------SoSanh2PhanSo------------\n");
int kq=SoSanh2PhanSo(a,b);
if(kq>0)
printf("\n a>b");
else
if(kq<0)
printf("\n a<b \n");
else
printf("\n a=b \n");
}
struct nhanvien{
char maNhanvien[5];
char tenNhanvien[30];
float luongNhanvien;
};
void nhapNhanvien(int n){
struct nhanvien a[50];
for(int i =0;i<n;i++){
fflush(stdin);
printf("Nhap ma nhan vien thu %d\n",i);
gets(a[i].maNhanvien);
fflush(stdin);
printf("Nhap ten nhan vien thu %d\n",i);
gets(a[i].tenNhanvien);
fflush(stdin);
printf("Nhap luong nhan vien thu %d\n",i);
scanf("%f",&a[i].luongNhanvien);
}
}
void xuatNhanvien(int n){
struct nhanvien a[50];
for(int i=0;i<n;i++){
printf("Nhan vien thu %d\n",i);
printf("ma nhan vien thu %d : %s\n",i,a[i].maNhanvien);
printf("ten nhan vien thu %d : %s\n",i,a[i].tenNhanvien);
printf("luong nhan vien thu %d : %f\n",i,a[i].luongNhanvien);
}
}
void timNhanvien(int n)
{
char ma[50];
int b=0;
struct nhanvien a[50];
printf("Nhap ma nhan vien can tim : ");
fflush(stdin);
gets(ma);
for(int i=0;i<n;i++)
{
if(strcmp(ma,a[i].maNhanvien)==0)
printf("ma nhan vien : %s\n",a[i].maNhanvien);
printf("ten nhan vien : %s\n",a[i].tenNhanvien);
printf("luong nhan vien :%f\n",a[i].luongNhanvien);
}
}
int main(){
int n;
struct nhanvien a[50];
printf("Nhap vao so nhan vien :");
scanf("%d",&n);
nhapNhanvien(n);
xuatNhanvien(n);
timNhanvien(n);
}
#include <stdio.h>
#include <string.h>
const int MAX = 100;
void bai17();
void bai18();
void bai19();
void bai20();
void back();
int key;
{
printf (" BAI TAP C - MENU \n");
printf (" **** \n");
printf ("Chon '17' cho bai 17\n");
printf ("Chon '18' cho bai 18\n");
printf ("Chon '19' cho bai 19\n");
printf ("Chon '20' cho bai 20\n");
printf ("Chon '0' de thoat\n");
printf (" **** \n");
printf ("\n Nhap tuy chon: ");
scanf("%d", &key);
switch(key){
case 17:
printf("\n Bai 17: \n");
bai17();
back();
break;
case 18:
printf("\n Bai 18: \n");
bai18();
back();
break;
case 19:
printf("\n Bai 19: \n");
bai19();
back();
break;
case 20:
printf("\n Bai 20: \n");
bai20();
back();
break;
case 0:
printf ("\n Chon thoat chuong trinh!");
return 0;
default :
break;
}
}
}
void back(){
printf("\n Quay lai MENU \n");
main();
}
18.
a/Viết hàm NgayTruoc() theo nguyên mẫu hàm cho trước, hàm này trả về ngày kế trước
pd, pm, py của ngày hiện hành d, m, y:
void NgayTruoc(int d, int m, int y, int *pd, int *pm, int *py);
b/ Viết chương trình gọi hàm của câu a và in kết quả ra màn hình.
struct THISINH {
char mathisinh[5];
char tenthisinh[30];
float diem;
};
};
void Timthisinh(THISINH a[], int n){
int s = 0;
char tstim[30];
char tschuoi[30];
printf("\n Ten thi sinh can tim: ");
fflush(stdin);
fgets(tstim, sizeof(tstim), stdin);
for (int i = 0; i < n; i++){
strcpy(tschuoi, a[i].tenthisinh);
if(strcmp(tstim,tschuoi) == 0) {
printf("Thi sinh can tim la: \n");
printf("\n\n Thi sinh %d \n", i+1);
printf("\n\t Ma thi sinh: %s ", a[i].mathisinh);
printf("\n\t Ten thi sinh: %s ", a[i].tenthisinh);
printf("\t Diem: %.2f ", a[i].diem);
}
else{
s=s+1;
}
}
if (s == n) {
printf("\n Khong co thi sinh can tim");
}
}
void bai17(){
int n;
THISINH a[MAX];
printf("Nhap so phan tu : \n");
scanf("%d", &n);
if ( n <= 0 || n > MAX ){
printf("\nNhap lai so luong phan tu: ");
}
else{
printf("\n======NHAP MANG=====\n");
Nhapmang(a, n);
printf("\n======XUAT MANG=====\n");
Xuatmang(a, n);
printf("\n======TIM KIEM THI SINH=====\n");
Timthisinh(a, n);
}
19.
a/Viết hàm HaiNgayTruoc() theo nguyên mẫu hàm cho trước, hàm này trả về hai ngày kế
trước pd, pm, py của ngày hiện hành d, m, y:
void HaiNgayTruoc(int d, int m, int y, int *pd, int *pm, int *py);
b/ Viết chương trình gọi hàm của câu a và in kết quả ra màn hình.
void Ngaytruoc()
{
int d, m, y;
int *pd = &d;
int *pm = &m;
int *py = &y;
if (Nhuan(y)){
if (d == 1)
{
switch (m)
{
case 1:
{
m = 12;
d = 31;
y = y - 1;
break;
}
case 2: case 4: case 6: case 8: case 9: case 11:{
m = m - 1;
d = 31;
y = y;
break;
}
case 5: case 7: case 10: case 12:{
m = m - 1;
d = 30;
y = y;
break;
}
case 3:
{
m = m - 1;
d = 29;
y = y;
break;
}
default:{
printf("Loi\n");
break;
}
}
}
else{
m = m;
d = d - 1;
y = y;
}
}
else{
if (d == 1)
{
switch (m)
{
case 1:
{
m = 12;
d = 31;
y = y - 1;
break;
}
case 2: case 4: case 6: case 8: case 9: case 11:
{
m = m - 1;
d = 31;
y = y;
break;
}
case 5: case 7: case 10: case 12:{
m = m - 1;
d = 30;
y = y;
break;
}
case 3:
{
m = m - 1;
d = 28;
y = y;
break;
}
default:
{
printf("Loi\n");
break;
}
}
}
else{
m = m;
d = d - 1;
y = y;
}
}
printf("\n Ngay truoc la: ngay %d thang %d nam %d", *pd, *pm, *py);
void bai18(){
int d, m, y;
int *pd, *pm, *py;
Nhapngay(d, m, y);
Ngaytruoc();
}
20.
a/ Viết hàm NgaySau() theo nguyên mẫu hàm cho trước, hàm này trả về ngày kế sau pd,
pm, py của ngày hiện hành d, m, y:
void NgaySau(int d, int m, int y, int *pd, int *pm, int *py);
b/ Viết chương trình gọi hàm của câu a và in kết quả ra màn hình.
void Ngaysau()
{
int d, m, y;
int *pd = &d;
int *pm = &m;
int *py = &y;
if (Nhuan(y))
{
if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10)
{
if (d == 31){
m = m + 1;
d = 1;
}
else{
m = m;
d = d + 1;
}
y = y;
}
else if (m == 4 || m == 6 || m == 9 || m == 11){
if (d == 30){
m = m + 1;
d = 1;
}
else{
m = m;
d = d + 1;
}
y = y;
}
else if(m == 2){
if (d == 28){
m = m + 1;
d = 1;
}
else{
m = m;
d = d + 1;
}
y = y;
}
else{
if (d == 31){
m = 1;
d = 1;
y = y + 1;
}
else{
m = m;
d = d + 1;
y = y;
}
}
}
else{
if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10)
{
if (d == 31){
m = m + 1;
d = 1;
}
else{
m = m;
d = d + 1;
}
y = y;
}
else if (m == 4 || m == 6 || m == 9 || m == 11){
if (d == 30){
m = m + 1;
d = 1;
}
else{
m = m;
d = d + 1;
}
y = y;
}
else if(m == 2){
if (d == 28){
m = m + 1;
d = 1;
}
else{
m = m;
d = d + 1;
}
y = y;
}
else{
if (d == 31){
m = 1;
d = 1;
y = y + 1;
}
else{
m = m;
d = d + 1;
y = y;
}
}
printf("\n Ngay sau la: ngay %d thang %d nam %d", *pd, *pm, *py);
void bai20(){
int d, m, y;
int *pd, *pm, *py;
Nhapngay(d, m, y);
Ngaysau();
};
21.
a/ Viết hàm HaiNgaySau() theo nguyên mẫu hàm cho trước, hàm này trả về hai ngày kế
sau pd, pm, py của ngày hiện hành d, m, y:
void HaiNgaySau(int d, int m, int y, int *pd, int *pm, int *py);
b/ Viết chương trình gọi hàm của câu a và in kết quả ra màn hình.
#include <stdio.h>
int nhuan(int y)
{
return ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0);
}
int songaytrongthang(int m,int y)
{
switch(m)
{
case 1:case 3:case 5:case 7:case 8:case 10:case 12:
{
return 31;
break;
}
case 2:
{
if(nhuan(y))
{
return 29;
}
return 28;
}
case 4:case 6:case 9:case 11:
{
return 30;
}
}
}
void haingaysau(int y,int m,int d)
{
int ny=y;int nm=m;int nd=d;
if(y>0&&m>0&&m<13&&d>0&&d<=(songaytrongthang(m,y)))
{
nd=d+2;
if(m!=12&&d==songaytrongthang(m,y))
{
nd=2;
nm=m+2;
}
else if(m==12&&d==songaytrongthang(m,y))
{
nd=2;
ny=y+2;
nm=2;
}
else if(m==2)
{
if(nhuan(y))
{
if(d==29)
{
nd=2;
nm=m+2;
}
}
else
{
if(d==28)
{
nd=2;nm=m+2;
}
}
}
}
printf("\n haingaysau : %d:%d:%d",nd,nm,ny);
}
int main()
{
int y;int m;int d;
do
{
printf( "\ nhapngay: ");
scanf("%d", &d);
22.
a/Viết hàm NgayTruoc() theo nguyên mẫu hàm cho trước, hàm này trả về ngày kế trước
pd, pm, py của ngày hiện hành d, m, y:
void NgayTruoc(int d, int m, int y, int *pd, int *pm, int *py);
b/ Viết chương trình gọi hàm của câu a và in kết quả ra màn hình.
#include <stdio.h>
int nhuan(int y)
{
return ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0);
}
int songaytrongthang(int m,int y)
{
switch(m)
{
case 1:case 3:case 5:case 7:case 8:case 10:case 12:
{
return 31;
break;
}
case 2:
{
if(nhuan(y))
{
return 29;
}
return 28;
}
case 4:case 6:case 9:case 11:
{
return 30;
}
}
}
void ngaytruoc(int y,int m,int d)
{
int ny=y;int nm=m;int nd=d;
if(y>0&&m>0&&m<13&&d>0&&d<=(songaytrongthang(m,y)))
{
nd=d-1;
if(m!=12&&d==songaytrongthang(m,y))
{
nd=-1;
nm=m-1;
}
else if(m==12&&d==songaytrongthang(m,y))
{
nd=-1;
ny=y-1;
nm=-1;
}
else if(m==2)
{
if(nhuan(y))
{
if(d==29)
{
nd=-1;
nm=m-1;
}
}
else
{
if(d==28)
{
nd=-1;nm=m-1;
}
}
}
}
printf("\n ngay ke truoc : %d:%d:%d",nd,nm,ny);
}
int main()
{
int y;int m;int d;
do
{
printf( "\ nhapngay: ");
scanf("%d", &d);
int main()
{
const int SIZE=5;
int kq=0, i, *p, A[SIZE]={8,7,6,5,4};
p=A;
for (i=0;i<SIZE;++i)
if(*(A+i) % 2 == 0)
kq+=*(p+i);
printf("Ket qua la: %d",kq);
return 0;
}
Cho biết kết quả hiển thị của đoạn chương trình trên.