Viết chương trình tạo mảng, đếm số lượng phần tử lẻ, sắp xếp mảng và chèn mảng (sử dụng con trỏ).

 
#include<stdio.h>
#include<stdlib.h>
main()
{
 int n, i, j, dem, tam, x;
 int *a;
 
 //nhap n:
 do
 {
  printf("\nNhap so phan tu cua mang: ");
  scanf("%d",&n);
 }
 while(n<=0);
 
 //cap phat dong n o nho, con tro a tro den n o nho nay
 a = (int *) malloc(n+1);
 
 //nhap n gia tri tu ban phim va luu vao n o nho 
 printf("\nNhap cac phan tu cua mang:\n");
 for(i=0;i<n;i++)
 {
  printf("\nPhan tu thu %d: ",i+1);
  scanf("%d",a+i);
 }
 
 //in mang vua nhap
 printf("\nMang vua nhap:\n");
 for(i=0;i<n;i++)
 {
  printf("%d   ",*(a+i));
 }
 
 //dem cac phan tu le trong mang
 dem = 0;
 for(i=0;i<n;i++)
 {
  if(*(a+i)%2)
  {
   dem++;
  }
 }
 printf("\n So phan tu le trong mang la: %d",dem);
 
 //sap xep mang
 for(i=0; i <= n -2; i++)
  for(j=i+1; j<=n-1; j++)
   if(*(a+i)>*(a+j))
   {
    tam = *(a+i);
    *(a+i) = *(a+j);
    *(a+j) = tam;
   }
   
 
 //in mang vua sap xep
 printf("\nMang vua sap xep:\n");
 for(i=0;i<n;i++)
 {
  printf("%d   ",*(a+i));
 }
 
 //chen phan tu vao mang da sap xep
 printf("\nNhap phan tu can chen vao mang: ");
 scanf("%d",&x);
 i = 0;
 //duyet mang tu dau den phan tu dau tien co gia tri lon hon hoac bang x
 while(*(a+i)<x) i++; //i la vi tri cua phan tu co gia tri nho nhat ma lon hon x
 //di chuyen cac phan tu lon hon x sang phai 1 vi tri
 for(j=n-1; j>=i; j--)
 {
  *(a+j+1) = *(a+j);
 }
 //gan x vao vi tri thu i
 *(a+i) = x;
 
 //in mang sau khi chen
 printf("\nMang vua chen:\n");
 for(i=0;i<=n;i++)
 {
  printf("%d   ",*(a+i));
 }
 
}
Mới hơn Cũ hơn