Viết chương trình nhập vào một mảng sinh viên, thông tin về mỗi sinh viên gồm: Hoten, tuoi, quequan. Sắp xếp mảng vừa nhập theo chiều tăng dần của chuỗi. Sau đó, xuất ra màn hình mảng sau khi đã sắp xếp.
Mã:
#include <iostream>
#include <string.h>
using namespace std;
typedef struct
{
char ten[30];
int tuoi;
char que[50];
} sinhvien;
sinhvien sv[30];
int n;
void hoanvi(sinhvien a[1],sinhvien b[1])
{
sinhvien tmp[1];
tmp[0]=a[0];
a[0]=b[0];
b[0]=tmp[0];
}
void sx()
{
char tmp[30];
for(int i=0; i<n; i++)
{
int m=i;
for(int j=i+1; j<n; j++)
if(strcmp(sv[j].ten,sv[m].ten)<0)
m=j;
if(m!=i)
hoanvi(&sv[i],&sv[m]);
}
}
void nhap()
{
for(int i=0; i<n; i++)
{
cout<<"\nTen: ";
cin.getline(sv[i].ten,30);
cout<<"\nTuoi: ";
cin>>sv[i].tuoi;
cin.ignore();
cout<<"\nNoi sinh: ";
cin.getline(sv[i].que,30);
}
}
void xuat()
{
cout<<"\nTen \tTuoi \tNoi Sinh";
for(int i=0; i<n; i++)
{
cout<<"\n"<<sv[i].ten<<"\t"<<sv[i].tuoi<<"\t"<<sv[i].que;
}
}
main()
{
cout<<"\nNhap so sinh vien: ";
cin>>n;
cin.get();
nhap();
sx();
xuat();
}
Cho hình chữ nhật dưới dạng cấu trúc gồm chiều dài và chiều rộng. Nhập vào một mảng các hình chữ nhật. Tính và xuất ra màn hình chu vi, diện tích tương ứng của mỗi hình.
Mã:
#include <iostream>
using namespace std;
typedef struct
{
float dai;
float rong;
}hcn;
int chuvi(int dai,int rong)
{
return (dai+rong)*2;
}
int dientich(int dai,int rong)
{
return dai*rong;
}
main()
{
int n;
cout<<"\nNhap so hinh: ";
cin>>n;
hcn h[n];
for(int i=0;i<n;i++)
{
cout<<"\nHinh thu "<<i+1<<": ";
cout<<"\nDai: ";
cin>>h[i].dai;
cout<<"\nRong: ";
cin>>h[i].rong;
}
for(int i=0;i<n;i++)
{
cout<<"\nHinh thu: "<<i+1;
cout<<"\nChu vi:\t\t "<<chuvi(h[i].dai,h[i].rong);
cout<<"\nDien tich:\t "<<dientich(h[i].dai,h[i].rong);
}
}
Cho phân số dưới dạng cấu trúc gồm 2 phần là tử số và mẫu số. Viết chương trình nhập vào 2 phân số. Tính và hiển thị ra màn hình tổng, hiệu, tích, thương của chúng sau khi đã rút gọn.
Mã:
#include <iostream>
using namespace std;
typedef struct
{
int tu;
int mau;
}phanso;
//Rut gon
int rutgon(phanso &a)
{
while(a.tu%a.mau==0 || a.mau%a.tu==0)
{
if(a.tu>=a.mau)
{
a.tu/=a.mau;
a.mau/=a.mau;
}
else
{
a.mau/=a.tu;
a.tu/=a.tu;
}
if(a.tu==1 || a.mau==1)
break;
}
}
//Cong
void _add(phanso a,phanso b,phanso &c)
{
c.tu=(a.tu*b.mau)+(a.mau*b.tu);
c.mau=(a.mau*b.mau);
}
//Tru
void _sub(phanso a,phanso b,phanso &c)
{
c.tu=(a.tu*b.mau)-(a.mau*b.tu);
c.mau=(a.mau*b.mau);
}
//Nhan
void _mul(phanso a,phanso b,phanso &c)
{
c.tu=a.tu*b.tu;
c.mau=a.mau*b.mau;
}
//Chia
void _div(phanso a,phanso b,phanso &c)
{
c.tu=a.tu*b.mau;
c.mau=a.mau*b.tu;
}
main()
{
phanso a,b,c;
cout<<"Nhap phan so thu nhat:"<<"\nNhap tu so: ";
cin>>a.tu;
cout<<"\nNhap mau so: ";
cin>>a.mau;
cout<<"Nhap phan so thu hai:"<<"\nNhap tu so: ";
cin>>b.tu;
cout<<"\nNhap mau so: ";
cin>>b.mau;
/// xuat
cout<<"\nPhan so thu nhat: \t"<<a.tu<<"/"<<a.mau;
rutgon(a);
cout<<"\nRut Gon:\t\t"<<a.tu<<"/"<<a.mau<<endl;;
cout<<"\nPhan so thu hai : \t"<<b.tu<<"/"<<b.mau;
rutgon(b);
cout<<"\nRut gon : \t\t"<<b.tu<<"/"<<b.mau<<endl;
_add(a,b,c);
cout<<"\na+b\t"<<c.tu<<"/"<<c.mau;
_sub(a,b,c);
cout<<"\na-b\t"<<c.tu<<"/"<<c.mau;
_mul(a,b,c);
cout<<"\na*b\t"<<c.tu<<"/"<<c.mau;
_div(a,b,c);
cout<<"\na/b\t"<<c.tu<<"/"<<c.mau;
}
Cho số phức dưới dạng cấu trúc gồm có 2 phần là phần thực và phần ảo. Viết chương trình nhập vào 2 số phức bất kỳ. Tính và xuất ra màn hình kết quả tổng, hiệu, tích, thương của chúng
Mã:
#include <iostream>
using namespace std;
typedef struct
{
int rea;
float vir;
}cnum;
int _add(cnum a,cnum b,cnum &c)
{
c.rea=(a.rea+b.rea);
c.vir=(a.vir+b.vir);
}
int _sub(cnum a,cnum b,cnum &c)
{
c.rea=(a.rea-b.rea);
c.vir=(a.vir-b.vir);
}
int _mul(cnum a,cnum b,cnum &c)
{
c.rea=(a.rea * b.rea)-(a.vir*b.vir);
c.vir=(a.vir*(float)b.rea)+((float)a.rea * b.vir);
}
int _div(cnum a,cnum b,cnum &c)
{
c.rea=(float(a.rea*b.rea)+(a.vir*b.vir))/(float(b.rea*b.rea)+(b.vir*b.vir));
c.vir=((a.vir*float(b.rea))-(float(a.rea)*b.vir))/(float(b.rea*b.rea)+(b.vir*b.vir));
}
main()
{
cnum a,b,c;
cout<<"Nhap so thu 1"<<endl<<"Phan thuc: ";
cin>>a.rea;
cout<<"\nPhan ao: ";
cin>>a.vir;
cout<<"\nNhap so thu 2"<<endl<<"Phan thuc: ";
cin>>b.rea;
cout<<"\nPhan ao: ";
cin>>b.vir;
_add(a,b,c);
cout<<"\na+b: "<<c.rea<<"+"<<c.vir<<"i";
_sub(a,b,c);
cout<<"\na-b: "<<c.rea<<"+"<<c.vir<<"i";
_mul(a,b,c);
cout<<"\na*b: "<<c.rea<<"+"<<c.vir<<"i";
_div(a,b,c);
cout<<"\na/b: "<<c.rea<<"+"<<c.vir<<"i";
}
- Tính số ngày đã qua kể từ đầu năm cho đến ngày hiện tại. Quy ước ngày được khai báo dưới dạng cấu trúc.
- Nhập một ngày tháng năm dưới dang cấu trúc. Tính chính xác (kể cả năm nhuận) số ngày đã qua bắt đầu từ ngày 1/ 1/ 1 đến ngày vừa nhập.
- Khai báo ngày tháng năm theo kiểu cấu trúc. Viết chương trình tính khoảng cách (số ngày) giữa 2 tháng bất kỳ
- Viết chương trình nhập vào một ngày tháng năm bất kỳ. Xuất ra màn hình ngày đó là thứ mấy nếu ta xem ngày 1/ 1/ 1 là thứ 2.
- Viết chương trình nhập vào 2 ngày nào đó của tháng bất kỳ của năm bất kỳ. Tính và hiển thị ra màn hình khoảng cách giữa 2 ngày đó là bao nhiêu ngày.
Mã:
#include <iostream>
using namespace std;
typedef struct
{
int day;
int month;
int year;
} date_time;
date_time today;
///kiem tra nam nhuan
bool check_year(int year)
{
if((year%400==0)||(year%4==0 && year%100!=0))
return true;
else
return false;
}
///tra ve so ngay cua 1 nam
int day_of_year(int year)
{
if(check_year(year)==true)
return 366;
else
return 365;
}
///tra ve so ngay cua 1 thang
int day_of_month(int month,int year)
{
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
break;
case 4:
case 6:
case 9:
case 11:
return 30;
break;
case 2:
{
if(check_year(year)==true)
return 29;
else
return 28;
}
break;
default:
return 0;
break;
}
}
///tinh so ngay da qua tu dau nam nay. Khong tinh nam
int time_until_now(int day,int month,int year)
{
if(day>31 || day < 1 || month > 12 || month < 1)
return 0;
int sum_month=0;
for(int i=0; i<month; i++)
sum_month+=day_of_month(i,year);
return sum_month+day;
///tra ve so ngay + so ngay cua tung thang
}
///tinh khoang cach giua 2 thang
int time_between_month()
{
int max,min,m1,m2;
cout<<"Enter two months : "<<endl;
cin>>m1>>m2;
m1>m2 ? (max=m1,min=m2):(max=m2,min=m1);
cout<<"Day between two month: "<<time_until_now(0,max,1)-time_until_now(0,min,1)<<endl;
}
main()
{
int d,m,y;
cout<<"Enter Day Month Year: "<<endl;
cin>>today.day>>today.month>>today.year;
///so ngay da qua tu 1/1/1 tinh dem ngay thang nam vua nhap
cout<<"Time until now: "<<time_until_now(today.day,today.month,today.year)<<endl;
///
///tinh so ngay cua tung nam tu nam 1 den nam ngay nhap vao
int sum_year=0;
for(int i=0; i<today.year; i++)
sum_year+=day_of_year(i);
///
///so ngay trong nam nay + so ngay tu ngay 1 den dau nam nay
cout<<"Time from 1/1/1: "<<sum_year+time_until_now(today.day,today.month,today.year)<<endl;
///
///nhap 2 thang bat ky, tra ve so ngay giua 2 thang
time_between_month();
///
}
Sách được quản lý dựa trên các tiêu chí sau: Thể loại sách, tên sách, tác giả, nhà xuất bản, năm xuất bản, số lượng. Viết đoạn chương trình khai báo kiểu dữ liệu Sach dựa trên các tiêu chí trên.
Mã:
#include <iostream>
using namespace std;
typedef struct
{
char type_book[30];
char name_book[100];
char author[30];
char publisher[100];
int public_time;
int quantity;
}sach;
sach cau4[10];
main()
{
int n;
cout<<"Nhap so sach: "<<endl;
cin>>n;
cin.ignore();
for(int i=0; i<n; i++)
{
cout<<"Ten sach: "<<endl;
cin.getline(cau4[i].name_book,100);
cout<<"The loai: "<<endl;
cin.getline(cau4[i].type_book,30);
cout<<"Tac gia: "<<endl;
cin.getline(cau4[i].author,30);
cout<<"Nha xuat ban: "<<endl;
cin.getline(cau4[i].publisher,100);
cout<<"Nam xuat ban: "<<endl;
cin>>cau4[i].public_time;
cout<<"So luong: "<<endl;
cin>>cau4[i].quantity;
}
for(int i=0;i<n;i++)
{
cout<<cau4[i].name_book<<endl;
cout<<cau4[i].type_book<<endl;
cout<<cau4[i].author<<endl;
cout<<cau4[i].publisher<<endl;
cout<<cau4[i].public_time<<endl;
cout<<cau4[i].quantity<<endl;
}
}
- Không dùng mảng, hãy nhập vào một dãy số nguyên sau đó xuất dãy ra màn hình theo thứ tự ngược lại.
- Không dùng mảng, hãy nhập vào một dãy số nguyên sau đó in ra màn hình dãy đã được sắp xếp dãy theo chiều tăng (hoặc giảm) dần?
Mã:
#include<iostream>
using namespace std;
main()
{
int *p,n,i,a;
cout<<"\nNhap n: ";
cin>>n;
cin.get();
p=new int[n];
cout<<"\nNhap pt: ";
for(i=0; i<n; i++)
cin>>*(p+i);
cin.get();
//in theo chieu nguoc lai
cout<<"\nIn theo chieu nguoc lai"<<endl;
for(i=n-1; i>=0; i--)
cout<<p[i]<<endl;
//sap xep noi bot
/*
cout<<"\nSap xep noi bot"<<endl;
for(i=0;i<n;i++)
for(int j=n-1;j>=i+1;j--)
if(*(p+j)<*(p+j-1))
{
a=*(p+j);
*(p+j)=*(p+(j-1));
*(p+(j-1))=a;
}
*/
//sap xep chon
for(int i=0; i<=n; i++)
{
int m=i;
for(int j=i+1; j<n; j++)
if(*(p+j)<*(p+m))
m=j;
if(m!=i)
{
int tmp=*(p+i);
*(p+i)=*(p+m);
*(p+m)=tmp;
}
}
cout<<"Sort-->"<<endl;
for(i=0; i<n; i++)
cout<<*(p+i)<<"\t";
}
Dùng con trỏ, nhập giá trị vào cho một dãy các số thực. Sau đó, tìm và xuất ra màn hình phần tử lớn nhất và bé nhất có trong dãy.
Mã:
#include<iostream>
using namespace std;
main()
{
int n,a;
float *p;
cout<<"\nNhap n"<<endl;
cin>>n;
p=new float[n];
for(int i=0;i<n;i++)
cin>>*(p+i);
for(int i=0;i<n;i++)
for(int j=n-1;j>=i+1;j--)
if(*(p+j)<*(p+j-1))
{
a=*(p+j);
*(p+j)=*(p+(j-1));
*(p+(j-1))=a;
}
cout<<"\nMax: "<<p[n-1];
cout<<"\nMin: "<<p[0];
}
Sử dụng con trỏ, nhập vào một dãy ký tự. Sau đó, tìm và thay thế các ký tự ‘a’ bằng ký tự ‘b’. Hiển thị ra màn hình dãy ký tự trước và sau khi thay thế.
Mã:
#include<iostream>
#define max 1000
using namespace std;
main()
{
int n,j;
char *p;
p=new char[max];
cout<<"\nNhap do dai n: ";
cin>>n;
for(int i=0;i<n;i++)
cin>>*(p+i);
j=0;
while(j<n)
{
cout<<*(p+j);
j++;
}
cout<<"\nThay 'a' bang 'b': "<<endl;
j=0;
while(j<n)
{
if(*(p+j)=='a')
*(p+j)='b';
j++;
}
j=0;
while(j<n)
{
cout<<*(p+j);
j++;
}
}
Xây dựng hàm nhập, xuất, sắp xếp mảng bất kỳ bằng cách sử dụng biến con trỏ làm tham số hình thức của hàm. Sử dụng các hàm trên để viết chương trình nhập các giá trị vào cho mảng sau đó xuất ra màn hình các giá trị của mảng trước và sau khi sắp xếp
Mã:
#include<iostream>
#define max 1000
using namespace std;
void nhap(int **p,int n)
{
int *q;
cout<<"\nNhap mang: "<<endl;
q=new int[n];
for(int i=0; i<n; i++)
cin>>*(q+i);
*p=q;
}
void xuat(int *p,int n)
{
cout<<"\nXuat: "<<endl;
for(int i=0; i<n; i++)
cout<<"\t"<<*(p+i);
}
void sxchon(int *p,int n)
{
int i,j,m,x;
for(i=0; i<n; i++)
{
m=i;
for(j=i+1; j<n; j++)
if(*(p+j)<*(p+m))
m=j;
if(m!=i)
{
x=*(p+i);
*(p+i)=*(p+m);
*(p+m)=x;
}
}
}
main()
{
int n,*p;
cout<<"\nNhap n: " ;
cin>>n;
nhap(&p,n);
xuat(p,n);
sxchon(p,n);
xuat(p,n);
}
Bài về chương chuỗi
Mã:
#include<iostream>
#include<string.h>
using namespace std;
main()
{
//Nhap xuat ho ten cua minh
char c[100],tmp[100],u[100],l[100];
cout<<"\nNhap xau: ";
cin.getline(c,100);
//xuat ho ten cua minh
cout<<"\nChuoi vua nhap: "<<c;
strcpy(tmp,c);
strcpy(u,c);
strcpy(l,c);
strupr(u);
strlwr(l);
//toan chu hoa
cout<<"\nUpper: "<<strupr(tmp);
//toan chu thuong
cout<<"\nLower: "<<strlwr(tmp);
//nghich dao ten
cout<<"\nNghich dao: ";
for(int i=strlen(c); i>=0; i--)
cout<<c[i];
//dem ky tu hoa, thuong
int lw=0,up=0;
for(int i=0; i<strlen(c); i++)
{
if((c[i]!=' ')&&(c[i]==l[i]))
lw++;
else if((c[i]!=' ' )&&(c[i]==u[i]))
up++;
}
cout<<"\nCharacter Upper: "<<up;
cout<<"\nCharacter Lower: "<<lw;
//dem so tu trong chuoi
int count=0;
for(int i=0; i<strlen(c)-1; i++)
{
if(c[i]==' ' && c[i+1]!=' ')
count++;
}
if(c[0]!=' ')
count++;
cout<<"\nSo tu: "<<count;
//thay cac ky tu a=b;
for(int i=0; i<strlen(c); i++)
{
if(tmp[i]=='a')
tmp[i]='b';
}
cout<<"\nThay ky tu 'a' = 'b': "<<tmp;
}
Những bài trên đều có người hỏi nên mình post lên. Các bạn tham khảo !