1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài tập ngôn ngữ lập trình CC++ có code

17 1,6K 5
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 17
Dung lượng 129,1 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài tập ngôn ngữ lập trình CC++ có codeCode giải phương trình bậc 2 trên visual studio .NETChương trình in ra màn hình các giá trị từ 1 đến k dưới dạng ma trận mxn với k=mnChương trình nhập 3 cạnh tam giác, in ra dạng của tam giácChương trình in ra màn lịch của năm nay theo mẫu của năm 2000Khai báo mảng, đến số lượng số chẵn số lẻ của mảngChương trình thuật toán InsertionSort, SelectionSort, BubbleSort,

Trang 1

BÀI TẬP NGÔN NGỮ LẬP TRÌNH

Họ tên:Lê Văn Nhâm MSSV:20101955

Trang 3

II.Các thành phần cơ bản

Bài 1.Tạo project PhuongTrinhBac2 trên Visual Studio NET và kiểm tra với các hệ số:

– a = 1, b = 2, c = 1

– a = 1, b = 2, c = 3

– a = 1, b = 3, c = 2

Tối ưu đoạn mã giải phương trình bậc 2

Code:

#include<iostream>

#include<math.h>

using namespace std;

void main()

{

double a,b,c;

cout<<"Nhap a=0 de ket thuc.";

while(1)

{

cout<<"\n\nNhap cac he so:\na="; cin>>a;

cout<<"b="; cin>>b;

cout<<"c="; cin>>c;

if(a==0) {

cout<<"Nhap sai";

break; }

double d=b*b-4*a*c;

a*=2;

b=-b;

if(d<0) cout<<"Phuong trinh vo nghiem.";

if(d==0) cout<<"Phuong trinh co nghiem kep:x1=x2="<<b/a;

if(d>0) {

d=sqrt(d);

cout<<"Phuong trinh co 2 nghiem thuc phan biet:\nx1="<<(b-d)/a

<<"\tx2="<<(b+d)/a;

} }

cout<<endl;

Trang 4

system("pause");

}

III.Biểu thức và toán tử

Bài 1.Viết chương trình in ra màn hình các giá trị từ 1 đến k dưới dạng ma trận mxn với k = mxn,

m và n được khởi tạo trong hàm main()

Code:

#include<iostream>

using namespace std;

void main()

{

int m=3,n=4;

int k=m*n;

for(int i=1;i<=k;i++)

{

cout<<i<<"\t";

if(i%n==0) cout<<"\n\n";

}

system("pause");

}

Bài 2.Viết chương trình xác định dạng tam giác được cho bởi 3 cạnh a, b, c làcác số thực Yêu cầu:

– Nhập 3 cạnh của tam giác

– In ra màn hình kiểu của tam giác:

• Tam giac thuong

• Tam giac vuong

Trang 5

• Tam giac can

• Tam giac vuong can

• Tam giac deu

– Chương trình chỉ kết thúc khi a, b, c không tạo thành tam giác Code:

#include<iostream>

using namespace std;

void main()

{

float a,b,c;

while(1)

{

cout<<"Nhap 3 canh a,b,c cua tam giac:\n";

cin>>a>>b>>c;

int m=(a<(b+c))&(b<(c+a))&(c<(a+b));

if(m==0)

{

cout<<"a,b,c khong la 3 canh cua 1 tam giac"<<endl; break;

}

//cout<<m;

int canh=(b==c)|((a==c)<<1)|((a==b)<<2);

a*=a; b*=b; c*=c;

int goc=(a==b+c)|((b==a+c)<<1)|((c==a+b)<<2);

cout<<"Tam giac ";

Trang 6

switch((goc<<4)|canh)

{

case 0: cout<<"thuong";break;

case 7: cout<<"deu";break;

default:

if(goc!=0) cout<<"vuong";

if(canh!=0)cout<<"can";

}

cout<<endl;

}

system("pause");

}

Bài 3.Viết chương trình in ra màn lịch của năm nay theo mẫu của năm 2000 Code:

#include<iostream>

using namespace std;

void main()

{

int ngay,thang,nam;

while(1)

{

system("cls");

cout<<"Nam "; cin>>nam;

if(nam<2000) continue;

Trang 7

cout<<"\n";

int t2,t;

if((nam&3)==0) t2=29;

else t2=28;

//(nam%4)==0?t2=29:28;*/

int i=0;

/*for(int j=2001;j<=nam;j++) {

if(((j-1)&3)==0) i++;

}*/

//if((nam-1)%4==0) if(nam>2000) i=(int)(nam-2001)/4+1;

t=((nam-2000)*365+i+6)%7;

for(thang=1;thang<=12;thang++) {

cout<<"Thang "<<thang

<<"\nCN\tT2\tT3\tT4\tT5\tT6\tT7\n"; int day;

switch(thang) {

case 2: day=t2; break;

case 4: case 6: case 9: case 11:day=30; break; default: day=31;break;

} for(ngay=1;ngay<=(day+t);ngay++)

Trang 8

{

if(ngay<=t) cout<<"\t";

else cout<<ngay-t<<"\t";

if((ngay%7)==0) cout<<"\n";

} t=(day+t)%7;

cout<<"\n\n";

} cout<<"Nhan 0->enter de ket thuc \nNhan cac phim bat ky khac ->enter de tiep tuc\n";

char m; cin>>m;

if(m=='0') break;

else continue;

//system("pause");

}

}

IV.Hàm,mảng và con trỏ

Bài 1.Thiết kế và cài đặt chương trình thực hiện các thao tác sau:

– Khai báo một mảng chứa 1000 số nguyên

– Đặt giá trị ngẫu nhiên từ 1 1000 cho các phần tử của mảng (dùng hàm rand())

– Đếm số lượng số chẵn, số lẻ và số chia hết cho 8 của mản

Code:

#include<iostream>

Trang 9

using namespace std;

void main()

{

int a[1000],d2=0,d8=0,i;

for(i=0;i<1000;i++)

a[i]=rand()%1000+1;

for(i=0;i<1000;i++)

{

if((a[i]&1)==0) d2++;

if((a[i]&7)==0) d8++;

}

int m=6&3;

cout<<m<<endl;

cout<<"So so chan la: "<<d2<<endl

<<"So so le la: "<<1000-d2<<endl

<<"So so chia het cho 8 la: "<<d8<<endl; //getch();

system("pause");

}

b.Cấp phát bộ nhớ động

code:

#include<iostream>

using namespace std;

void main()

{

Trang 10

int n;

int d2=0,d8=0;

cout<<"Nhap so phan tu: "; cin>>n;

int *a=new int[n];

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

a[i]=rand()%1000+1;

//cout<<"a["<<i<<"]="<<a[i]<<endl;

if((a[i]&1)==0) d2++;

if((a[i]&7)==0) d8++;

} cout<<"so so chan la: "<<d2

<<"\nso so le la: "<<n-d2

<<"\nso so chia het cho 8 la: "<<d8<<endl;

delete[]a;

system("pause");

}

Bài 2.Viết chương trình thực hiện các thao tác sau:

– Nhập giá trị cho xâu ký tự s (chứa được nhiều nhất 49 ký tự khác NULL) – In s ra màn hình với các chữ cái thường (VD s = “123ABC” → 123abc) – Đổi s thành số nguyên và gán cho biến a (VD s = “123abc” →a = 123)

Code:

a.Duyệt các ký tự bằng mảng

Trang 11

#include<iostream>

#include<string.h>

using namespace std;

void main()

{

char a[50];

cout<<"Nhap xau: ";

cin.getline(a,50);

int b=0;

for(int i=0;a[i]!=0;i++)

{

char c=a[i];

if((c>='A')&&(c<='Z')) c+=32; cout<<c;

if(c>='0'&&c<='9')

b=b*10+c-48;

}

cout<<"\n";

cout<<"a="<<b<<endl;

system("pause");

}

b.Duyệt các ký tự bằng con trỏ

#include<iostream>

#include<string.h>

using namespace std;

void main()

{

Trang 12

char a[50],*p=a;

cout<<"Nhap xau: ";

cin.getline(a,50);

int b=0;

for(int i=0;*(a+i)!=0;i++)

{

char c=*(a+i);

if((c>='A')&&(c<='Z')) c+=32; cout<<c;

if(c>='0'&&c<='9')

b=b*10+c-48;

}

cout<<"\n";

cout<<"a="<<b<<endl;

system("pause");

}

Bài 3 Debug đoạn biểu thức sau:

char s[100] = "1234567890"; short *p = (short *)s;

*(p += 2) = 0x41; cout << s;

Kết quả Debug là: 1234APress any key to continue

Bài 4.Cài đặt hàm giải phương trình bậc 2 sau:

FindRoot , , ∶ ℝ; 1, 2 ∶ ℝ ∶ ℕ ≔ − 4

< 0 0

= 0 1 ≔ 2 ≔ ; 1

1 ≔ (− − √ )/2 ; 2 ≔ (− + √ )/2

2

Code:

#include<iostream>

Trang 13

#include<math.h>

using namespace std;

int FindRoot(double a,double b,double c,double* x1,double* x2) {

double d=b*b-4*a*c;

int f;

a=2*a;

if(d<0) f=0;

if(d==0){

*x1=*x2=-b/a;

f=1;

}

if(d>0){

*x1=(-b-sqrt(d))/a;

*x2=(-b+sqrt(d))/a;

f=2;

}

return f;

}

void main()

{

double a,b,c,x1,x2;

cout<<"a="; cin>>a;

cout<<"b="; cin>>b;

cout<<"c="; cin>>c;

Trang 14

switch(FindRoot(a,b,c,&x1,&x2))

{

case 0:cout<<"Phuong trinh vo nghiem!"; break;

case 1:cout<<"Phuong trinh co nghiem kep: x1=x2="<<x1;break;

default:cout<<"Phuong trinh co 2 nghiem thuc phan biet:\nx1="<<x1

<<"\nx2="<<x2;break;

}

cout<<endl;

system("pause");

}

Bài 5.Thiết kế và cài đặt hàm trả về xâu ký tự theo chuẩn họ tên từ xâu đầu vào

Code:

#include<iostream>

using namespace std;

char *Correct(char *s)

{

int i=0,j=0;

char last=32;

Trang 15

while(char c=s[i++])

{

if(last==32) {

if(c==32) continue;

if(c>='a'&&c<='z') c-=32; }

else

{

if(c>='A'&&c<='Z') c+=32; }

s[j++]=last=c;

}

j=j-1;

while(s[j++]) s[j]=0;

return s;

}

void main()

{

char s[100];

cout<<"Nhap ten: ";

cin.getline(s,100);

cout<<"Ten dung: "<<Correct(s)<<endl; system("pause");

}

Bài 6 Cài đặt hàm sau:

IsSorted ∶ 1 ℕ; ∶ *0, 1+ ∶ 0, 1

≔ 1 − 1

= 1 ∧ > + 1 0

= 0 ∧ < + 1 0

Code:

#include<iostream>

using namespace std;

int IsSorted(int n,int a[],int t)

{

int f=0;

for(int i=1;i<=n-1;i++)

{

if((t==1)&&(a[i]>a[i+1])) continue;

if((t==0)&&(a[i]<a[i+1])) continue; f=1;

}

Trang 16

return f;

}

void main()

{

int a[100],t,n;

cout<<"so phan tu: "; cin>>n;

cout<<"t="; cin>>t;

for(int i=1;i<=n;i++)

{

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

}

if(IsSorted(n,a,t)==0)

{

cout<<"Mang da duoc sap xep ";

if(t==1) cout<<"giam dan.\n";

if(t==0) cout<<"tang dan.\n"; }

else cout<<"mang chua duoc xap xep.\n"; system("pause");

}

Bài 7 Cài đặt các hàm sắp xếp và tìm kiếm

a.sắp xếp chèn:

void InsertionSort(int a[], int n)

{

int i,j,last;

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

{

last = a[i];

j = i-1;

while (j>=0 && last<a[j])

{

a[j+1] = a[j];

j ;

}

a[j+1] = last;

}

}

b.sắp xếp lựa chọn

void SelectionSort(int a[], int n)

{

int i,min,j,temp;

for (i=0; i<=n-2; i++)

{

min = i;

for (j=i+1; j<=n; j++)

if (a[j] < a[min])

Trang 17

{

min = j;

}

temp = a[i];

a[i] = a[min];

a[min] = temp;

} }

c.Sắp xếp nổi bọt

void BubbleSort(int a[], int n) {

int i,j,k,temp;

for (i=0; i<n-1; i++) for (j=i+1; j<n; j++)

if (a[i]>a[j]) {

temp = a[i]; a[i] = a[j]; a[j] = temp; } }

Ngày đăng: 16/06/2014, 00:16

TỪ KHÓA LIÊN QUAN

w