Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Chương trình C tính tổng các phần tử là số chính phương trong mảng dùng con trỏ

Đề bài

Tìm tổng các phần tử là số chính phương (perfect square) trong mảng, dùng con trỏ.

Ví dụ

Mảng: 1, 2, 3, 4, 5, 9, 10, 11, 16 → Chính phương: 1, 4, 9, 16 → Tổng = 30

Thuật toán

  • Cấp phát mảng động.
  • Duyệt mảng bằng con trỏ *(a+i).
  • Kiểm tra sqrt(*(a+i)) có phải số nguyên không.
  • Cộng dồn vào tổng.

Chương trình C

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int sumPositive(int n, int *a) {
    int i, sum = 0, m;
    for (i = 0; i < n; i++) {
        m = sqrt(*(a+i));
        if (pow(m, 2) == *(a+i))
            sum += *(a+i);
    }
    return sum;
}

int main() {
    int i, *a, n;
    printf("Kích thước mảng: "); scanf("%d", &n);
    a = (int*)malloc(n * sizeof(int));
    printf("Nhập phần tử:\n");
    for (i = 0; i < n; i++) scanf("%d", a+i);
    printf("Tổng các số chính phương: %d", sumPositive(n, a));
    return 0;
}

Kết quả

Kích thước mảng: 10
Phần tử: 1 2 3 4 5 6 7 8 9 10
Tổng các số chính phương: 14