C语言必会100题(8)。求100之内的素数/对10个数进行排序/求一个3*3矩阵对角线元素之和/给定一个数组,插入数据排序/将一个数组逆序输出

本文展示了C语言实现的一些基础算法,包括寻找100以内的素数,使用冒泡、选择和插入排序对10个数进行排序,计算3*3矩阵对角线元素之和,以及在已排序数组中插入数据和逆序输出数组。这些实例有助于理解基本的编程概念和算法操作。
摘要由CSDN通过智能技术生成

特此鸣谢:鱼C_小甲鱼(B站up主)不二如是(鱼C论坛大佬)
题目来源:https://fishc.com.cn
注:这些题在网上都可以搜到,题下面的代码大多是流传下来的答案(我重新排了一下版,增加了可读性),部分是本人经过深思熟虑后编写的。

36,求100之内的素数

1.题目:求100之内的素数
2.程序源代码:

#include<stdio.h>

int main()

{
    int i = 0;
    int count = 0;

    for(i = 0; i <= 100;i++) {

        int j = 0;

        for(j = 2; j <= i; j++) {

            if(i % j == 0) {

                break;
            }
        }
        if(i == j) {

            count++;
            printf("%d ",i);
        }
    }

    printf("\ncount=%d\n", count);
    return 0;
}

37,对10个数进行排序

1.题目:对10个数进行排序
2.程序源代码:

  1. 第一种解:
// 冒泡排序:
#include <stdio.h>

int main()
{
    int a[10];
    int i, j, transfer;

    printf("请输入10个数,我们将会对其排序!\n");
    for (i = 0; i < 10; i++) {
        scanf("%d", &a[i]);
    }

    for (i = 0; i < 10; i++) {

        for (j = 0; j < 10 - 1 - i; j++) {

            if (a[j] > a[j + 1]) {

                transfer = a[j];
                a[j] = a[j + 1];
                a[j + 1] = transfer;
            }
        }
    }

    printf("排序后为:");
    for (i = 0; i < 10; i++) {
        printf("%d ", a[i]);
    }
}

  1. 第二种解:
// 选择排序
#include <stdio.h>

int main()
{
    int a[10];
    int i, j, transfer;

    printf("请输入10个数,我们将会对其排序!\n");
    for (i = 0; i < 10; i++) {
        scanf("%d", &a[i]);
    }

    for (i = 0; i < 10; i++) {

        for (j = i + 1; j < 10; j++) {

            if (a[i] > a[j]) {

                transfer = a[i];
                a[i] = a[j];
                a[j] = transfer;
            }
        }
    }

    printf("排序后为:");
    for (i = 0; i < 10; i++) {
        printf("%d ", a[i]);
    }
}

  1. 第三种解:
// 插入排序
#include <stdio.h>

int main()
{
    int a[10];
    int i, j, transfer;
    int count;
    int x;

    printf("请输入10个数,我们将会对其排序!\n");
    for (i = 0; i < 10; i++) {
        scanf("%d", &a[i]);
    }

    for (i = 1; i < 10; i++){

        transfer = a[i];
        j = i - 1;

        while((j >= 0) && (a[j] > transfer)) {

                a[j + 1] = a[j];
                j--;
        }

        a[j+1] = transfer;

        count++;
        printf("第%d次:", count);
        for (x = 0; x < 10; x++) {
            printf("%d ", a[x]);
        }
        printf("\n");
    }

    printf("排序后为:");
    for (i = 0; i < 10; i++) {
        printf("%d ", a[i]);
    }
}

38,求一个3*3矩阵对角线元素之和

1.题目:求一个3*3矩阵对角线元素之和
2.程序源代码:

#include <stdio.h>

int main(void)
{
    int i, j;
    int a[3][3];
    int num = 0;

    printf("请输入一个3*3数组:\n");
    for (i = 0; i < 3; i++) {

        for (j = 0; j < 3; j++) {

            scanf("%d", &a[i][j]);

            if (i == j || (i == 0 && j == 2) || (i == 2 && j == 0)) {
                num += a[i][j];
            }
        }
    }

    printf("对角线元素之和为:%d\n", num);
    return 0;
}

39,给定一个数组,插入数据排序

1.题目:设定好一个排好顺序的数组。现输入一个数,要求按原来的规律将它插入数组中。例:设定数组为:1, 3, 4,插入数据为2,那么要求输入1, 2, 3, 4
2.程序源代码:

#include <stdio.h>

#define N 5

int main()
{
    int num;
    int a1[N] = {1, 3, 4, 6, 8};
    int a2[N + 1];
    int i, j;

    printf("请输入一个数字:");
    scanf("%d", &num);

    for (i = 0; i < N; i ++) {
        a2[i] = a1[i];
    }
    a2[N] = num;

    for (i = 0; i < N + 1; i++) {

        for (j = 0; j < N + 1 - 1 - i; j++) {

            if (a2[j] > a2[j + 1]) {
                num = a2[j];
                a2[j] = a2[j + 1];
                a2[j + 1] = num;
            }
        }
    }

    for (i = 0; i < N + 1; i++) {
        printf("%d ", a2[i]);
    }
}

40,将一个数组逆序输出

1.题目:将一个数组逆序输出
2.程序源代码:

  1. 第一种解:
#include <stdio.h>

int main(void)
{
    int a[5];
    int i;

    printf("请输入5个数字:");
    for (int i = 0; i < 5; i++) {
        scanf("%d", &a[i]);
    }

    printf("您输入的为:");
    for (i = 0; i < 5; i++) {
        printf("%d ", a[i]);
    }

    printf("\n");
    printf("逆序后为:");
    for (i = 4; i >= 0; i--) {
        printf("%d ", a[i]);
    }

    return 0;
}

  1. 第二种解:
#include "stdio.h"
#include "conio.h"
#define N 5

int main()
{
    int a[N] = {9, 6, 5, 4, 1}, i, temp;

    printf("original array:\n");
    for(i = 0; i < N; i++) {

        printf("%4d", a[i]);
    }

    for(i = 0; i < N / 2; i++) {

        temp = a[i];
        a[i] = a[N - i - 1];
        a[N - i - 1] = temp;
    }

    printf("\nsorted array:\n");
    for(i = 0; i < N; i++) {

        printf("%4d", a[i]);
    }

    getch();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值