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)

Đăng nhập để làm bài kiểm tra

Chưa có kết quả nào trước đó