C language experiment 06_ mathematics

C language experiment 06_ mathematics

Experiment 06 (01) Judging the function of prime numbers

6.2 写一个判断素数的函数,在主函数中输出 1~100 间的素数信息
输入描述
无
输出描述
输出 1~100 之间所有的素数,中间用空格隔开
输入样例
无
输出样例
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
#include <stdio.h>
int IsPrime(int n);
int main()
{
    
    
    int n;
    for (n = 2; n <= 100; n++)
    {
    
    
        if (IsPrime(n))
            printf("%d ", n);
    }
    printf("\n");
    return 0;
}
int IsPrime(int n)
{
    
    
    int i;
    for (i = 2; i < n; i++)
    {
    
    
        if (n % i == 0)
            return 0;
    }
    return 1;
}

Experiment 06 (02) Indefinite equations solution

6.3 设 a,b,c 为三个大于零的正整数,计算并输出下列不定方程组解的个数 Number 以及满足
此条件的所有 a,b,c 之和 sum。题目描述
设 a,b,c 为三个大于零的正整数,计算并输出下列不定方程组解的个数 Number 以及满足此条件的所有 a,b,c 之和 sum。
不定方程组为:(1) a+b+c=13 (2)a-c=5,且(a,b,c>0)
请编写函数 countValue()实现程序要求并在主函数中输出结果。
输入描述
无
输出描述
在子函数 countValue()中依次输出满足条件的 a,b,c,并求 Number 和 sum,在主函数里输出
Number 和 sum
输入样例
无
输出样例
a=6,b=6,c=1
a=7,b=4,c=2
a=8,b=2,c=3
sum=39,Number=3
#include <stdio.h>
void countValue();
int main()
{
    
    
    countValue();
    return 0;
}
void countValue()
{
    
    
    int a, b, c, sum, Number;
    sum = 0, Number = 0;
    for (a = 1; a < 10; a++)
    {
    
    
        for (b = 1; b < 10; b++)
        {
    
    
            for (c = 1; c < 10; c++)
            {
    
    
                if (a + b + c == 13 && a - c == 5)
                {
    
    
                    printf("a=%d,b=%d,c=%d\n", a, b, c);
                    sum = sum + a + b + c;
                    Number++;
                }
            }
        }
    }
    printf("sum=%d,Number=%d\n", sum, Number);
}

Experiment 06 (03) Fibonacci

6.4 用递归调用法求 Fibonacci 数列前 30 个数。题目描述
递推公式如下:F1=1(n=1),F2=1(n=2),Fn=Fn-1+Fn-2(n>2)
输入描述
无
输出描述
每一个数以%15ld 的格式输出,每 5 个数换一行
输出样例
//忽略第一行的注释
1 1 2 3 5
8 13 21 34 55
89 144 233 377 610
987 1597 2584 4181 6765
10946 17711 28657 46368 75025
121393 196418 317811 514229 832040
#include <stdio.h>
void Fibonacci();
int main()
{
    
    
    Fibonacci();
    return 0;
}
void Fibonacci()
{
    
    
    long f1, f2, i, t;
    f1 = 1, f2 = 1, t = 0;
    for (i = 0; i < 15; i++)
    {
    
    
        if (t != 0 && t % 5 == 0)
            printf("\n");
        printf("%15ld", f1);
        t++;
        if (t != 0 && t % 5 == 0)
            printf("\n");
        printf("%15ld", f2);
        t++;
        f1 = f1 + f2;
        f2 = f1 + f2;
    }
    printf("\n");
}

Experiment 06 (04) Calculating the score

参加我校大学生英语演讲比赛决赛阶段的选手有 n 位,决赛中共有 m 位评委,假设所有选
手的成绩存放在一个二维数组中,根据评分规则计算每位选手的平均分,并按成绩逆序打印。
(评分的规则是:去掉一个最高分,去掉一个最低分,然后对剩下评委的评分求和平均即为
该选手得分)请编程实现(输出形式表 6.1)(假设 n=5, m=5)。本程序要求必须编写如下 2
个函数:
题目描述
参加我校大学生英语演讲比赛决赛阶段的选手有 n 位,决赛中共有 m 位评委,假设所有选
手的成绩存放在一个二维数组中,根据评分规则计算每位选手的平均分,并按成绩逆序打印。
(评分的规则是:去掉一个最高分,去掉一个最低分,然后对剩下评委的评分求和平均即为
该选手得分)请编程实现(输出形式表 6.1)(假设 n=5, m=5)。本程序要求必须编写如下 2
个函数:a)  求平均分的函数;
b)  排序函数。(排序时注意分数和姓名的对应关系,姓名可以使用拼音)
表 6.1 英语演讲比赛成绩表
Name  Ref1 Ref2 Ref3 Ref4 Ref5 Average 排名
ChenJun 9.3 8.5 9.2 9.2 9.5 9.23 1
ZhanRen 9.0 8.9 8.6 9.2 7.8 8.83 2
HuKai  8.6 8.4 8.8 9.5 8.0 8.63 3
XieQian 9.1 8.3 8.5 8.1 9.0 8.60 4
DuMu  7.8 8.2 9.7 8.0 9.4 8.53 5
【提示】选手姓名用二维字符数组,成绩用二维数组存储。排名可采用两种方法:(1)另用
一个数组存储选手的名次,根据名次输出成绩。(2)实现数据排序,注意按均分排序时,姓
名要对应(即姓名也要对应交换)。
输入描述
依次输入 5 位选手的姓名和成绩,空格隔开
输出描述
按照平均成绩从高到低排名并输出各个选手的姓名成绩平均成绩以及排名
输出格式:%10s%8.1f%8.1f%8.1f%8.1f%8.1f%8.2f%8d\n
输入样例
ChenJun 9.3 8.5 9.2 9.2 9.5
ZhanRen 9.0 8.9 8.6 9.2 7.8
HuKai 8.6 8.5 8.8 9.5 8.0
XieQian 9.1 8.3 8.5 8.1 9.0
DuMu 7.8 8.2 9.7 8.0 9.4
输出样例
ChenJun 9.3 8.5 9.2 9.2 9.5 9.23 1
ZhanRen 9.0 8.9 8.6 9.2 7.8 8.83 2
HuKai 8.6 8.5 8.8 9.5 8.0 8.63 3
XieQian 9.1 8.3 8.5 8.1 9.0 8.60 4
DuMu 7.8 8.2 9.7 8.0 9.4 8.53 5
#include <stdio.h>
void xuanze();
void scan();
void avg();
void print();
char Name[5][10];
double Score[5][5];
double a[5][5];
double Average[5];
int i, j;
int main()
{
    
    
    scan();
    xuanze();
    avg();
    print();
}
void scan()
{
    
    
    for (i = 0; i < 5; i++)
    {
    
    
        scanf("%s", Name[i]);
        for (j = 0; j < 5; j++)
        {
    
    
            scanf("%lf", &Score[i][j]);
        }
    }
    for (i = 0; i < 5; i++)
    {
    
    
        for (j = 0; j < 5; j++)
        {
    
    
            a[i][j] = Score[i][j];
        }
    }
}
void xuanze()
{
    
    
    int k;
    double t;
    for (i = 0; i < 5; i++)
    {
    
    
        for (k = 0; k < 5; k++)
        {
    
    
            for (j = 0; j < 4 - k; j++)
            {
    
    
                if (a[i][j] > a[i][j + 1])
                {
    
    
                    t = a[i][j];
                    a[i][j] = a[i][j + 1];
                    a[i][j + 1] = t;
                }
            }
        }
    }
}
void avg()
{
    
    
    double sum;
    sum = 0;
    for (i = 0; i < 5; i++)
    {
    
    
        sum = sum + a[i][1] + a[i][2] + a[i][3];
        Average[i] = sum / 3.0;
        sum = 0;
    }
}
void print()
{
    
    
    double t1, t2;
    int z;
    char m;
    for (i = 0; i < 4; i++)
    {
    
    
        for (j = 0; j < 4 - i; j++)
        {
    
    
            if (Average[j] < Average[j + 1])
            {
    
    
                t1 = Average[j];
                Average[j] = Average[j + 1];
                Average[j + 1] = t1;
                for (z = 0; z < 10; z++)
                {
    
    
                    m = Name[j][z];
                    Name[j][z] = Name[j + 1][z];
                    Name[j + 1][z] = m;
                }
                for (z = 0; z < 5; z++)
                {
    
    
                    t2 = Score[j][z];
                    Score[j][z] = Score[j + 1][z];
                    Score[j + 1][z] = t2;
                }
            }
        }
    }
    for (i = 0; i < 5; i++)
        printf("%10s%8.1f%8.1f%8.1f%8.1f%8.1f%8.2f%8d\n", Name[i], Score[i][0], Score[i][1], Score[i][2], Score[i][3], Score[i][4], Average[i], i + 1);
}

Guess you like

Origin blog.csdn.net/weixin_44179485/article/details/112715566