C language experiment 04_loop statement

C language experiment 04_loop statement

Experiment 04 (01) Find the approximate value of e

题目描述
自然常数 e 可以用级数
1+1/1!+1/2!+...+1/n!
来近似计算。从键盘输入精度要求
输入描述
从键盘输入精度要求(double 型)
输出描述
输出 e 的近似值
输入样例
0.000001
0.001
输出样例
e=2.7182818011
e=2.7182539683
#include <stdio.h>
#include <math.h>
int main()
{
    
    
    double sum, t, n;
    int i;
    i = 1;
    sum = 1;
    t = 1;
    scanf("%lf", &n);
    while (fabs(t) > n)
    {
    
    
        t = t * (1.0 / i);
        sum = sum + t;
        i++;
    }
    printf("e=%.10lf\n", sum);
    return 0;
}

Experiment 04 (02) Decompose prime factors

题目描述
将一个正整数分解质因数。例如:输入 90,打印出 90=2* 3* 3* 5。
提示:对 n 分解质因数,应先找到一个最小的质数 k,然后按下述步骤完成:
(1)如果这个质数恰等于 n,则说明分解质因数的过程已结束,打印出即可。
(2)如果 n!=k,但 n 能被 k 整除,则应打印出 k 的值,并用 n 除以 k 的商,作为新的正整
数 n,重复执行第一步。
(3)如果 n 不能被 k 整除,则用 k+1 作为 k 的值,重复执行第一步。
输入描述
从键盘输入任意一个合数,如输入 90
输出描述
输出 90=2* 3* 3 * 5
输入样例
60
输出样例
60=2* 2 * 3* 5
#include <stdio.h>
int main()
{
    
    
    int n, k;
    scanf("%d", &n);
    k = 2;
    printf("%d=", n);
    while (n != k)
    {
    
    
        if (n % k == 0 && n != k)
        {
    
    
            printf("%d*", k);
            n = n / k;
        }
        else if (n % k != 0)
        {
    
    
            k = k + 1;
        }
    }
    printf("%d\n", k);
    return 0;
}

Experiment 04 (03) Score Statistics

题目描述
某位老师需要分别统计若干个班某项考试的平均分,但每个班的人数都不相同(人数由键盘
输入),请写个程序辅助他尽快完成任务。如果输入的成绩不在[0,100]范围内,则重新输入
要求保留两位小数。
输入描述
由键盘输入 n+1 个数,其中第一个数为班级学生人数如 3,其后 n 个整数为这 n 个学生的成
绩(如 78 89 90)。如果学生成绩不在[0,100]范围,重新输入。
输出描述
输出这个班的平均成绩(保留两位小数)
输入样例
//以下为多组测试数据
3 78 89 90
7 80 76 89 56 95 109 78 94
输出样例
//以下为多组数据对应的输出
该班的平均分为:85.67(英文标点)
该班的平均分为:81.14
#include <stdio.h>
int main()
{
    
    
    int i, n, x, t;
    double sum, avg;
    sum = 0;
    scanf("%d", &n);
    t = n;
    for (i = 1; i <= n; i++)
    {
    
    
        scanf("%d", &x);
        if (x >= 0 && x <= 100)
        {
    
    
            sum = sum + x;
        }
        else
        {
    
    
            n++;
        }
    }
    avg = sum / t;
    printf("该班的平均分为:%.2lf\n", avg);
    return 0;
}

Experiment 04 (04) Hollow Rectangle

题目描述
根据用户输入的整数长度和宽度,用星号”*”画出一个空心矩形。
输入描述
从键盘输入长度和宽度
输出描述
空心矩形
输入样例
3 6
输出样例
******
* *
******
#include <stdio.h>
int main()
{
    
    
    int i, j, m, n;
    scanf("%d%d", &i, &j);
    for (m = 1; m <= i; m++)
    {
    
    
        for (n = 1; n <= j; n++)
        {
    
    
            if (m > 1 && m < i && n > 1 && n < j)
            {
    
    
                printf(" ");
            }
            else
            {
    
    
                printf("*");
            }
        }
        printf("\n");
    }
    return 0;
}

Experiment 04 (05) Iterative method to find the square root of x

.题目描述
用迭代法求 x 的平方根.(教材 P138 页,题 13)
迭代公式见教材 P138 题 13
要求前后两次求出的 x 的差的绝对值小于 10 的负 6 次方。
输入描述
从键盘输入一个正整数
输出描述
输出该数的平方根
输入样例
100
120
输出样例
100.00 的平方根为:10.00
120.00 的平方根为:10.95
#include <stdio.h>
#include <math.h>
int main()
{
    
    
    double a, x0, x1;
    scanf("%lf", &a);
    x0 = a / 2;
    x1 = (x0 + a / x0) / 2;
    while (fabs(x0 - x1) >= 1e-5)
    {
    
    
        x0 = x1;
        x1 = (x0 + a / x0) / 2;
    }
    printf("%.2lf 的平方根为:%.2lf\n", a, x1);
    return 0;
}

Experiment 04 (06) Find the sum of factorials

题目描述
从键盘输入一个正整数,求 1!+2!+3!+4+..+n!之和

输入描述
从键盘输入一个正整数 n
输出描述
求 1!至 n!之和
输入样例
//以下为多组测试数据
3
20
输出样例
//以下为多组数据对应的测试结果
9.000000e+000
2.561327e+018
#include <stdio.h>
int main()
{
    
    
    int n, i;
    double t, sum;
    sum = 0;
    scanf("%d", &n);
    t = 1;
    for (i = 1; i <= n; i++)
    {
    
    
        t = t * i;
        sum = sum + t;
    }
    printf("%e\n", sum);
    return 0;
}

Experiment 04 (07) Judging prime numbers

题目描述
从键盘输入一个数,判断是否为素数
输入描述
从键盘输入一个整数
输出描述
判断是否为素数
输入样例
-10
10
23
输出样例
-10<=0
10 is not a prime number
23 is a prime number
#include <stdio.h>
#include <math.h>
int main()
{
    
    
    int i, n, t;
    t = 0;
    scanf("%d", &n);
    if (n <= 0)
    {
    
    
        printf("%d<=0\n", n);
    }
    else
    {
    
    
        for (i = 2; i <= sqrt(n); i++)
        {
    
    
            if (n % i == 0)
            {
    
    
                t = 1;
            }
        }
        if (t == 1)
        {
    
    
            printf("%d is not a prime number\n", n);
        }
        else
        {
    
    
            printf("%d is a prime number\n", n);
        }
    }
    return 0;
}

Guess you like

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