MyXxxin 2021-12-28 07:06 采纳率: 100%
浏览 95
已结题

SOS 见下文见下文 SOS

近似求PI (15 分)
本题要求编写程序,根据下式求π的近似值,直到最后一项小于给定精度eps。

2
π

=1+
3
1!

  • 3×5
    2!
  • 3×5×7
    3!
  • ⋯+
    3×5×⋯×(2×i+1)
    i!

输入格式:
输入在一行中给出精度eps,可以使用以下语句来读输入:

scanf("%le", &eps);
输出格式:
在一行内,按照以下格式输出π的近似值(保留小数点后5位):

PI = 近似值
输入样例:
1E-5
结尾无空行
输出样例:
PI = 3.14158
结尾无空行

  • 写回答

2条回答 默认 最新

  • 关注

    如下:

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    //生成3个位不重复的十六进制数,以字符形式返回每个位上的数
    void getrand(char *aa,char *bb,char *cc)
    {
        int a,b,c;
        //int s=0;
        a = rand()%15+1; //生成1-15的随机数
        while(1)
        {
            b = rand()%15; //生成0-15的随机数
            if(b != a)
                break; //避免b跟a重复
        }
        //生成c
        while(1)
        {
            c = rand()%15; //生成0-15的随机数
            if(c != a && c != b)
                break;
        }
        //s = a*16*16+b*16+c;
        //printf("三个位置上的数分别是:%d %d %d\n",a,b,c);
        //printf("生成的三位数十六进制分别是:%X %X %X\n",a,b,c);
        if(a<10)
            *aa = '0'+ a;
        else
            *aa = 'A'+a-10;
        if(b<10)
            *bb = '0'+ b;
        else
            *bb = 'A'+b-10;
        if(c<10)
            *cc = '0'+ c;
        else
            *cc = 'A'+c-10;
    }
    
    int main()
    {
        char a,b,c;
        char a1,b1,c1;
        int times = 8;
        srand((unsigned int)time(NULL));
        getrand(&a,&b,&c);
        while(times)
        {
            printf("请输入3个位上的数字(0-F):");
            scanf("%c%c%c",&a1,&b1,&c1);
            getchar();
            if(a1==a && b1==b && c1==c)
            {
                printf("猜对了\n");
                break;
            }else
            {
                if(a1==a)
                    printf("数字 1 位置正确数字正确;");
                else
                {
                    if(a1 ==b || a1==c)
                        printf("数字1 位置不正确数字正确;");
                }
    
    
                if(b1==b)
                    printf("数字 2 位置正确数字正确;");
                else
                {
                    if(b1 ==a || b1==c)
                        printf("数字2位置不正确数字正确;");
                }
                if(c1==c)
                    printf("数字 3 位置正确数字正确。");
                else
                {
                    if(c1==a ||c1==b)
                        printf("数字 3 位置不正确数字正确。");
                }
                times--;
                //printf("请重新输入:");
            }
        }
        if(times==0)
            printf("8次没猜对,游戏结束");
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月5日
  • 已采纳回答 12月28日
  • 修改了问题 12月28日
  • 创建了问题 12月28日

悬赏问题

  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法