Bài 4. Tạo danh sách fifo gồm các số nguyên. sắp xếp chúng theo thứ tự không tăng . Nhập số nguyên x từ bàn phím, kiểm tra xem x có xuất hiện trong danh sách không

1:05 AM |
#include <stdio.h>
#include <conio.h>
typedef struct node
{
      int info;
      node *link;
};
void xemfifo(node *f)
{
      node *p;
      p=f;
      while (p!=NULL)
      {
            printf("%5d",p->info);
            p=p->link;
      }
}
node *nhapfifo(node *f,node *l,int n)
{
      node *p;
      for (int i=0;i<n;i++)
      {
            p=new(node);
            scanf("%d",&p->info);
            p->link=NULL;
            if (f==NULL)
            {
                  f=p;
                  l=p;
            } else
            {
                  l->link=p;
                  l=p;
            }
      }
      return f;
}
void sapxep(node *f)
{
      node *p1,*p2;
      p1=f;
      while (p1->link!=NULL)
      {
            p2=p1->link;
            while (p2!=NULL)
            {
                  if (p1->info<p2->info)
                  {
                        float tg=p1->info;
                        p1->info=p2->info;
                        p2->info=tg;
                  }
                  p2=p2->link;
            }
            p1=p1->link;
      }
}
node *timkiem(node *f,int x)
{
      node *p;
      p=f;
      while (p!=NULL && p->info!=x) p=p->link;
      return p;
}
int main()
{
      node *f=NULL,*l=NULL;
      int n,x;
      printf("\nNhap so phan tu cua ds lien ket: ");
      scanf("%d",&n);
      f=nhapfifo(f,l,n);
      printf("\nDanh sach vua nhap \n");
      xemfifo(f);
      printf("\nSap xep danh sach khong tang ");
      sapxep(f);
      printf("\nDanh sach sau khi sap xep \n");
      xemfifo(f);
      printf("\nNhap phan tu can kiem tra :");
      scanf("%d",&x);
      if (timkiem(f,x)==NULL) printf("\nkhong tim thay");
      else printf("\nTim thay  %d  trong danh sach fifo",x);
      getch();

}

Bài 3. Tạo danh sách fifo gồm các số nguyên. sắp xếp chúng theo thứ tự không giảm . Nhập số nguyên x từ bàn phím, kiểm tra xem x có xuất hiện trong danh sách không

1:04 AM |
#include <stdio.h>
#include <conio.h>
typedef struct node
{
      int info;
      node *link;
};
void xemfifo(node *f)
{
      node *p;
      p=f;
      while (p!=NULL)
      {
            printf("%5d",p->info);
            p=p->link;
      }
}
node *nhapfifo(node *f,node *l,int n)
{
      node *p;
      for (int i=0;i<n;i++)
      {
            p=new(node);
            scanf("%d",&p->info);
            p->link=NULL;
            if (f==NULL)
            {
                  f=p;
                  l=p;
            } else
            {
                  l->link=p;
                  l=p;
            }
      }
      return f;
}
void sapxep(node *f)
{
      node *p1,*p2;
      p1=f;
      while (p1->link!=NULL)
      {
            p2=p1->link;
            while (p2!=NULL)
            {
                  if (p1->info>p2->info)
                  {
                        float tg=p1->info;
                        p1->info=p2->info;
                        p2->info=tg;
                  }
                  p2=p2->link;
            }
            p1=p1->link;
      }
}
node *timkiem(node *f,int x)
{
      node *p;
      p=f;
      while (p!=NULL && p->info!=x) p=p->link;
      return p;
}
int main()
{
      node *f=NULL,*l=NULL;
      int n,x;
      printf("\nNhap so phan tu cua ds lien ket: ");
      scanf("%d",&n);
      f=nhapfifo(f,l,n);
      printf("\nDanh sach vua nhap \n");
      xemfifo(f);
      printf("\nSap xep danh sach khong giam ");
      sapxep(f);
      printf("\nDanh sach sau khi sap xep \n");
      xemfifo(f);
      printf("\nNhap phan tu can kiem tra :");
      scanf("%d",&x);
      if (timkiem(f,x)==NULL) printf("\nkhong tim thay");
      else printf("\nTim thay  %d  trong danh sach fifo",x);
      getch();
}


Bài 2. Tạo danh sách fifo gồm các số thực. sắp xếp chúng theo thứ tự không tăng . Nhập số thực x từ bàn phím, kiểm tra xem x có xuất hiện trong danh sách không

1:02 AM |
Code c/c++

#include <stdio.h>
#include <conio.h>
typedef struct node
{
      float info;
      node *link;
};
void xemfifo(node *f)
{
      node *p;
      p=f;                            
      while (p!=NULL)
      {
            printf("%5.2f",p->info);
            p=p->link;
      }
}
node *nhapfifo(node *f,node *l,int n)
{
      node *p;
      for (int i=0;i<n;i++)
      {
            p=new(node);
            scanf("%f",&p->info);
            p->link=NULL;
            if (f==NULL)
            {
                  f=p;
                  l=p;
            } else
            {
                  l->link=p;
                  l=p;
            }
      }
      return f;
}
void sapxep(node *f)
{
      node *p1,*p2;
      p1=f;
      while (p1->link!=NULL)
      {
            p2=p1->link;
            while (p2!=NULL)
            {
                  if (p1->info<p2->info)
                  {
                        float tg=p1->info;
                        p1->info=p2->info;
                        p2->info=tg;
                  }
                  p2=p2->link;
            }
            p1=p1->link;
      }
}
node *timkiem(node *f,float x)
{
      node *p;
      p=f;
      while (p!=NULL && p->info!=x) p=p->link;
      return p;
}
int main()
{
      node *f=NULL,*l=NULL;
      float x;
      int n;
      printf("\nNhap so phan tu cua ds lien ket: ");
      scanf("%d",&n);
      f=nhapfifo(f,l,n);
      printf("\nDanh sach vua nhap \n");
      xemfifo(f);
      printf("\nSap xep danh sach khong tang ");
      sapxep(f);
      printf("\nDanh sach sau khi sap xep \n");
      xemfifo(f);
      printf("\nNhap phan tu can kiem tra :");
      scanf("%f",&x);
      if (timkiem(f,x)==NULL) printf("\nkhong tim thay");
      else printf("\nTim thay %5.2f trong danh sach fifo",x);
      getch();

}

Bài 1. Tạo danh sách fifo gồm các số thực. sắp xếp chúng theo thứ tự không giảm. Nhập số thực x từ bàn phím, kiểm tra xem x có xuất hiện trong danh sách không

1:00 AM |
/// code c/c++
#include <stdio.h>
#include <conio.h>
typedef struct node
{
      float info;
      node *link;
};
void xemfifo(node *f)
{
      node *p;
      p=f;
      while (p!=NULL)
      {
            printf("%5.2f",p->info);
            p=p->link;
      }
}
node *nhapfifo(node *f,node *l,int n)
{
      node *p;
      for (int i=0;i<n;i++)
      {
            p=new(node);
            scanf("%f",&p->info);
            p->link=NULL;
            if (f==NULL)
            {
                  f=p;
                  l=p;
            } else
            {
                  l->link=p;
                  l=p;
            }
      }
      return f;
}
void sapxep(node *f)
{
      node *p1,*p2;
      p1=f;
      while (p1->link!=NULL)
      {
            p2=p1->link;
            while (p2!=NULL)
            {
                  if (p1->info>p2->info)
                  {
                        float tg=p1->info;
                        p1->info=p2->info;
                        p2->info=tg;
                  }
                  p2=p2->link;
            }
            p1=p1->link;
      }
}
node *timkiem(node *f,float x)
{
      node *p;
      p=f;
      while (p!=NULL && p->info!=x) p=p->link;
      return p;
}
int main()
{
      node *f=NULL,*l=NULL;
      float x;
      int n;
      printf("\nNhap so phan tu cua ds lien ket: ");
      scanf("%d",&n);
      f=nhapfifo(f,l,n);
      printf("\nDanh sach vua nhap \n");
      xemfifo(f);
      printf("\nSap xep danh sach khong giam ");
      sapxep(f);
      printf("\nDanh sach sau khi sap xep \n");
      xemfifo(f);
      printf("\nNhap phan tu can kiem tra :");
      scanf("%f",&x);
      if (timkiem(f,x)==NULL) printf("\nkhong tim thay");
      else printf("\nTim thay %5.2f trong danh sach fifo",x);
      getch();

}

Bài 1.7: Viết chương trình có sử dụng hàm đệ quy để đảo ngược 1 dãy kí tự nhập từ bàn phím.

10:58 PM |
Đảo ký tự thứ i với ký tự thứ  n-i cho đến chính giữa xâu thì thoát ra khỏi hàm. 

#include <stdio.h>
#include <conio.h>
#include <string.h>
void daonguoc(char s[],int n,int i)
{
      if(i==(n/2)) return;
      char tg=s[i];
      s[i]=s[n-i-1];
      s[n-i-1]=tg;
      daonguoc(s,n,i+1);
}
int main()
{
      char s[500];
      int n;
      printf("nhap xau = ");
      gets(s);
      n=strlen(s);
      printf("\n  Day ky tu vua nhap: %s",s);
      if(n==0) return 0;
      daonguoc(s,n,0);
      printf("\n  Day ky tu sau khi dao nguoc la: %s",s);
      getch();
}

Bài 1.6: Viết chương trình có sử dụng hàm đệ quy để xuất biểu diễn nhị phân của 1 số nguyên.

9:40 PM |
#include <stdio.h>
#include <conio.h>
int nhiphan(int n)
{
      int d;
      if(n==1)  {printf("%d",n); return 0;}
      d=n%2; n=nhiphan(n/2);
      printf("%d",d); return 0;
}
int main ()
{
      int n;
      printf("nhap n= ");scanf("%d",&n);
      printf("\n bieu dien nhi phan cua %d :",n);
      nhiphan(n);
      getch();
}


Bài 1.5: Viết chương trình có sử dụng hàm đệ quy tính xn.

9:28 PM |
#include<conio.h>
#include<stdio.h>
float luythua(int x,int n)
{
      if(x==0) return 0;
      if(n==0) return 1;
      if(n<0) return (1/(luythua(x,-n-1)*x));
    return luythua(x,n-1)*x;
}
int main()
{
      int x,n;
      printf("nhap x va n: "); scanf("%d%d",&x,&n);
      printf("      %d^%d=%5.2f",x,n,luythua(x,n));
      getch();

}


Bài 1.4: Cho ma trận có m hàng, n cột. Viết chương trình có sử dụng hàm đệ quy cho biết giá trị lớn nhất, giá trị nhỏ nhất của ma trận.

9:13 PM |
Tìm min,max trên từng hàng rồi tìm min,max của các min,max đó để tìm ra giá trị min,max của ma trận
#include <stdio.h>
#include <conio.h>
void nhap( int a[][50],int m, int n)
{
      int i,j,tg;
      for(i=0;i<m;i++)
      for(j=0;j<n;j++)
      {
            printf("a[%d][%d]= ",i,j); scanf("%d",&tg);
            a[i][j]=tg;
      }
}
void xem( int a[][50],int m,int n)
{
      int i,j;
      printf("\n xem mang vua nhap:\n");
      for(i=0;i<m;i++)
      {
            for(j=0;j<n;j++) printf("%5d",a[i][j]);
            printf("\n");
      }
}
int min1( int a[][50], int m,int n)
{
      if(n==0) return a[m][n];
      if (a[m][n]<min1(a,m,n-1)) return a[m][n];
      return min1(a,m,n-1);
}
int min( int a[][50], int m, int n)
{
      if(m==0) return min1(a,m,n);
      if ( min1(a,m,n)<min(a,m-1,n)) return min1(a,m,n);
      return min(a,m-1,n);
}
int max1(int a[][50],int m,int n)
{
      if (n==0)return a[m][n];
      if (a[m][n]>max1(a,m,n-1)) return a[m][n];
      return max1 (a,m,n-1);
}
int max(int a[][50],int m,int n)
{
      if(m==0) return max1(a,m,n);
      if (max1(a,m,n)>max(a,m-1,n)) return max1(a,m,n);
      return max(a,m-1,n);
int main()
{
      int a[50][50],m,n;
      printf("Nhap so cot cua ma tran n = "); scanf("%d",&n);
      printf("Nhap so hang cua ma tran m = "); scanf("%d",&m);
      if ((n<=0)||(m<=0)) printf("so hang so cot ban nhap ko hop le!");
      else
      {
            nhap(a,m,n);
            xem(a,m,n);
            printf("\n min =  %d",min(a,m-1,n-1));
            printf("\n max =  %d",max(a,m-1,n-1));
      }
      getch();
}

Bài 1.3: Cho mảng gồm n phần tử. Viết chương trình có sử dụng hàm đệ quy cho biết giá trị lớn nhất, giá trị nhỏ nhất của mảng

8:13 PM |
code c/c++

#include<conio.h>
#include<stdio.h>
int max(int a[],int n)
{
      if(n==1) return a[0];
      if (a[n-1]>max(a,n-1)) return a[n-1];
      return max(a,n-1);
}
int min(int a[],int n)
{
      if(n==1) return a[0];
      if (a[n-1]<min(a,n-1)) return a[n-1];
      return min(a,n-1);
}
int main()
{
      int a[50],n,i;
      printf("\n nhap so luong phan tu cua mang n= ");
      scanf("%d",&n);
      if(n<=0) printf("so luong phan tu ban nhap ko hop le!");
      else
      {
        for(i=0;i<n;i++)
        {
            printf("a[%d]= ",i);
            scanf("%d",&a[i]);
        }
        printf("\n max= %5d",max(a,n));
        printf("\n min= %5d",min(a,n));
    }
    getch();
}

Ví dụ 

=> max=9
Dũng NV. Powered by Blogger.