By GokiSoft.com|
21:20 21/12/2021|
Lập Trình C
[Share Code] Bài tập nâng cao pointer - Lập trình C - C2110L
Bài tập nâng cao pointer - Lập trình C
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
//total: luu tong so phan tu trong mang *p
int *p, *pEven, total = 0, n, i, j;
int choose;
do {
printf("\n1. Nhap n so nguyen cho *p");
printf("\n2. Hien thi *p");
printf("\n3. Hien thi *pEven");
printf("\n4. Thoat");
printf("\nChon: ");
scanf("%d", &choose);
switch(choose) {
case 1: {
printf("\nNhap so phan tu can them n = ");
scanf("%d", &n);
//Cap phat vung nho cho *p -> calloc & realloc
if(total == 0) {
p = (int *) calloc (n, sizeof(int));
} else {
p = (int *) realloc(p, (total + n) * sizeof(int));
}
//Nhap cac phan tu cho mang p
for(i=total;i<total + n;i++) {
printf("\nNhap p[%d] = ", i);
scanf("%d", p + i);
}
total += n;
//cach de nhat -> su dung giai thuat sap xep selection sort
for(i=0;i<total-1;i++) {
for(j=i+1;j<total;j++) {
if(p[i] > p[j]) {
int tmp = p[i];
p[i] = p[j];
p[j] = tmp;
}
}
}
break;
}
case 2: {
printf("\nDanh sach cac phan tu trong mang: ");
for(i=0;i<total;i++) {
printf("%d ", p[i]);
}
break;
}
case 3: {
//Dem so chan trong *p -> num
int num = 0;
for(i=0;i<total;i++) {
if(p[i] % 2 == 0) {
num++;
}
}
//Cap phat bo nho cho *pEven
pEven = (int *) malloc(num * sizeof(int));
//Them vi tri index so chan vao mang
int index = 0;
for(i=0;i<total;i++) {
if(p[i] % 2 == 0) {
pEven[index++] = i;
// pEven[index] = i;
// index++;
}
}
//Hien thi du lieu trong pEven
for(i=0;i<num;i++) {
printf("\nindex: %d, pEvent[%i] = %d", pEven[i], i, p[pEven[i]]);
}
break;
}
case 4: {
printf("\nThoat chuong trinh!!!");
break;
}
default: {
printf("\nNhap sai!!!");
break;
}
}
} while(choose != 4);
return 0;
}
Tags:
Phản hồi từ học viên
5
(Dựa trên đánh giá ngày hôm nay)