bài tập C++ chọn lọc

Câu 1: Giải phương trình bậc nhất.

Spoiler

PHP:

#include <stdio.h>

void main()

{

float a, b;

printf("\nGiai phuong trinh bac nhat AX + B = 0");

printf("\nCho biet ba he so A B : ");

scanf("%f%f", &a, &b);

if (a==0)

if (b!=0)

printf("Phuong trinh vo nghiem");

else

printf("Phuong trinh co nghiem khong xac dinh");

else

printf("Dap so cua phuong trinh tren = %f", -b/a);

getch();

}

Câu 2: Giải phương trình bậc hai.

Spoiler

PHP:

#include <stdio.h>

#include <math.h>

void main()

{

float x,x1,x2,a,b,c,delta;

printf("Nhap vao tham so cua phuong trinh bac 2 \(a b c\) : "); scanf("%f%f%f",&a,&b,&c);

if (a==0)

if (b==0) printf("Phuong trinh vo nghiem\n");

else {x=-c/b; printf("Phuong trinh co mot nghiem x = %.3f\n",x);}

else {

delta=b*b-4*a*c;

if (delta<0)

printf("Phuong trinh vo nghiem thuc\n");

else

if (delta==0)

{x=-b/(2*a);

printf("Phuong trinh co mot nghiem duy nhat x = %.3f\n",x);}

else {

x1=(-b+sqrt(delta))/(2*a);

x2=(-b-sqrt(delta))/(2*a);

printf("Phuong trinh co nghiem 2 nghiem thuc :\n x1 = %.3f\n x2 = %.3f\n",x1,x2);

}

}

}

Câu 3: Giải hệ phương trình bậc nhất.

Spoiler

PHP:

#include <stdio.h>

#include <conio.h>

void main()

{

int a, b, c, d, e, f, dthuc;

float x, y;

printf("\nNhap vao cac he so a,b,c,d,e,f : ");

scanf("%d%d%d%d%d%d", &a, &b, &c, &d, &e, &f);

dthuc = b*d - e*a;

if (dthuc != 0)

{

y = (float)(c*d-a*f)/dthuc;

x = (float)(b*f-c*e)/dthuc;

printf("Nghiem x = %f, y = %f", x, y);

}

else

printf("\nHe phuong trinh vo ngiem.");

getch();

}

Câu 4: Tính căn bậc 2 theo phương pháp hàm Newton

Spoiler

PHP:

#include <stdio.h>

#include <math.h>

void main()

{

double a, xn, ketqua;

printf("\nNhap vao so muon tinh can bac hai : ");

scanf("%lf", &a);

xn = (a+1)/2;

do {

ketqua = xn;

xn = 0.5 * (xn + a/xn);

} while (fabs(xn-ketqua) > 0.0001);

printf("\nKet qua = %lf", xn);

getch();

}

Câu 5: In ra màn hình tam giác cân

Spoiler

PHP:

#include <stdio.h>

#include <conio.h>

void main() {

clrscr();

short d[]={1,2};

printf("Nhap chieu cao tam giac: ");

int i,num,space;

scanf("%d",&i);

num=2*i+1;

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

space=(num-(2*n+1))/2;

while(space-->0)

printf(" ");

int index;

for(int j=0;j<2*n+1;++j) {

index=(j%2)?1:0;

printf("%d",d[index]);

}

printf("\n");

}

getch();

}

Câu 6: In ra bảng cửu chương.

Spoiler

PHP:

#include <stdio.h>

#include <conio.h>

#include <string.h>

void main()

{

int i, j;

char chuoi[] = "B A N G C U U C H U O N G";

char ten[10][5] = {"","","Hai", "Ba", "Bon", "Nam",

"Sau", "Bay", "Tam", "Chin"};

clrscr();

textcolor(YELLOW);

gotoxy((80 - strlen(chuoi)) / 2, 1);

cprintf("%s\n\n", chuoi);

for (i=2; i<=9; i++)

{

gotoxy(10*(i-2) + (10 - strlen(ten[i]))/2, 4);

textcolor(i);

cprintf("%s", ten[i]);

}

for (j=1; j<=10; j++)

for (i=2; i<=9; i++)

{

gotoxy(10*(i-2) + 1, j+4);

textcolor(i);

cprintf("%dx%2d = %2d", i, j, i*j);

}

getch();

}

Câu 7: In ra năm âm lịch tương ứng với năm nhập vào.

Spoiler

PHP:

#include <stdio.h>

#include <conio.h>

void main()

{

unsigned nam;

char can[][5] = {"Giap", "At", "Binh", "Dinh", "Mau", "Ky",

"Canh", "Tan", "Nham", "Quy"};

char chi[][5] = {"Ty", "Suu", "Dan", "Meo", "Thin", "Ty",

"Ngo", "Mao", "Than", "Dau", "Tuat", "Hoi"};

printf("\nNhap nam can biet : ");

scanf("%d", &nam);

printf("Nam am lich cua %d la %s %s", nam, can[(nam+6)%10], chi[(nam+Cool%12]);

getch();

}

Câu 8 Tính số ngày trong một tháng, một năm bất kỳ

Spoiler

PHP:

#include<iostream.h>

#include<conio.h>

#include<math.h>

void main()

{

long int thang, nam;

cout<<"Nhap thang va nam: ";

cin>>thang>>nam;

if ((thang>12||thang<1)||(nam<0))

cout<<"Nhap thang hoac nam sai";

else

{

bool namnhuan=((nam%4==0&&nam%100!=0)||(nam%400==0&&nam%100==0));

int songay;

if(thang==4||thang==6||thang==9||thang==11)

songay = 30;

else

{

if(thang==2)

songay = namnhuan?29:28;

else

songay=31;

}

cout<<"So ngay cua thang "<<thang<<" trong nam "<<nam<<" la: "<<songay<<endl;

}

getch();

}

Câu 9: Nhập chuỗi và in chuỗi

Spoiler

PHP:

#include <stdio.h>

#include <conio.h>

void main()

{

char name[80];

printf("\nXin cho biet ten cua ban : ");

gets(name);

printf("Chao %s\n", name);

getch();

}

Câu 10: Đảo chuỗi

Spoiler

PHP:

#include<stdio.h>

#include<conio.h>

#include<string.h>

#include<stdlib.h>

int main ()

{

clrscr ();

char* p;

int i,n;

p = (char*)malloc(128);

printf("\n Nhap xau ki tu :");

gets (p);

n = strlen(p);

printf("\n xau dao: \n");

for( i = n-1; i>=0; i --)

putchar(p[i]);

printf("\n");

free(p);

getch ();

return 0;

}

Câu 11: Đếm số lần xuất hiện của các ký tự trong chuỗi

Spoiler

PHP:

#include <stdio.h>

#include <ctype.h>

void main()

{

char chuoi[80];

int i = 0, count = 0;

printf("\nNhap vao mot chuoi bat ky : ");

gets(chuoi);

while (chuoi[i] != 0)

{

if (isalpha(chuoi[i++]))

count++;

}

printf("So ky tu trong chuoi = %d", count);

getch();

}

Câu 12: Loại bỏ khoảng trống thừa trong chuỗi.

Spoiler

PHP:

#include <stdio.h>

#include <string.h>

#include <conio.h>

#pragma warn -pia

char *trim(char *chuoi)

{

char *p;

while (p = strstr(chuoi, " "))

memmove(p, p+1, strlen(chuoi) - (p - chuoi));

if (chuoi[0] == ' ')

memmove(chuoi, chuoi+1, strlen(chuoi) - 1);

if (chuoi[strlen(chuoi)-1] == ' ')

chuoi[strlen(chuoi)-1] = 0;

return chuoi;

}

void main()

{

char chuoi[125];

printf("\nNhap chuoi mau : ");

textattr(0x1e);

gets(chuoi);

trim(chuoi);

printf("\nChuoi sau khi da trim : ");

textattr(0x1e);

cputs(chuoi);

getch();

}

Câu 13: In chuỗi theo các từ mỗi từ một dòng

Spoiler

PHP:

#include <stdio.h>

#include <conio.h>

#include <string.h>

void main()

{

char s[50];

int i, len;

printf("\nNhap vao mot chuoi : ");

gets(s);

len = strlen(s);

i = 0;

while (i<len)

{

while (s[i] == ' ' && i<len)

i++;

while (s[i] != ' ' && i<len)

putc(s[i++], stdout);

putc('\n', stdout);

}

getch();

}

Câu 14: Chương trình đếm số ký tự trong một chuỗi ASCII

Spoiler

PHP:

#include <stdio.h>

#include <ctype.h>

#include<conio.h>

void main()

{

char chuoi[80];

int i = 0, count = 0;

printf("\nNhap vao mot chuoi bat ky : ");

gets(chuoi);

while (chuoi[i] != 0)

{

if (isalpha(chuoi[i++]))

count++;

}

printf("So ky tu trong chuoi = %d", count);

getch();

}

Câu 15: Cho biết kích thước 1 file

Spoiler

PHP:

#include <stdio.h>

#include <io.h>

#include <fcntl.h>

#include <sys\stat.h>

int main()

{

int fp;

long file_size;

if ((fp = open("f:/cprojects/urls.txt", O_RDONLY)) == -1)

printf("Error opening the file \n");

else

{

file_size = filelength(file_handle);

printf("The file size in bytes is %ld\n", file_size);

close(fp);

}

return 0;

}

Câu 16: Đọc nội dung 1 file

Spoiler

PHP:

#include <stdio.h>

void main(void)

{

FILE *fp;

char ch;

fp = fopen("websites.txt","r");

ch = getc(fp);

while(ch!=EOF)

{

putchar(ch);

ch = getc(fp);

}

printf("\n\n");

}

Câu 17: Đếm tần suất 1 kí tự trong 1 file

Spoiler

PHP:

# include <stdio.h>

# include <string.h>

main()

{

FILE *fp;

char in[100];

long int freq[257];

int i;

printf("\nFile frequency table generator\n\n");

printf("\nInput file:");

scanf("%s",in);

fp=fopen(in,"rb");

if(fp==NULL)

{

printf("\nCould not open input file.Aborting\n");

return 1;

}

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

freq[i]=0;

while(i=fgetc(fp),i!=EOF)

{

freq[i]++;

}

fcloseall();

fp=fopen("count.txt","w");

fprintf(fp,"\nCharacter frequency table of %s\n",in);

fprintf(fp,"\nCharacter ASCII frequency\n\n");

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

{

if(i==26)

{

fprintf(fp,"\t 26\t %ld\n",freq[26]);

}

else if(i==9)

{

fprintf(fp,"\t 9\t %ld",freq[9]);

}

else if(i<10)

{

fprintf(fp,"%c\t %d\t %ld\n",i,i,freq[i]);

}

else if(i<100)

{

fprintf(fp,"%c\t %d\t %ld\n",i,i,freq[i]);

}

else

{

fprintf(fp,"%c\t %d\t %ld\n",i,i,freq[i]);

}

}

fcloseall();

printf("\nFrequency table copied to count.txt\n");

}

Câu 18: Cho biêt thông tin FAT

Spoiler

PHP:

#include <stdio.h>

#include <dos.h>

void main(void)

{

struct fatinfo fat;

getfatd(&fat);

printf("Sectors per cluster %d\n", fat.fi_sclus);

printf("Clusters per disk %u\n", fat.fi_nclus);

printf("Bytes per cluster %d\n", fat.fi_bysec);

printf("Disk type %x\n", fat.fi_fatid & 0xFF);

}

Câu 19: Bài toán trâu ăn cỏ

Spoiler

PHP:

/* Giai bai toan co :

Tram trau tram co

Trau dung an nam

Trau nam an ba

Trau gia an mot

*/

#include <stdio.h>

#include <conio.h>

void main()

{

int tdung, tnam, tgia, phuongan=0;

for (tdung = 1; tdung <= 98; tdung ++)

for (tnam = 1; tnam < 99 - tdung; tnam ++)

for (tgia = 1; tgia < 99 - (tdung + tnam); tgia++)

if ((tdung*5 + tnam*3 + tgia) == 100)

{

printf("\nTrau dung : %5d ; Trau nam : %5d ; Trau gia : %5d",

tdung, tnam, tgia);

phuongan++;

}

printf("\nTong cong co %d phuong an.", phuongan);

getch();

}

Câu 20: Bài toán 8 Hoàng Hậu

Spoiler

PHP:

#include <stdio.h>

#include<conio.h>

int dong[8], cot[8], cheoxuoi[15], cheonguoc[15];

void print ()

{

int i;

printf("\n");

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

printf("%3d", dong[i]);

}

void thu(int i)

{

int j;

for (j=0; j<8; j++)

{

if (cot[j] == 1 && cheoxuoi[i+j] ==1 && cheonguoc[i-j+7] == 1)

{

dong[i] = j;

cot[j] = 0;

cheoxuoi[i+j] = 0;

cheonguoc[i-j+7] = 0;

if (i<7)

thu(i+1);

else

print();

cot[j] = 1;

cheoxuoi[i+j] = 1;

cheonguoc[i-j+7] = 1;

}

}

}

void tim()

{

int i, q;

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

{

cot[i] = 1;

dong[i] = -1;

}

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

{

cheoxuoi[i] = 1;

cheonguoc[i] = 1;

}

thu(0);

}

void main()

{

tim();

getch();

}

Câu 21 Bài kiểm tra số nguyên tố

Spoiler

PHP:

#include<iostream.h>

#include<conio.h>

#include<math.h>

bool LaNguyenTo(int n);

void main()

{

int n;

cout<<"Nhap vao mot so bat ky: ";cin>>n;

if(LaNguyenTo(n))

cout<<"La so nguyen to";

else

{

cout<<"Khong la so nguyen to vi no chia het cho ";

for(int j=2;j<n;j++)

{

if(n%j==0)

cout<<j<<" va ";

}

cout<<"The thoi";

}

getch();

}

bool LaNguyenTo(int n)

{

bool co=true;

if(n<2)

{cout<<"Du lieu nhap sai va so do ";

return !co;}

else

{

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

{

if(n%i==0)

{

co=false;

break;

}

}

}

return co;

}

Câu 22: Liệt kê các hoán vị của N phần tử

Spoiler

PHP:

#include <stdio.h>

#include <conio.h>

#define MAX 10

int mang[MAX], n;

void swap (int *x, int *y)

{

int tmp;

tmp = *x;

*x = *y;

*y = tmp;

}

void hoanvi(int k)

{

int j;

if (k==1)

{

printf("\n");

for (j=0; j<n; j++)

printf("%d ", mang[j]);

}

else

for (j=k-1; j>=0; j--)

{

swap(&mang[k-1], &mang[j]);

hoanvi(k-1);

swap(&mang[j], &mang[k-1]);

}

}

void main()

{

int i;

printf("\nCho biet so phan tu (N < 10) : ");

scanf("%d", &n);

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

mang[i] = i;

hoanvi(n);

getch();

}

Câu 23: Tính tổ hợp chập K của N phần tử

Spoiler

PHP:

#include <stdio.h>

#include <conio.h>

unsigned long giaithua(int n)

{

unsigned long ketqua = 1;

int i;

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

ketqua *= i;

return ketqua;

}

unsigned long to_hop_chap(int k, int n)

{

return giaithua(n) / (giaithua(k) * giaithua(n-k));

}

void main()

{

int n, k;

printf("\nNhap vao gia tri N va K : ");

scanf("%d%d", &n, &k);

printf("Top hop chap %d cua %d = %lu", k, n, to_hop_chap(k, n));

getch();

}

Câu 24: Bài tập tìm max min của 4 số.

Spoiler

PHP:

#include<iostream.h>

#include<conio.h>

#include<math.h>

float max(int a, int b);

float min(int a, int b);

void main()

{

int a,b,c,d;

cout<<"Nhap vao so thu 1: ";cin>>a;

cout<<"Nhap vao so thu 2: ";cin>>b;

cout<<"Nhap vao so thu 3: ";cin>>c;

cout<<"Nhap vao so thu 4: ";cin>>d;

cout<<"max= "<<max(max(max(a,b),max(b,c)),max(c,d))<<" min= "<<min(min(min(a,b),min(b,c)),min(c,d))<<endl;

cout<<"Vay trung binh cong cua 4 so do la: "<<(a+b+c+d)/4;

getch();

}

float max(int a, int b)

{

if(a>b)

return a;

else

return b;

}

float min(int a, int b)

{

if(a>b)

return b;

else

return a;

}

Câu 25: Chương trình đọc số có 3 chữ số

Spoiler

PHP:

#include<iostream.h>

#include<conio.h>

void main()

{

int a;

cout<<"Nhap vao mot so co 3 hay 2 tham chi 1 chu so: ";

cin>>a;

int hangtram=a/100;

int hangchuc=((a/10)%10);

int hangdonvi=a%10;

switch(hangtram)

{

case 1 :cout<<"Mot tram ";break;

case 2 :cout<<"Hai tram ";break;

case 3 :cout<<"Ba tram ";break;

case 4 :cout<<"Bon tram ";break;

case 5 :cout<<"Nam tram ";break;

case 6 :cout<<"Sau tram ";break;

case 7 :cout<<"Bay tram ";break;

case 8 :cout<<"Tam tram ";break;

case 9 :cout<<"Chin tram ";break;

}

switch(hangchuc)

{

case 0:

if(hangdonvi==0)

cout<<"";

else

{if(hangchuc==0&&hangtram==0)

cout<<"";

else

cout<<"ninh";}

break;

case 1:cout<<"muoi";break;

case 2:cout<<"hai muoi";break;

case 3:cout<<"ba muoi";break;

case 4:cout<<"bon muoi";break;

case 5:cout<<"nam muoi";break;

case 6:cout<<"sau muoi";break;

case 7:cout<<"bay muoi";break;

case 8:cout<<"tam muoi";break;

case 9:cout<<"chin muoi";break;

}

switch(hangdonvi)

{

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

case 1:

if(hangchuc==1||(hangtram==0&&hangchuc==0))

cout<<" mot";

else

cout<<" mo't";

break;

case 2:cout<<" hai";break;

case 3:cout<<" ba";break;

case 4:

if(hangchuc==1)

cout<<" bon";

else

{if(hangchuc==0&&hangtram==0)

cout<<"bon";

else

cout<<" tu";}

break;

case 5:

if(hangchuc==0&&hangtram==0)

cout<<" nam";

else

cout<<" lam";

break;

case 6:cout<<" sau";break;

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

case 8:cout<<" tam";break;

case 9:cout<<" chin";break;

}

getch();

}

Câu 26 Tìm phần tử lớn nhất nhỏ nhất trong mảng một chiều

Spoiler

PHP:

#include <conio.h>

#include <stdlib.h>

void main()

{

int mang[20];

int i, minval, maxval;

/* Khoi tao mang ngau nhien */

randomize();

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

mang[i] = random(100);

/* Tim gia tri lon nhat va nho nhat */

minval = maxval = mang[0];

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

{

if (maxval < mang[i])

maxval = mang[i];

else if (minval > mang[i])

minval = mang[i];

}

/* In mang */

clrscr();

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

{

if (mang[i] == maxval)

textcolor(YELLOW);

else if (mang[i] == minval)

textcolor(RED);

else

textcolor(WHITE);

cprintf("%3d", mang[i]);

}

getch();

}

Câu 27: Trộn 2 dãy giảm thành 1 dãy tăng

Spoiler

PHP:

#include <stdio.h>

#include <conio.h>

#define MAX 10

void main()

{

int a[MAX], b[MAX], c[2*MAX], n1, n2, i, i1, i2;

printf("\nCho biet so phan tu cua mang thu nhat : ");

scanf("%d", &n1);

printf("Nhap vao cac phan tu (giam dan) cua mang thu nhat : ");

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

scanf("%d", &a[i]);

printf("\nCho biet so phan tu cua mang thu hai : ");

scanf("%d", &n2);

printf("Nhap vao cac phan tu (giam dan) cua mang thu hai : ");

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

scanf("%d", &b[i]);

i1 = n1-1;

i2 = n2-1;

for (i=0; i<n1 + n2; i++)

{

if (i1 < 0 || i2 < 0)

break;

if (a[i1] < b[i2])

{

c[i] = a[i1];

i1--;

}

else

{

c[i] = b[i2];

i2--;

}

}

if (i1 >= 0)

while (i1 >= 0)

c[i++] = a[i1--];

if (i2 >= 0)

while (i2 >= 0)

c[i++] = b[i2--];

printf("\nCac phan tu cua mang tron : ");

for (i=0; i<n1+n2; i++)

printf("%d ", c[i]);

getch();

}

Câu 28: Dãy tăng dần

Spoiler

PHP:

#include <stdio.h>

void main()

{

int a[10], i, maxstart, maxend, maxlen, tmpstart, tmpend, tmplen;

printf("\nNhap vao 10 phan tu nguyen cua day :");

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

scanf("%d", &a[i]);

printf("Day da cho :\n");

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

printf("%6d", a[i]);

maxstart = maxend = tmpstart = tmpend = 0;

maxlen = tmplen = 1;

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

{

if (a[i] < a[tmpend])

{

if (maxlen < tmplen)

{

maxstart = tmpstart;

maxend = tmpend;

maxlen = tmplen;

}

tmpstart = tmpend = i;

tmplen = 1;

}

else

{

tmplen++;

tmpend++;

}

}

if (maxlen < tmplen)

{

maxstart = tmpstart;

maxend = tmpend;

}

printf("\nDay tang co so phan tu nhieu nhat la : \n");

for (i=maxstart; i<=maxend; i++)

printf("%6d", a[i]);

getch();

}

Câu 29: Dãy tăng có dãy dài nhất

Spoiler

PHP:

#include <stdio.h>

void main()

{

int a[10], i, maxstart, maxend, maxtotal, tmpstart, tmpend, tmptotal;

printf("\nNhap vao 10 phan tu nguyen cua day :");

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

scanf("%d", &a[i]);

printf("Day da cho :\n");

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

printf("%6d", a[i]);

maxstart = maxend = tmpstart = tmpend = 0;

maxtotal = tmptotal = a[0];

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

{

if (a[i] < a[tmpend])

{

if (maxtotal < tmptotal)

{

maxstart = tmpstart;

maxend = tmpend;

maxtotal = tmptotal;

}

tmpstart = tmpend = i;

tmptotal = a[i];

}

else

{

tmptotal += a[i];

tmpend++;

}

}

if (maxtotal < tmptotal)

{

maxstart = tmpstart;

maxend = tmpend;

}

printf("\nDay tang co tong nhieu nhat la : \n");

for (i=maxstart; i<=maxend; i++)

printf("%6d", a[i]);

getch();

}

Câu 30: Tìm tất cả ước của một số N

Spoiler

PHP:

[HTML]#include <stdio.h>

#include <conio.h>

void main()

{

int n, i;

printf("Cho gia tri N = ");

scanf("%d", &n);

printf("Cac uoc so cua %d la :\n", n);

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

if ((n % i) == 0)

printf("%5d", i);

getch();

} [/HTML]

Câu 31: Bội số chung và ước số chung

Spoiler

PHP:

#include <stdio.h>

#include <conio.h>

unsigned USCLN (unsigned n, unsigned m)

{

while (n != 0 && m != 0)

if (n>m)

n -= m;

else

m -= n;

if (n == 0)

return m;

else

return n;

}

unsigned BSCNN (unsigned n, unsigned m)

{

return n * m / USCLN(n, m);

}

void main()

{

unsigned n, m;

printf("\nNhap hai vao so nguyen duong : ");

scanf("%u%u", &n, &m);

printf("\nUSCLN cua %u va %u = %u", n, m, USCLN(n,m));

printf("\nBSCNN cua %u va %u = %u", n, m, BSCNN(n,m));

getch();

}

Câu 32: Ma phương

Spoiler

PHP:

#include <stdio.h>

#include <conio.h>

// func declaration

void matrix( int n );

// main()

int main(void)

{

int n;

// input until it's valid.

do

{

printf("\n Plz input size of matrix [ odd size & n < 20 ]: n = ");

scanf("%d",&n);

if ( n % 2 == 0 ) printf("\n Invalid input value .. Plz re-input ... \n");

}

while ( n % 2 == 0 );

if ( n > 20 ) { n = 19 ; // in case of n is greater than 20

printf("\n %d is greater than 20 & set to be default as 19 .",n ); } // end if

// call matrix()

matrix(n);

// stop to watch

getch();

return 0;

}

// function matrix(int n)

void matrix( int n )

{

int a[20][20];

int i, j, row, col, count = 1;

int old_row, old_col, sum = 0;

// set starting value of array

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

for ( j = 0 ; j < n ; j++ )

a[i][j] = 0;

// set the 1st value to start

row = 0; col = (n-1) / 2;

while ( count < n*n + 1 )

{

a[row][col] = count++ ; // set value for elements

old_row = row ; old_col = col; // save the last addresses

// define whether going out of array

row -= 1; if ( row == -1 ) row = n - 1;

col += 1; if ( col == n ) col = 0;

// in case of already having number

if ( a[row][col] != 0 )

{

row = old_row + 1;

col = old_col;

} // end if

} // end while

// print result

printf("\n");

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

{

for ( j = 0 ; j < n ; j++ )

printf("%4d",a[i][j]);

printf("\n");

} // end for

// calculate sum

for ( j = 0 ; j < n ; j++ )

sum += a[0][j];

printf("\n Sum of each row - column - diagonal line is : %d " , sum);

return;

}

Câu 33: Tổng 2 ma trận

Spoiler

PHP:

#include <iostream.h>

#include <conio.h>

#include <stdlib.h>

void congmt(float a[][10],float b[][10],float c[][10],int hang,int cot);

void nhapmt(float a[][10],int hang,int cot);

void inmt(float a[][10],int hang,int cot);

void main()

{

system("color 3e");

float a[10][10],b[10][10],c[10][10];

int hang1,cot1;

cout<<"Moi ban nhap vao ma tran a: \n";

cout<<"Nhap vao so hang cua ma tran a: ";

cin>>hang1;

cout<<"Nhap vao so cot cua ma tran a: ";

cin>>cot1;

nhapmt(a,hang1,cot1);

inmt(a,hang1,cot1);

int hang2,cot2;

cout<<"Moi ban nhap vao ma tran b: \n";

do

{

cout<<"Nhap vao so hang cua ma tran b: ";

cin>>hang2;

}while(hang2 != hang1);

do

{

cout<<"Nhap vao so cot cua ma tran b: ";

cin>>cot2;

}while(cot2 != cot1);

nhapmt(b,hang2,cot2);

inmt(b,hang2,cot2);

cout<<"\nVay tong cua hai ma tran a,b la: \n";

congmt(a,b,c,hang1,cot1);

inmt(c,hang1,cot1);

getch();

}

void congmt(float a[][10],float b[][10],float c[][10],int hang,int cot)

{

for (int i=0; i<hang; i++)

for (int j=0; j<cot; j++)

c[i][j] = a[i][j] + b[i][j];

}

void nhapmt(float a[][10],int hang,int cot)

{

for(int i = 0;i < hang;i++)

{

for(int j = 0; j < cot; j++)

{

cout<<"Nhap vao phan tu ["<<i<<";"<<j<<"]: ";

cin>>a[i][j];

}

}

}

void inmt(float a[][10],int hang,int cot)

{

for(int i = 0; i < hang; i++)

{

for(int j = 0; j < cot; j++)

{

cout<<a[i][j]<<"\t";

}

cout<<endl;

}

}

Câu 34: Tích 2 ma trận

Spoiler

PHP:

#include<conio.h>

#include<stdio.h>

#include<alloc.h>

void main()

{

int *a,*b,*c;

int m,n;

int i,j;

clrscr();

//Nhap so hang so cot

printf("Nhap vao m:");scanf("%d",&m);

printf("Nhap vao n:");scanf("%d",&n);

//Cap phat bo nho

a=(int*)calloc(m*n,sizeof(int));

b=(int*)calloc(m*n,sizeof(int));

c=(int*)calloc(m*n,sizeof(int));

// Nhap so lieu va tinh toan

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

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

{

printf("Nhap vao a[%d,%d]=",i,j);scanf("%d",&a[(i-1+j)+((i-1)*(n-1))]);

}

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

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

{

printf("Nhap vao b[%d,%d]=",i,j);scanf("%d",&b[(i-1+j)+((i-1)*(n-1))]);

c[(i-1+j)+((i-1)*(n-1))]=a[(i-1+j)+((i-1)*(n-1))]+b[(i-1+j)+((i-1)*(n-1))];

}

// xuat cac mang a,b,c ra man hinh

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

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

{

printf("\t%d",a[(i-1+j)+((i-1)*(n-1))]);

if(j==n)printf("\n");

}

printf("\n===========\n");

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

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

{

printf("\t%d",b[(i-1+j)+((i-1)*(n-1))]);

if(j==n)printf("\n");

}

printf("\n===========\n");

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

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

{

printf("\t%d",c[(i-1+j)+((i-1)*(n-1))]);

if(j==n)printf("\n");

}

getch();

}

Câu 35: Kiểm tra xem ma trận B có là con của ma trận A không?

Spoiler

PHP:

#include<stdio.h>

#include<conio.h>

#define N 2

#define M 5

void search(int b[N][N],int a[M][M])

{

int i,j,k,l,m,x,y,dem,demx,demy;

int timthay=1;

for(k=0;k<=M-N;++k)

{

for(l=0;l<=M-N;++l)

{

dem=demx=demy=0;

x=l;y=k;

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

{

for(j=0;j<N;++j)

{

if(b[i][j]==a[y][x])dem++;

++x;++demx;

if(demx==N){demx=0;x=l;}

}

++y;++demy;

if(demy==N){demy=0;y=k;}

}

if(dem==N*N)break;

}

if(dem==N*N)break;

}

if(dem!=N*N)timthay=0;

if(timthay==0)printf("\nKo tim thay");

else printf("\nTim thay");

}

void main()

{

clrscr();

int a[M][M]={ 1, 2, 3, 4, 5,

6, 7, 8, 9,10,

11,12,13,14,15,

16,17,18,19,20,

21,22,23,24,25};

int b[N][N]={4, 5,

9,10};

search(b,a);

getch();

}


____________________
cung cấp vòng bi timken, vòng bi ntn, vòng bi fag chính hãng