C语言课后作业 20 题+考研上机应用题


题目 1: 计算圆的面积

描述: 输入圆的半径,计算并输出圆的面积。

题目 2: 判断一个年份是否为闰年

描述: 输入一个年份,判断并输出该年份是否为闰年。

题目 3: 计算并输出斐波那契数列的前10个数

描述: 输出斐波那契数列的前10个数。

题目 4: 字符串长度计算

描述: 输入一个字符串,输出该字符串的长度。

题目 5: 实现冒泡排序算法

描述: 输入一个整数数组,使用冒泡排序算法对其进行排序,并输出排序后的结果。

题目 6: 计算一个整数的阶乘

描述: 输入一个正整数,输出其阶乘。

题目 7: 实现线性查找算法

描述: 在一个已排序的数组中实现线性查找算法,查找特定元素的位置。

题目 8: 计算一个数的平方根

描述: 输入一个非负实数,计算并输出其平方根。

题目 9: 实现选择排序算法

描述: 输入一个整数数组,使用选择排序算法对其进行排序,并输出排序后的结果。

题目 10: 计算一个整数的倒数

描述: 输入一个非零整数,输出其倒数。

题目 11: 实现二分查找算法

描述: 在一个已排序的数组中实现二分查找算法,查找特定元素的位置。

题目 12: 输出一个整数数组的所有元素

描述: 输入一个整数数组及其大小,输出数组的所有元素。

题目 13: 计算并输出一个整数数组的平均值

描述: 输入一个整数数组,计算并输出其平均值。

题目 14: 字符串内容替换

描述: 输入一个字符串和一个要替换的字符,将字符串中所有该字符替换为另一个字符,并输出替换后的字符串。

题目 15: 实现插入排序算法

描述: 输入一个整数数组,使用插入排序算法对其进行排序,并输出排序后的结果。

题目 16: 计算并输出一个整数的立方

描述: 输入一个整数,计算并输出其立方。

题目 17: 实现长整数相加的函数

描述: 设计一个函数,实现两个长整数的相加,并输出结果。

题目 18: 字符串翻转

描述: 输入一个字符串,输出其翻转后的字符串。

题目 19: 计算并输出一个整数的最大因子

描述: 输入一个正整数,计算并输出其最大因子。

题目 20: 实现质数生成器

描述: 输出一个范围内的所有质数。

题目 1: 计算圆的面积

#include <stdio.h>
#define PI 3.14159

int main() {
    float radius, area;
    printf("Enter the radius of the circle: ");
    scanf("%f", &radius);
    area = PI * radius * radius;
    printf("The area of the circle is: %fn", area);
    return 0;
}

题目 2: 判断一个年份是否为闰年

#include <stdio.h>

int isLeapYear(int year) {
    if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
        return 1;
    return 0;
}

int main() {
    int year;
    printf("Enter a year: ");
    scanf("%d", &year);
    if (isLeapYear(year)) {
        printf("%d is a leap year.n", year);
    } else {
        printf("%d is not a leap year.n", year);
    }
    return 0;
}

题目 3: 计算并输出斐波那契数列的前10个数

#include <stdio.h>

int main() {
    int n = 10, t1 = 0, t2 = 1, nextTerm = t1 + t2;
    printf("Fibonacci Series: ");
    for (int i = 1; i <= n; ++i) {
        printf("%d, ", t1);
        nextTerm = t1 + t2;
        t1 = t2;
        t2 = nextTerm;
    }
    return 0;
}

题目 4: 字符串长度计算

#include <stdio.h>
#include <string.h>

int main() {
    char str[100];
    printf("Enter a string: ");
    scanf("%s", str);
    printf("The length of the string is: %lun", strlen(str));
    return 0;
}

题目 5: 实现冒泡排序算法

#include <stdio.h>

void bubbleSort(int arr[], int n) {
    for (int i = 0; i < n-1; i++) {
        for (int j = 0; j < n-i-1; j++) {
            if (arr[j] > arr[j+1]) {
                int temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
}

int main() {
    int n;
    printf("Enter the number of elements: ");
    scanf("%d", &n);
    int arr[n];
    printf("Enter %d elements:n", n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }
    bubbleSort(arr, n);
    printf("Sorted array:n");
    for (int i = 0; i < n; i++) {
        printf("%dn", arr[i]);
    }
    return 0;
}

题目 6: 计算一个整数的阶乘

#include <stdio.h>

long long factorial(int n) {
    if (n == 0)
        return 1;
    return n * factorial(n - 1);
}

int main() {
    int num;
    printf("Enter a positive integer: ");
    scanf("%d", &num);
    printf("Factorial of %d is %lld.n", num, factorial(num));
    return 0;
}

题目 7: 实现线性查找算法

#include <stdio.h>

int linearSearch(int arr[], int n, int x) {
    for (int i = 0; i < n; i++) {
        if (arr[i] == x)
            return i;
    }
    return -1;
}

int main() {
    int n;
    printf("Enter the number of elements: ");
    scanf("%d", &n);
    int arr[n];
    printf("Enter the elements: ");
    for (int i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }
    int x;
    printf("Enter the element to be searched: ");
    scanf("%d", &x);
    int result = linearSearch(arr, n, x);
    if (result == -1)
        printf("Element not found.n");
    else
        printf("Element found at index %d.n", result);
    return 0;
}

题目 8: 计算一个数的平方根

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

int main() {
    double num, sqrtNum;
    printf("Enter a number: ");
    scanf("%lf", &num);
    sqrtNum = sqrt(num);
    printf("Square root of %lf is %lf.n", num, sqrtNum);
    return 0;
}

题目 9: 实现选择排序算法

#include <stdio.h>

void selectionSort(int arr[], int n) {
    int i, j, min_idx, temp;
    for (i = 0; i < n-1; i++) {
        min_idx = i;
        for (j = i+1; j < n; j++) {
            if (arr[j] < arr[min_idx]) {
                min_idx = j;
            }
        }
        temp = arr[min_idx];
        arr[min_idx] = arr[i];
        arr[i] = temp;
    }
}

int main() {
    int n;
    printf("Enter the number of elements: ");
    scanf("%d", &n);
    int arr[n];
    printf("Enter %d elements:n", n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }
    selectionSort(arr, n);
    printf("Sorted array:n");
    for (int i = 0; i < n; i++) {
        printf("%dn", arr[i]);
    }
    return 0;
}

题目 10: 计算一个整数的倒数

#include <stdio.h>

int main() {
    int num;
    double reciprocal;
    printf("Enter an integer (except 0): ");
    scanf("%d", &num);
    if (num == 0) {
        printf("Cannot calculate reciprocal of 0.n");
    } else {
        reciprocal = 1.0 / num;
        printf("Reciprocal of %d is %f.n", num, reciprocal);
    }
    return 0;
}

题目 11: 实现二分查找算法

#include <stdio.h>

int binarySearch(int arr[], int l, int r, int x) {
    while (l <= r) {
        int m = l + (r - l) / 2;
        if (arr[m] == x)
            return m;
        if (arr[m] < x)
            l = m + 1;
        else
            r = m - 1;
    }
    return -1;
}

int main() {
    int n, i, x, result;
    printf("Enter the number of elements: ");
    scanf("%d", &n);
    int arr[n];
    printf("Enter the elements: ");
    for (i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }
    printf("Enter the element to be searched: ");
    scanf("%d", &x);
    result = binarySearch(arr, 0, n - 1, x);
    if (result == -1)
        printf("Element not found.n");
    else
        printf("Element found at index %d.n", result);
    return 0;
}

题目 12: 输出一个整数数组的所有元素

#include <stdio.h>

int main() {
    int n, i;
    printf("Enter the number of elements: ");
    scanf("%d", &n);
    int arr[n];
    printf("Enter %d elements:n", n);
    for (i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }
    printf("Array elements are:n");
    for (i = 0; i < n; i++) {
        printf("%dn", arr[i]);
    }
    return 0;
}

题目 13: 计算并输出一个整数数组的平均值

#include <stdio.h>

int main() {
    int n, i;
    long long sum = 0;
    printf("Enter the number of elements: ");
    scanf("%d", &n);
    int arr[n];
    printf("Enter %d elements:n", n);
    for (i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
        sum += arr[i];
    }
    double average = (double)sum / n;
    printf("Average is: %fn", average);
    return 0;
}

题目 14: 字符串内容替换

#include <stdio.h>
#include <string.h>

int main() {
    char str[100], ch1, ch2;
    printf("Enter the string: ");
    scanf("%s", str);
    printf("Enter the character to be replaced: ");
    scanf(" %c", &ch1);
    printf("Enter the replacement character: ");
    scanf(" %c", &ch2);
    for (int i = 0; i < strlen(str); i++) {
        if (str[i] == ch1) {
            str[i] = ch2;
        }
    }
    printf("Modified string is: %sn", str);
    return 0;
}

题目 15: 实现插入排序算法

#include <stdio.h>

void insertionSort(int arr[], int n) {
    int i, key, j;
    for (i = 1; i < n; i++) {
        key = arr[i];
        j = i - 1;
        while (j >= 0 && arr[j] > key) {
            arr[j + 1] = arr[j];
            j = j - 1;
        }
        arr[j + 1] = key;
    }
}

int main() {
    int n;
    printf("Enter the number of elements: ");
    scanf("%d", &n);
    int arr[n];
    printf("Enter %d elements:n", n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }
    insertionSort(arr, n);
    printf("Sorted array:n");
    for (int i = 0; i < n; i++) {
        printf("%dn", arr[i]);
    }
    return 0;
}

题目 16: 计算并输出一个整数的立方

#include <stdio.h>

int main() {
    int num;
    printf("Enter an integer: ");
    scanf("%d", &num);
    int cube = num * num * num;
    printf("Cube of %d is %d.n", num, cube);
    return 0;
}

题目 17: 实现长整数相加的函数

#include <stdio.h>
#include <string.h>

void add(long long int a[], long long int b[], int size) {
    int carry = 0, sum, i;
    long long int c[size];
    for (i = 0; i < size; i++) {
        sum = a[i] + b[i] + carry;
        carry = sum / 10;
        c[i] = sum % 10;
    }
    for (i = size - 1; i >= 0; i--) {
        printf("%lld", c[i]);
    }
    printf("n");
}

int main() {
    long long int a[] = {0, 0, 0}; // Initialize to the length required
    long long int b[] = {0, 0, 0};
    int size;
    printf("Enter the size of the integers: ");
    scanf("%d", &size);
    printf("Enter the first integer: ");
    for (int i = 0; i < size; i++) {
        scanf("%lld", &a[i]);
    }
    printf("Enter the second integer: ");
    for (int i = 0; i < size; i++) {
        scanf("%lld", &b[i]);
    }
    add(a, b, size);
    return 0;
}

题目 18: 字符串翻转

#include <stdio.h>
#include <string.h>

int main() {
    char str[100];
    printf("Enter a string: ");
    scanf("%s", str);
    int len = strlen(str);
    for (int i = 0; i < len / 2; i++) {
        char temp = str[i];
        str[i] = str[len - i - 1];
        str[len - i - 1] = temp;
    }
    printf("Reversed string is: %sn", str);
    return 0;
}

题目 19: 计算并输出一个整数的最大因子

#include <stdio.h>

int maxFactor(int num) {
    for (int i = num / 2; i >= 1; i--) {
        if (num % i == 0)
            return i;
    }
    return 1; // Since 1 is the minimum factor other than the number itself
}

int main() {
    int num;
    printf("Enter an integer: ");
    scanf("%d", &num);
    int maxFactorValue = maxFactor(num);
    printf("The largest factor of %d is %d.n", num, maxFactorValue);
    return 0;
}

题目 20: 实现质数生成器

#include <stdio.h>

int isPrime(int num) {
    if (num <= 1)
        return 0;
    for (int i = 2; i * i <= num; i++) {
        if (num % i == 0)
            return 0;
    }
    return 1;
}

void printPrimes(int start, int end) {
    printf("Prime numbers between %d and %d are:n", start, end);
    for (int i = start; i <= end; i++) {
        if (isPrime(i))
            printf("%d ", i);
    }
    printf("n");
}

int main() {
    int start, end;
    printf("Enter the range (start end): ");
    scanf("%d %d", &start, &end);
    printPrimes(start, end);
    return 0;
}

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>