Bài Tập Lập Trình C Về Mảng Và Con Trỏ

7790

Bài Tập Lập Trình C Về Mảng

Bài 1 : Khởi tạo một mảng và sắp xếp giảm mảng đó

#include <stdio.h>
#define SIZE 10
main()
	{
		int a[SIZE];
		nhap(a,'a');
		printf("\nTruoc khi chua duoc sap xep\n");
		hienthi(a,'a');
		sapxep(a);
		printf("\nSau khi sap xep ta co mang giam nhu sau :\n");
		hienthi(a,'a');
		getch();
	}

nhap(int x[],char chu)
	{
		int k;
		printf("\n");
		for(k=0;k<SIZE;k++)
			{
				printf("\%c[%d]=",chu,k+1);
				scanf("%d",&x[k]);
			}
		printf("\n");
	}

hienthi(int x[],char chu)
	{
		int k;
		printf("%c=(",chu);
		for(k=0;k<SIZE-1;k++)
			printf("%d\,",x[k]);
		printf("%d)\n",x[k]);
	}
sapxep(int x[])
	{
		int i,j;
		for(i=0;i<SIZE;i++)
			for(j=i;j<SIZE;j++)
				{
					int tam;
					if(x[j]>x[i])
						{
							tam=x[j];
							x[j]=x[i];
							x[i]=tam;
						}
				}
	}

 

Bài 2 : Nhập N là số phần tử của dãy. Sau đó nhập 1 dãy số gồm N phẩn tử. In ra:

  • Phần tử nhỏ nhất
  • Phần tử lớn nhất
  • Tổng các phần tử chẵn
  • Số lượng các phần tử lẻ
#include <stdio.h>
 
int main() {
    int n;
    printf("Nhap N= ");
    scanf("%i", &n);
    int daySo[n], i;
     
    /* Nhap day so N phan tu */
    for (i=0; i<n; i++) {
        printf("daySo[%i]=", i);
        scanf("%i", &daySo[i]);
    }
    printf("-------------------------------------------\n");
     
    /* Tim phan tu nho nhat */
    int min = daySo[0], viTriMin;
    for (i=1; i<n; i++) {
        if (daySo[i] < min) {
            min = daySo[i];
            viTriMin = i;
        }
    }
    printf("1. Phan tu nho nhat cua day so la: daySo[%i]= %i\n", viTriMin, min);
     
    /* Tim phan tu lon nhat */
    int max = daySo[0], viTriMax;
    for (i=1; i<n; i++) {
        if (daySo[i] > max) {
            max = daySo[i];
            viTriMax = i;
        }
    }
    printf("2. Phan tu lon nhat cua day so la: daySo[%i]= %i\n", viTriMax, max);
     
    /* Tong cua cac phan tu chan */
    int tongChan = 0;
    for (i=0; i<n; i++) {
        if (daySo[i] % 2 == 0) {
            tongChan += daySo[i];
        }
    }
    printf("3. Tong cac phan tu chan la: %i\n", tongChan);
     
    /*. So luong cac phan tu le */
    int soLe = 0;
    for (i=0; i<n; i++) {
        if (daySo[i] % 2 != 0) {
            soLe ++;
        }
    }
    printf("4. So luong cac phan tu Le la: %i\n", soLe);
    return 0;
}

Bài 3: Nhập 1 dãy số gồm N phần tử, các phần tử đó nằm trong khoảng từ 0..9. Đếm số lượng các số 0,1,2,…9 trong dãy số đó

dem[daySo[i]]++;

#include <stdio.h>
 
int main() {
    int n;
    printf("Nhap N= ");
    scanf("%i", &n);
     
    //Nhap day so N phan tu
    int daySo[n], i;
    for (i=0; i<n; i++) {
        printf("daySo[%i]= ", i);
        scanf("%i", &daySo[i]);
    }
     
    int dem[10]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
    for (i=0; i<n; i++) {
        dem[daySo[i]]++;
    }
     
    for (i=0; i<10; i++) {
        printf("So %i = %i\n", i, dem[i]);
    }
    return 0;
}

Bài 4 : Khởi tạo mảng và hàm tính toán của hai vecto A và B 

#include<stdio.h>
#include<math.h>
float modul(int x[]);
main()
  {
	int A[5],B[5];
	clrscr();
	printf("\n");
	nhap(A,'A');
	nhap(B,'B');
	printf("\nKET QUA TINH TOAN CUA HAI VECTO A VA B");
	trinhbay(A,'A');
	trinhbay(B,'B');
	printf("\n-------------------");
	tong(A,B);
	printf("\nModule cua vecto A la %f",modul(A));
	printf("\nModule cua vecto B la %f",modul(B));
	getch();
  }
nhap(int x[],char chu)
  {
	int k;
	for(k=0;k<5;k++)
	  {
		printf("\%c[%d]=",chu,k+1);
		scanf("%d",&x[k]);
	  }
	printf("\n");
  }
trinhbay(int x[],char chu)
  {
	printf("\n%c={%d\,%d\,%d\,%d\,%d\}",chu,x[0],x[1],x[2],x[3],x[4]);
  }
float modul(int x[])
  {
	int k;
	float s=0;
	for(k=0;k<5;k++)
		s=s+x[k]*x[k];
	s=sqrt((double)s);
	return(s);
  }
tong(int x[],int y[])
  {
	int z[5],k;
	for(k=0;k<5;k++)
		z[k]=x[k]+y[k];
	trinhbay(z,'C');
  }

Bài Tập Lập Trình C Về Con Trỏ

Bài 1 : Sử dụng con trỏ để giải phương trình bậc 2

#include<math.h>
float ptb2(a,b,c,x1,x2)
float a,b,c,*x1,*x2;
	{
		double sqrt();
		float delta;
		if (a==0)
			return(0);
		delta=b*b-4*a*c;
		if (delta < 0)
			return(-1);
		*x1=(-b+sqrt((double)delta))/(2*a);
		*x2=(-b-sqrt((double)delta))/(2*a);
		return(1);
	}
#include<stdio.h>
main()
	{
		int s;
		float a,b,c,x1,x2;
		printf("\nNhap he so A= ");
		scanf("%f",&a);
		printf("\nNhap he so B= ");
		scanf("%f",&b);
		printf("\nNhap he so C= ");
		scanf("%f",&c);
		s=ptb2(a,b,c,&x1,&x2);
		if (s==0)
			{
				printf("\nVi he so a=0 nen tro thanh phuong trinh bac nhat");
				printf("\nBam phim bat ky de ket thuc");
				getch();
				exit();
			}
		else
			if (s ==-1)
				{
					printf("\nVi delta < 0 nen phuong trinh vo nghiem");
					printf("\nBam phim bat ky de ket thuc");
					getch();
					exit();
				}
			else
				printf("\nPhuong trinh co 2 nghiem");
				printf("\nNghiem thu nhat x1= %8.2f",x1);
				printf("\nNghiem thu hai  x2= %8.2f",x2);
		getch();
	}

Bài 2 : Hoán vị hai số A và B 

hoanvi(px,py)
int *px,*py;
	{
		int tam;
		tam=*px;
		*px=*py;
		*py=tam;
	}
main()
	{
		int a,b;
		printf("\n\tNhap so thu nhat A= ");
		scanf("%d",&a);
		printf("\n\tNhap so thu hai  B= ");
		scanf("%d",&b);
		hoanvi(&a,&b);
		printf("\nSau khi hoan vi");
		printf("\n\So thu nhat A= %d",a);
		printf("\n\So thu hai  B= %d",b);
		getch();
	}

Bài 3 : Khởi tạo mảng và nhập danh sách tên người và sử dụng con trỏ để trỏ tới vị trí thứ n thì sẽ ra tên người đó

#include<string.h>
#include<stdlib.h>
#include<stdio.h>
int k;
typedef char Ten[26];
Ten *p[10];
main()
	{
		for (k=0;k<10;k++)
			{
				p[k]=malloc(sizeof(Ten));
				printf("\nTen nguoi thu :%d la : ",k+1);
				gets(*p[k]);
				p[k]=realloc(*p[k],strlen(*p[k])+1);
			}
		clrscr();
		printf("\nDANH SACH 10 NGUOI VUA NHAP");
		for (k=0;k<10;k++)
			printf("\nNguoi thu :%d ten la : %s",k+1,*p[k]);
		getch();
	}

Bài 4 :Sử dụng con trỏ để xây dựng thư viện hàm nhập xuất modul và tổng của hai vecto A và B

#include"stdio.h"
#include"math.h"
#include"alloc.h"
int *tong(int *x,int *y,int dim);
float modul(int *x,int dim);
main()
  {
	 int *a,*b,SIZE;
	 clrscr();
	 printf("\nSo chieu cua Vecto la = ");
	 scanf("%d",&SIZE);
	 a=(int *)calloc(SIZE,sizeof(int));
	 b=(int *)calloc(SIZE,sizeof(int));
	 nhap(a,'a',SIZE);
	 nhap(b,'b',SIZE);
	 hienthi(a,'a',SIZE);
	 hienthi(b,'b',SIZE);
	 hienthi(tong(a,b,SIZE),'c',SIZE);
	 printf("\nModule cua Vecto a la %f",modul(a,SIZE));
	 printf("\nModule cua Vecto b la %f",modul(b,SIZE));
	 printf("\nModule cua Vecto tong c la %f",modul (tong(a,b,SIZE),SIZE));
	 getch();
  }

  nhap(int *x,char chu,int n)
    {
      int k;
      for(k=0;k<n;k++)
		 {
			printf("%c[%d]=",chu,k+1);
			scanf("%d",x+k);
		 }
      printf("\n");
    }
  hienthi(int *x,char chu,int n)
    {
      int k;
      printf("\n%c=(",chu);
      for(k=0;k<n-1;k++)
			printf("%d\,",*(x+k));
		printf("%d)",*(x+k));
    }

  float modul(int *x,int dim)
    {
      int k;
      float s=0;
      for(k=0;k<dim;k++)
		s+=(*(x+k))*(*(x+k));
		s=sqrt((double)s);
		return(s);
    }

  int *tong(int *x,int *y,int dim)
    {
      int *supp,k;
      supp=(int *)calloc(dim,sizeof(int));
      for(k=0;k<dim;k++)
		supp[k]=x[k]+y[k];
		return(supp);
    }


Nguồn : bài tập lập trình c

No votes yet.
Please wait...

BÌNH LUẬN