单次扫描、迭代逼近、其他

本次作业来自于王化雨老师

已完成

1【程序题】

成绩统计。用户输入一批0到100分之间的考试成绩,程序给出总的成绩数目和平均成绩,并输出最高成绩和次高成绩。编程要求 :在提示信息score:后面,用户输入一个整数分数,在输入一批分数后,通过输入负数表示输入结束。程序的输出结果有3种形式:①如果程序运行过程中,输入了2个及以上规定值域内的有效成绩,输出时:先以total=A,avarage=B的形式输出成绩个数和平均分数,再换行以first=X,second=Y形式输出成绩最高、次高的两个成绩;②如果程序运行过程中,只输入了1个有效成绩,则输出的第2行只有first=X;③如果程序运行过程中,自始至终没有输入规定值域内的有效成绩,则只输出:no valid scores。

注意:①程序显示score:等待用户输入成绩,用户按Enter后,再次显示score:等待用户输入下个成绩;②当用户在score:后输入的成绩大于100,程序忽略不计;③当用户在score:后输入的成绩小于0时,程序输出结果后结束;④除平均成绩保留2位小数外,其余显示出的数值均为整数。下面是程序的运行效果:

我的答案:

#include<stdio.h>

#include<math.h>
int main()
{
    int sum, total, max = 0, sec = 0;
    int score;
    double average;
    sum = 0;
    total = 0;
        do
        {
            printf("score:");
            scanf("%d", &score);
            if (0 <= score && 100 >= score)
            {
                sum += score;
                total += 1;
            }
            else if (100 < score)
            {
                continue;
            }
            else
            {
                break;
            }
            if (score > max)
            {
                if (total != 1)
                {
                    sec = max;
                }
                max = score;
            }
            else if (max > score && sec < score)
            {
                sec = score;
            }
            average = (double)sum / total;
        } while (score >= 0);
        if (total == 0)
        {
            printf("no valid scores");
        }
        else if (total == 1)
        {
            printf("total=%d,average=%.2lf", total, average);
            printf("\n");
            printf("first=%d", max);
        }
        else
        {
            printf("total=%d,average=%.2lf", total, average);
            printf("\n");
            printf("first=%d,second=%d", max,sec);
        }
        return EOF;
}

2【程序题】

统计字符类别。编程要求 :在提示信息string:后面,用户输入一个字符串(字符串中可以包含空格),按Enter表示输入结束。程序先以total=A形式输出字符串中所有字符个数后,再换行以letter=B,digit=C,space=D,others=E的形式输出这个字符串中的英文字母letter的个数B、数字字符digit的个数C、空格sapce的个数D以及其他字符others的个数E。

注意:①程序输出结果后,继续显示提示信息string:,等待用户的下一次输入,并根据输入的字符串输出相应的统计结果total=A和letter=B,digit=C,space=D,others=E,直到用户没有输入字符串而直接按Enter为止;②当用户在提示信息string:后直接按下Enter,程序输出Bye!后结束。下面是程序的运行效果:

我的答案:

#include <ctype.h>

#include <stdio.h>

#include <string.h>

void print(int total, int ns, int nd, int nsp, int no)
{
    printf("total=%d", total);
    printf("\n");
    printf("letter=%d,digit=%d,space=%d,others=%d", ns, nd, nsp, no);
    printf("\n");
}

int main()
{
    char m;
    int total=0;
    int ns = 0, nd = 0, nsp = 0, no = 0;
    do
    {
        printf("string:");
        m = getchar();
        while (m != '\n')
        {
            if (isalpha(m))
                ns += 1;
            else if (isdigit(m))
                nd += 1;
            else if (m == ' ')
                nsp += 1;
            else
                no += 1;
            total += 1;
            m = getchar();
        }
        print(total, ns, nd, nsp, no);
    } while (m != '\n');
}

3【程序题】

圆周率。利用下面公式计算π值(当前、后两次计算出的π值差的绝对值小于规定精确度后,程序输出得到的π值。):

 此处(n-1)的平方应为(n+1)的平方

编程要求:①在提示accuracy:后用户输入精确度(输入时只可用指数形式,并且使用小写e),程序给出计算的结果pi(保留4位小数)与当时计算公式中的n值;②程序输出运算结果后,继续提示accuracy:等待用户输入,并再次输出相应结果,直到用户输入的数小于等于0为止;③当用户在accuracy:后输入的数小于等于0时,程序输出Bye!结束。注意:程序中涉及到浮点数时要使用double型。下面是程序的运行效果:

我的答案:

#include<stdio.h>

#include<math.h>
double Max(double Pi, double pi)
{
    if (Pi > pi)
        return 2 * Pi;
    else
        return 2 * pi;
}
int main()

{

    double ac;

    double pi, n, Pi;

    do

    {

        pi = (double)4 / 3; Pi = 1;

        n = 1;

        printf("accuracy:");

        scanf("%lf", &ac);

        if (ac > 0)
        {
            while (2 * fabs(pi - Pi) > ac)
            {
                n += 2;
                if (pi > Pi)
                {
                    Pi = pi * (n + 1) * (n + 1) / (n * (n + 2));
                }
                else
                {
                    pi = Pi * (n + 1) * (n + 1) / (n * (n + 2));
                }
            }
            Pi = Max(Pi, pi);
            printf("pi=%.4lf,n=%.0lf\n", Pi, n);
        }
        else
            printf("Bye!\n");
    } while (ac > 0);
    return 0;
}

4【程序题】

正整数分析。编程要求 :①在提示integer:后用户输入一个正整数,程序以reverse=ZYX, digits=A的形式输出这个正整数各位数字的逆序(即如果是3位数,则ZYX代表这个3位数的个、十、百位数字自左到右排列)和这个正整数的位数A;②程序输出结果后,继续提示integer:等待用户输入,并再次输出相应结果,直到用户输入的数小于等于0为止;③当用户在integer:后输入的数小于等于0时,程序输出Bye!结束。

下面是程序的运行效果:

我的答案:

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

int main()
{
    int num, i=1;
    int Mid;
    do
    {
        printf("integer:");
        scanf("%d", &num);
        Mid = num;
        i = 1;
        if (Mid <= 0)
        {
            printf("Bye!");
            break;
        }
        printf("reverse=");
        while (num / 10)
        {
            printf("%d", num % 10);
            num = num / 10;
            i++;
        }
        printf("%d", num % 10);
        printf(",");
        printf("digits=%d", i);
        printf("\n");
    } while (Mid > 0);
}

5【程序题】

圆覆盖点。键盘输入一个正整数作为圆的半径,圆心在坐标原点。编程输出:有多少个横坐标和纵坐标都是整数的点被圆覆盖?

编程要求 :①在提示radius:后用户输入一个正的浮点数r,程序以points=A的形式输出以直角坐标系原点为圆心、以浮点数r为半径的圆,可以覆盖多少个横坐标和纵坐标都是整数的点的个数;②程序输出结果后,继续提示radius:等待下个输入,并再次输出相应结果,直到用户输入的数小于等于0为止;③当用户在radius:后输入的数小于等于0时,程序输出Bye!结束。下面是程序的运行效果:

我的答案:

#include<stdio.h>
#include<math.h>
int points(double r)
{
    int i, j;
    int total = 0;
    for (i = 0 - r;i <= r;i++)
    {
        for (j = 0 - r;j <= r;j++)
        {
            if (((i * i) + (j * j)) <= (r * r))
                total++;
        }
    }
    return total;
}
int main()
{
    double r;
    int total = 0;
    do
    {
        printf("radius:");
        scanf("%lf", &r);
        if (r <= 0)
        {
            printf("Bye!");
            break;
        }
        total=points(r);
        printf("points=%d\n", total);
    } while (r > 0);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ApophisJ

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

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

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

打赏作者

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

抵扣说明:

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

余额充值