C语言习题07_函数

C语言习题07_函数

习题07(01)基础

习题07(02)判断素数的函数

写一个判断素数的函数,在主函数输入一个整数,输出是否素数的信息。输入描述
输入一个大于 1 的整数
输出描述
输出该数是不是素数
输入样例
//以下为两组测试数据
9
17
输出样例
//以下为两组数据对应的结果
9 is not a prime.
17 is a prime.
#include <stdio.h>
int main(void)
{
    int x;
    int primer(int z);
    scanf("%d", &x);
    if (x > 1)
    {
        if (primer(x) == 0)
        {
            printf("%d is not a prime.\n", x);
        }
        else
        {
            printf("%d is a prime.\n", x);
        }
    }
    return 0;
}
int primer(int z)
{
    int i;
    for (i = 2; i < z; i++)
    {
        if (z % i == 0)
        {
            return 0;
        }
    }
}

习题07(03)二维整型数组转置

题目描述
写一个函数,使给定的一个 3X3 二维整型数组转置,即行列互换。数据输入输出均在主函数
中完成。
输入描述
依次输入一个 3X3 的数组中的每个元素,中间以空格隔开
输出描述
分别输出转置前及转置后的数组
输出格式为%5d
输入样例
1 2 3 4 5 6 7 8 9
输出样例
original array
1 2 3
4 5 6
7 8 9
convert array
1 4 7
2 5 8
3 6 9
#include <stdio.h>
int main()
{
    int a[3][3];
    int i, j;
    int convert(int a[3][3]);
    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 3; j++)
        {
            scanf("%d", &a[i][j]);
        }
    }
    printf("original array\n");
    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 3; j++)
        {
            printf("%5d", a[i][j]);
        }
        printf("\n");
    }
    convert(a);
    printf("convert array\n");
    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 3; j++)
        {
            printf("%5d", a[i][j]);
        }
        printf("\n");
    }
    return 0;
}
int convert(int b[3][3])
{
    int i, j, t;
    for (i = 0; i < 3; i++)
    {
        for (j = i; j < 3; j++)
        {
            t = b[j][i];
            b[j][i] = b[i][j];
            b[i][j] = t;
        }
    }
    return 0;
}

习题07(04)学生成绩统计

题目描述
输入 10 个学生 5 门课的成绩,分别用函数实现下列功能:(1)计算每个学生的平均分;(2)
计算每门课的平均分;(3)找出所有 50 个分数中最高的分数所对应的学生和课程;(4)计
算平均分方差。
输入描述
依次输入 10 个学生的 5 科成绩(成绩间用空格隔开)
输出描述
输出:每一个学生的平均成绩(averstu)
每一门课的平均成绩(avercourse),
最高分对应的学生和课程
平均分方差(variance):即 50 个成绩的平均方差。
要求:所有输出实数保留两位小数,中间空格隔开
输入样例

90 81.5 67.3 95 78 50 88.8 79 90 66.5 90 90 90 70 90 80 80 77.3 99.9 22.8 12.3 33.3 56 78 90 80
80 80 80 80 70 70 70 77.7 88.5 54.8 55 55 55 55 70 70 70 70 70 0 10 20 30 40
输出样例
averstu:82.36 74.86 86.00 72.00 53.92 80.00 75.24 54.96 70.00 20.00
avercourse:59.71 65.86 66.46 74.56 68.08
highest:99.90 student:4 course:4
variance:23.60
#include <stdio.h>
#include <math.h>
#define M 5
#define N 10
double a[N][M]; //全部学生学生的成绩
double a1[N];   //10 个学生
double a2[M];   //5 个课
int i, j;
void scan();
void aa1();
void aa2();
void aa3();
void aa4();
int main()
{
    scan();
    aa1();
    aa2();
    aa3();
    aa4();
    return 0;
}
void aa1()
{
    double sum;
    sum = 0;
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < M; j++)
        {
            sum = sum + a[i][j];
            a1[i] = sum / 5.0;
        }
        sum = 0;
    }
    printf("averstu:");
    for (i = 0; i < N; i++)
    {
        printf("%.2lf", a1[i]);
        if (i != N - 1)
        {
            printf(" ");
        }
    }
    printf("\n");
}
void aa2()
{
    double sum;
    sum = 0;
    for (i = 0; i < M; i++)
    {
        for (j = 0; j < N; j++)
        {
            sum = sum + a[j][i];
            a2[i] = sum / 10.0;
        }
        sum = 0;
    }
    printf("avercourse:");
    for (i = 0; i < M; i++)
    {
        printf("%.2lf", a2[i]);
        if (i != M - 1)
        {
            printf(" ");
        }
    }
    printf("\n");
}
void aa3()
{
    double max;
    int t1, t2;
    t1 = 0;
    t2 = 0;
    max = a[0][0];
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < M; j++)
        {
            if (a[i][j] > max)
            {
                max = a[i][j];
                t1 = i + 1;
                t2 = j + 1;
            }
        }
    }
    printf("highest:%.2lf student:%d course:%d\n", max, t1, t2);
}
void aa4()
{
    double sum = 0, average, vaeiance, q = 0;
    for (i = 0; i <= 9; i++)
    {
        for (j = 0; j <= 4; j++)
        {
            sum = sum + a[i][j];
        }
    }
    average = sum / 50;
    for (i = 0; i <= 9; i++)
    {
        for (j = 0; j <= 4; j++)
        {
            q = q + pow(average - a[i][j], 2);
        }
    }
    vaeiance = sqrt(q / 50);
    printf("variance:%.2f\n", vaeiance);
}
void scan()
{
    for (i = 0; i < N; i++) //扫描 50 个成绩
    {
        for (j = 0; j < M; j++)
        {
            scanf("%lf", &a[i][j]);
        }
    }
}

习题07(05)整数转换成字符串

题目描述
用递归法将一个整数 n 转换成字符串。例如:输入 483,应输出字符串"483".
n 的位数不确定,可以是任意位数的整数。
输入描述
输入一个整数(也可以是负数)
输出描述
输出该整数对应的字符串
输入样例
483
输出样例
"483"
#include <stdio.h>
int main()
{
    void exchange(long int n);
    long int n;
    scanf("%ld", &n);
    printf("\"");
    if (n < 0)
    {
        putchar('-');
        n = -n;
    }
    exchange(n);
    printf("\"\n");
}
void exchange(long int n)
{
    int i;
    if ((i = n / 10) != 0)
        exchange(i);
    putchar(n % 10 + '0');
} 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bmNkotc2AECynaY6

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值