西工大noj(11~20)

前言:西工大noj刷题记录

           代码在CodeBlocks16.01环境下编译通过

11题:

/*
 *题目:用二分法求方程在(-10,10)之间的根(保留2位小数)
 */
#include <iostream>
#include <stdio.h>

using namespace std;

int noj_011()
{
    double x, left = -10, right = 10;
    x = (left + right) / 2;
    while ((2*x*x*x-4*x*x+3*x-6) <= -0.01 || (2*x*x*x-4*x*x+3*x-6) >= 0.01)
    {
        if ((2*x*x*x-4*x*x+3*x-6) <= -0.01)
        {
            left = x;
            x = (left + right) / 2;
        }
        else
        {
            right = x;
            x = (left + right) / 2;
        }
    }
    printf("%5.2f", x);

    return 0;
}

12题: 

/*
 *题目:计算500~800区间内素数的个数cnt,并按所求素数的值从大到小的顺序,再计算其间隔减,加之和,取第一个素数-第二个素数+第三个素数……的值sum
 */
#include <iostream>

using namespace std;

int noj_012()
{
    int cnt = 0, sum = 0, flag = 0;
    for (int num = 800; num >= 500; --num, flag = 0)
    {
        for (int subnum = 2; subnum * subnum <= num; ++subnum)
        {
            if (num % subnum == 0)
            {
                flag = 1;
                break;
            }
        }
        if (!flag)
        {
            ++cnt;
            if (cnt % 2 == 1)
            {
                sum += num;
            }
            else
            {
                sum -= num;
            }
        }
    }

    cout << cnt << " " << sum << endl;

    return 0;
}

13题:

/*
 *题目:利用公式pi=4*(1-1/3+1/5-1/7+1/9……),括号中最后一项的绝对值小于10^(-6),计算pi的值(保留6位小数)
 */
#include <iostream>
#include <stdio.h>

using namespace std;

int noj_013()
{
    double pi = 0, item = 1;
    int num = 1;
    while (1 / item >= 1e-6)
    {
        if (num % 2 == 1)
        {
            pi += 1 / item;
        }
        else
        {
            pi -= 1 / item;
        }

        item += 2;
        num++;
    }
    pi = pi * 4;

    printf("%5.6f", pi);

    return 0;
}

14题:

/*
 *题目:某级数的前两项A1=1,A2=1,此后有An=A(n-2)+2A(n-1),求依次对于M=100,1000和10000求出对应的n值,
 *      使其满足:Sn<M且S(n+1)>=M,Sn=A1+A2+……+An
 */
#include <iostream>

using namespace std;

int noj_014()
{
    for (int M = 100; M <= 10000; M *= 10)
    {
        int sum1 = 0, sum2 = 0, A_first = 1, A_second = 1, temp, num = 0;
        while (!(sum1 < M && sum2 >= M))
        {
            sum1 += A_first;
            sum2 = sum1 + A_second;
            temp = A_first;
            A_first = A_second;
            A_second = 2 * A_second + temp;
            num++;
        }
        cout << num << endl;
    }

    return 0;
}

15题:

/*
 *题目:求一个整数的任意次方的最后三位数
 */
#include <iostream>

using namespace std;

int noj_015()
{
    int num, power;
    long long prdct = 1;
    cout << "请输入整数:";
    cin >> num;
    cout << "请输入幂次:";
    cin >> power;
    for (int i = 1; i <= power; ++i)
    {
        prdct *= num;
    }
    prdct = prdct % 1000;
    cout << prdct;

    return 0;
}

16题:

/*
 *题目:任何一个自然数n的立方都是n个连续的奇数之和,例如1^3=1,2^3=3+5;3^3=7+9+11,求出输入的自然数对应的连续奇数
 */

 #include <iostream>

 using namespace std;

 int noj_016()
 {
     int naturalnum, sum = 0, first = 1, temp = 1;
     cout << "输入自然数:";
     cin >> naturalnum;
     while (naturalnum * naturalnum * naturalnum > sum)
     {
         sum = 0;
         if (naturalnum != 1)
         {
             first = temp + 2;
         }
         temp = first;
         for (int i = 1; i <= naturalnum; ++i)
         {
            sum += first;
            first += 2;
         }
     }

     cout << naturalnum << "*" << naturalnum << "*" << naturalnum << "=" << naturalnum * naturalnum * naturalnum << "=";
     for (int i = 1; i < naturalnum; ++i)
     {
         cout << temp << "+";
         temp += 2;
     }

     cout << temp;

     return 0;
 }

17题:

/*
 *题目:某大学两个乒乓球队比赛,各出3人,甲队为A,B,C,乙队为X,Y,Z,抽签后A说不和X打,C说不和X,Z打,编写程序找出对手名单
 */

 #include <iostream>

 using namespace std;

 int noj_017()
 {
     char A, B, C;
     for (A = 'X'; A <= 'Z'; ++A)
     {
         if (A != 'X')
         {
             for (C = 'X'; C <= 'Z'; ++C)
             {
                 if (C != 'X' && C != 'Z' && C != A)
                 {
                     for (B = 'X'; B <= 'Z'; ++B)
                     {
                         if (B != A && B != C)
                         {
                             cout << "A" << "=" << A << endl;
                             cout << "B" << "=" << B << endl;
                             cout << "C" << "=" << C << endl;
                         }
                     }
                 }
             }
         }
     }
     return 0;
 }

18题:

/*
 *题目:输入两个整数,求两个整数之间所有的素数,两个整数的大小顺序是任意的
 */
#include <iostream>
#include <math.h>

using namespace std;

int noj_018()
{
    int first_num, second_num, bgn, nd, flag = 0;
    cout << "请输入两个整数:";
    cin >> first_num >> second_num;
    bgn = (first_num >= second_num? second_num: first_num);
    nd = (first_num >= second_num? first_num: second_num);
    for (int i = bgn; i <= nd; ++i)
    {
        flag = 0;
        for (int j = 2; j <= sqrt(nd); ++j)
        {
            if (i % j == 0)
            {
                flag = 1;
                break;
            }
        }
        if (flag == 0)
        {
            cout << i << " ";
        }
    }

    return 0;
}

19题:

/*
 *题目:有一个分数数列:2/1,3/2,5/3,8/5,13/8,21/13,……求出这个数列的前20项之和(保留6位小数)
 */

#include <iostream>
#include <stdio.h>

using namespace std;

int noj_019()
{
    double denominator = 1, member = 2, temp;
    double sum = 0;
    for (int i = 1; i <= 20; ++i)
    {
        sum += member / denominator;
        temp = denominator;
        denominator = member;
        member = temp + denominator;
    }
    printf("%5.6f", sum);

    return 0;
}

20题:

/*
 *题目:输入一个数,输出其整数部分的位数
 */

#include <iostream>

using namespace std;

int noj_020()
{
    double num;
    int digit = 0;
    cout << "请输入数,正负都行:";
    cin >> num;
    if (num < 0)
    {
        num = 0 - num;
    }
    if (num < 1)
    {
        cout << "0";
        return 0;
    }
    while (num >= 1)
    {
        num /= 10;
        digit++;
    }

    cout << digit;

    return 0;
}

 

已标记关键词 清除标记
西北工业大学NOJC程序设计习题答案(非本人制作,侵删) 1.“1“的传奇 2.A+B 3.A+BⅡ 4.AB 5.ACKERMAN 6.Arithmetic Progressions 7.Bee 8.Checksum algorithm 9.Coin Test 10.Dexter need help 11.Double 12.Easy problem 13.Favorite number 14.Graveyard 15.Hailstone 16.Hanoi Ⅱ 17.Houseboat 18.Music Composer 19.Redistribute wealth 20.Road trip 21.Scoring 22.Specialized Numbers 23.Sticks 24.Sum of Consecutive 25.Symmetric Sort 26.The Clock 27.The Ratio of gainers to losers 28.VOL大学乒乓球比赛 29.毕业设计论文打印 30.边沿与内芯的差 31.不会吧,又是A+B 32.不屈的小蜗 33.操场训练 34.插入链表节点 35.插入排序 36.插入字符 37.成绩表计算 38.成绩转换 39.出租车费 40.除法 41.创建与遍历职工链表 42.大数乘法 43.大数除法 44.大数加法 45.单词频次 46.迭代求根 47.多项式的猜想 48.二分查找 49.二分求根 50.发工资的日子 51.方差 52.分离单词 53.分数拆分 54.分数化小数 55.分数加减法 56.复数 57.高低交换 58.公园喷水器 59.韩信点兵 60.行程编码压缩算法 61.合并字符串 62.猴子分桃 63.火车站 64.获取指定二进制位 65.积分计算 66.级数和 67.计算A+B 68.计算PI 69.计算π 70.计算成绩 71.计算完全数 72.检测位图长宽 73.检查图像文件格式 74.奖金发放 75.阶乘合计 76.解不等式 77.精确幂乘 78.恐怖水母 79.快速排序 80.粒子裂变 81.链表动态增长或缩短 82.链表节点删除 83.两个整数之间所有的素数 84.路痴 85.冒泡排序 86.你会存钱吗 87.逆序整数 88.排列 89.排列分析 90.平均值函数 91.奇特的分数数列 92.求建筑高度 93.区间内素数 94.三点顺序 95.山迪的麻烦 96.删除字符 97.是该年的第几天 98.是该年的第几天? 99.数据加密 100.搜索字符 101.所有素数 102.探索合数世纪 103.特殊要求的字符串 104.特殊整数 105.完全数 106.王的对抗 107.危险的组合 108.文件比较 109.文章统计 110.五猴分桃 111.小型数据库 112.幸运儿 113.幸运数字”7“ 114.选择排序 115.寻找规律 116.循环移位 117.延伸的卡片 118.羊羊聚会 119.一维数组”赋值“ 120.一维数组”加法“ 121.勇闯天涯 122.右上角 123.右下角 124.圆及圆球等的相关计算 125.圆及圆球等相关计算 126.程序员添加行号 127.找出数字 128.找幸运数 129.找最大数 130.整数位数 131.重组字符串 132.子序列的和 133.子字符串替换 134.自然数立方的乐趣 135.字符串比较 136.字符串复制 137.字符串加密编码 138.字符串逆序 139.字符串排序 140.字符串替换 141.字符串左中右 142.组合数 143.最次方数 144.最大乘积 145.最大整数 146.最小整数 147.最长回文子串 148.左上角 149.左下角
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页