Tuyển chọn các dạng bài tập C++ hay

xuanhung_xd9

thichhohap.com
Thành viên thân thiết
Tham gia
15/12/2011
Bài viết
1.997
bài tập C++ chọn lọc

Câu 1: Giải phương trình bậc nhất.
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.
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.
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
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
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.
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.
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+8)%12]);
  getch();
}
Câu 8 Tính số ngày trong một tháng, một năm bất kỳ
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
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
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
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.
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
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
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
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
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
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
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ỏ
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
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ố
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ử
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ử
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ố.
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ố
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

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
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
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
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
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
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
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
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
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?
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();
}
 
Hiệu chỉnh bởi quản lý:

minhtt262

Thành viên mới
Tham gia
22/5/2014
Bài viết
1
em mới hoc c++,học đến phần file thì không hiểu.e làm bài này mà khi đọc file không sắp xếp được.ac e xem dùm e với
e cảm ơn!!
 

Đính kèm

  • bai.txt
    1,3 KB · Lượt xem: 221
Top