Задание 1 - Обработка числовых данных (лабораторная по Си)

Лабораторная работа для школ и вузов по решению задач по обработке числовых данных с помощью ветвления и циков на языке C (Си). Перечень задач лабораторной работы (клик по ссылке направляет на решение задачи, если таковое имеется):

  1. Для данных чисел a, b и c определить, сколько корней имеет уравнение ax^2 + bx + c = 0, и распечатать их. Если уравнение имеет комплексные корни, то распечатать их в виде v +- iw.
  2. Подсчитать количество натуральных чисел n (111 <= n <= 999), в записи которых есть две одинаковые цифры.
  3. Подсчитать количество натуральных чисел n (102 <= n <= 987), в которых все три цифры различны.
  4. Подсчитать количество натуральных чисел n (11 <= n <= 999), являющихся палиндромами, и распечатать их.
  5. Подсчитать количество цифр в десятичной записи целого неотрицательного числа n.
  6. Определить, верно ли, что куб суммы цифр натурального числа n равен n^2.
  7. Определить, является ли натуральное число n степенью числа 3.
  8. Для данного вещественного числа a среди чисел 1, 1 + (1/2), 1 + (1/2) + (1/3), ... найти первое, большее a.
  9. Для данного вещественного положительного числа a найти наименьшее целое положительное n такое, что 1 + 1/2 + 1/3 + ... + 1/n > a.
  10. Даны натуральное число n и вещественное число x. Среди чисел exp(cos(x^2k))sin(x^3k) (k = 1, 2, ..., n) найти ближайшее к какому-нибудь целому.
  11. Дано натуральное число n. Найти значение числа, полученного следующим образом: из записи числа n выбросить цифры 0 и 5, оставив прежним порядок остальных цифр.
  12. Дано натуральное число n. Получить все такие натуральные q, что n делится на q^2 и не делится на q^3.
  13. Дано натуральное число n. Получить все его натуральные делители.
  14. Дано целое число m > 1. Получить наибольшее целое k, при котором 4^k < m.
  15. Дано натуральное число n. Получить наименьшее число вида 2^r, превосходящее n.
  16. Распечатать первые n простых чисел (p – простое число, если p >= 2 и делится только на 1 и на себя).
  17. Даны вещественные числа x и y (x > 0, y > 1). Получить целое число k (положительное, отрицательное или равное нулю), удовлетворяющее условию y^k-1 <= x < y^k.
  18. Распечатать первые n чисел Фибоначчи (f0 = 1; f1 = 1; fk+1 = fk-1+ fk; k = 1, 2, 3, ...).
  19. Распечатать числа Фибоначчи (см. задачу 3.34), являющиеся простыми числами со значениями меньше n.
  20. Вычислить с точностью eps > 0 значение числа e - предел последовательности {xi} при i ? ? xi = (1 + 1 / i)^i, i = 1, 2, ... . Считать, что требуемая точность достигнута, если |xi - xi+1| < eps.
  21. Вычислить квадратные корни вещественных чисел x = 2.0, 3.0, ... , 100.0. Распечатать значения x, , количество итераций, необходимых для вычисления корня с точностью eps > 0. Для a > 0 величина вычисляется следующим образом: a0 = 1; ai+1 = 0.5 ? (ai + a / ai ) i = 0, 1, 2, ... . Считать, что требуемая точность достигнута, если |ai - ai+1| < eps.
  22. Натуральное число называется совершенным, если оно равно сумме всех своих делителей, за исключением самого себя. Дано натуральное число n. Получить все совершенные числа, меньшие n.
  23. Определить, является ли число простых чисел, меньших 10000, простым числом.

Работоспособность всех программ проверена в CodeBlocks 16.01 (MinGW, Windows 10). Свои решения нерешённых программ и пожелания по улучшению существующих можете давать в комментариях внизу страницы.

Скачать файл лабораторной и все исходные коды программ в архиве:


Также вы можете заказать решение своих лабораторных работ на языке C++ и многих других:
Мои услуги на Kwork

№2: Подсчитать количество натуральных чисел n (111 <= n <= 999), в записи которых есть две одинаковые цифры.

#include <stdio.h>

int main()
{
    int i, count = 0;
    for (i = 111; i <= 999; i++)
        if (i / 100 == i % 10 || i / 100 == i % 100 / 10 || i % 100 / 10 == i % 10)
            count++;
    printf("%d", count);
    return 0;
}

№3: Подсчитать количество натуральных чисел n (102 <= n <= 987), в которых все три цифры различны.

#include <stdio.h>

int main()
{
    int i, count = 0;
    for (i = 102; i <= 987; i++)
        if (i / 100 != i % 10 && i / 100 != i % 100 / 10 && i % 100 / 10 != i % 10)
            count++;
    printf("%d", count);
    return 0;
}

№4: Подсчитать количество натуральных чисел n (11 <= n <= 999), являющихся палиндромами, и распечатать их.

#include <stdio.h>

int main()
{
    int i;
    for (i = 11; i <= 999; i++)
        if (i < 100 && i / 10 == i % 10)
            printf("%d\n", i);
        else if (i > 100 && i / 100 == i % 10)
                printf("%d\n", i);
    return 0;
}

№5: Подсчитать количество цифр в десятичной записи целого неотрицательного числа n.

#include <stdio.h>

int main()
{
    int n, count = 0;
    printf("Enter n: ");
    scanf("%d", &n);
    while (n > 0){
        count++;
        n /= 10;
    }
    printf("Number of digits: %d", count);
    return 0;
}

№6: Определить, верно ли, что куб суммы цифр натурального числа n равен n^2.

#include <stdio.h>

int main()
{
    int n, square, cube, sum = 0;
    printf("Enter n: ");
    scanf("%d", &n);
    square = n * n;
    while (n > 0){
        sum = sum + (n % 10);
        n /= 10;
    }
    cube = sum * sum * sum;
    if (cube == square)
        printf("True");
    else
        printf("False");
    return 0;
}

№7: Определить, является ли натуральное число n степенью числа 3.

#include <stdio.h>

int main()
{
    int n;
    printf("Enter n: ");
    scanf("%d", &n);
    while (n % 3 == 0)
        n /= 3;
    if (n == 1)
        printf("The number is a power of 3.");
    else
        printf("The number is not a power of 3.");
    return 0;
}

№8: Для данного вещественного числа a среди чисел 1, 1 + (1/2), 1 + (1/2) + (1/3), ... найти первое, большее a.

#include <stdio.h>

int main()
{
    int n = 1;
    float a, num = 0;
    printf("Enter a: ");
    scanf("%f", &a);
    while (num < a) {
        num += (1.0 / n++);
    }
    printf("Answer: %f", num);
    return 0;
}

№9: Для данного вещественного положительного числа a найти наименьшее целое положительное n такое, что 1 + 1/2 + 1/3 + ... + 1/n > a.

#include <stdio.h>

int main()
{
    int n = 1;
    float a, count = 1.0;
    scanf("%f", &a);
    while (count < a) {
        n++;
        count = count + (1.0 / n);
    }
    printf("%d", n);
    return 0;
}

№11: Дано натуральное число n. Найти значение числа, полученного следующим образом: из записи числа n выбросить цифры 0 и 5, оставив прежним порядок остальных цифр.

#include <stdio.h>

int main()
{
    int n = 1;
    float a, count = 1.0;
    scanf("%f", &a);
    while (count < a) {
        n++;
        count = count + (1.0 / n);
    }
    printf("%d", n);
    return 0;
}

№13: Дано натуральное число n. Получить все его натуральные делители.

#include <stdio.h>

int main()
{
    int n, i;
    scanf("%d", &n);
    for (i = 1; i <= n/2; i++)
        if (n % i==0)
            printf("%d ", i);
    printf("%d", n);
    return 0;
}

№14: Дано целое число m > 1. Получить наибольшее целое k, при котором 4^k < m.

#include <stdio.h>

int main()
{
    int m, k = 0, num = 1;
    printf("Enter m > 1: ");
    scanf("%d", &m);
    if (m <= 1){
        printf("Number must be > 1");
        return 0;
    }
    while (num * 4 < m){
        num *= 4;
        k++;
    }
    printf("k = %d (%d)", k, num);
    return 0;
}

№15: Дано натуральное число n. Получить наименьшее число вида 2^r, превосходящее n.

#include <stdio.h>

int main()
{
    int n, r = 0, num = 1;
    printf("Enter n > 1: ");
    scanf("%d", &n);
    if (n < 1){
        printf("Number must be > 1");
        return 0;
    }
    while (num <= n){
        num *= 2;
        r++;
    }
    printf("Answer: 2^%d (%d)", r, num);
    return 0;
}

№16: Распечатать первые n простых чисел (p – простое число, если p >= 2 и делится только на 1 и на себя).

#include <stdio.h>

int main()
{
    int n, i = 0, i1, k = 1, k1 = 0;
    scanf("%d", &n);
    while (n > i){
        k++;
        for (i1 = 1; i1 <= k; i1++)
            if (k % i1 == 0)
                k1++;
        if (k1 == 2){
            printf("%d ", k);
            i++;
        }
        k1 = 0;
    }
    return 0;
}

№18: Распечатать первые n чисел Фибоначчи (f0 = 1; f1 = 1; fk+1 = fk-1+ fk; k = 1, 2, 3, ...).

#include <stdio.h>

int main()
{
    int n, i, f0 = 1, f1 = 1;
    printf("Enter n: ");
    scanf("%d", &n);
    printf("Pervye %d chisel Fibonachi: ", n);
    for (i=1; i<=n; i++){
        if (f0 >= f1) {
            printf("%d ", f1);
            f1 = f0 + f1;
        } else {
            printf("%d ", f0);
            f0 = f1 + f0;
        }
    }
    return 0;
}

№19: Распечатать числа Фибоначчи (см. задачу 3.34), являющиеся простыми числами со значениями меньше n.

#include <stdio.h>

int main()
{
    int n, i, f0 = 1, f1 = 1, k, k1;
    printf("Enter n: ");
    scanf("%d", &n);
    while (f0 <= n || f1 <= n){
        if (f0 >= f1) {
            k = f1;
            f1 = f0 + f1;
        } else {
            k = f0;
            f0 = f1 + f0;
        }
        for (i = 1; i <= k; i++)
            if (k % i == 0)
                k1++;
        if (k1 <= 2)
            printf("%d ", k);
        k1 = 0;
    }
    return 0;
}



Реклама