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 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵