C++自主测试题目

下面是题目

后面有代码

1.键盘输入3个整数a,b,c值,求一元二次方程a*X∧2+b*X+c=0(a≠0)的根,结果保留两位小树。

2.编写一个口令输入程序,让用户不停输入口令,直到输对为止,假设口令为100。

3.若一个数恰好等于除它本身外的所有因子之和,则这个数成为完数,例:6点因数是1,2,3。且6=1+2+3所以6是完数,求100以内的所有完数,并输出。

4.编程从键盘输入10个数,求它们的方差。

5.编程将递增数列10,20,30,40,50,60,70,80,90,100保存到数组中,再从键盘输入一个整数,将它插入该数列中,使之扔为一个递增数列。

6.键盘输入一个M*N的二位数组,求该数组各行的平均值,将结果放到一个数组中,并输出。

7.编写函数判断一个整数是否为回文数。主函数中调用该函数,输出1000到9000之间的所有回文数,,每行输出十个数字。回文是指正读和倒读都一样的数字。如98789。

8.编写函数power()用来求n∧k的值。在主函数中输入两个正整数n和k,调用函数power,求1∧k+2∧k+…+n∧k的值并输出结果。

9.编程求C(n,m)=m!/n!*(m-n)!,要求在主函数中输入自然数m,n的值并输入结果。若输入错误(即输入的不是自然数),提示错误信息。

10.编写函数输入月份,输出该月的英文名,要求用指针数组实现。

(附加题)11.     加密程序:由键盘输入明文,通过加密程序转换成密文并输出到屏幕上。 算法:明文中的字母转换成其后的第4个字母,例如,A变成E(a变成e),Z变成D,非字母字符不变;同时将密文每两个字符之间插入一个空格。例如,China转换成密文为G l m r e。要求:在函数change中完成字母转换,在函数insert中完成增加空格,用指针传递参数。

附加题别问了 我也忘了怎么写的了

欢迎小姐姐加QQ

2473183730

#include <iostream>
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
using namespace std;

/******************************C语言测试*******************************************************/
void test001()
{
    int a, b, c;
    double decide, x1, x2, m, n;
    cout << "Please key in a,b,c";
    cin >> a >> b >> c;

    decide = (double)b * (double)b - 4 * (double)a * (double) c;
    if (decide < 0)
    {
        printf("The number is roung \n");
    }
    else
    {
        m = -b / (2 * a);
        n = sqrt(decide) / (2 *(double) a);
        x1 = m + n;
        x2 = m - n;
        system("color 02");
        printf("The answer is:\nx1=%.2f\nx2=%.2f\n", x1, x2);
    }
}

void test002()
{
    int b;
    cout << "Please key in the answer\n";
    while (1)
    {
        cin >> b;
        if (b == 100)
        {
            break;
        }
        else
        {
            system("color 02");
            cout << " 输入错误,再来一次\n";
        }
    }
    system("color 02");
    cout << "我的妈呀 你终于输入正确了";
}

void test003()
{
    int i, j, sum = 0;

    for (i = 2; i <= 100; i++)
    {
        for (j = 1; j < i; j++)
        {
            if (i % j == 0)
            {
                sum = sum + j;
            }
        }
        if (sum == i)
        {
            printf("%d \n", i);
        }

        sum = 0;
    }
}

void test004()
{
    int a[11], i, m,sum,average,ans,answer;
    sum = 0;
    ans = 0;
    for (i = 0; i < 10; i++)
    {
        cin >> a[i];
    }
    for (i = 0; i < 10; i++)
    {
        sum= sum+ a[i];
    }
    average = sum / 10;
    cout << sum <<endl<< average<<endl;
    for (i = 0; i < 10; i++)
    {
        ans = ans + pow((a[i] - average), 2);
    }
      answer = ans / 10;
    cout << answer;
}

void test005()
{
    int m, n, v,i,c;
    int a[15] = { 10,20,30,40,50,60,70,80,90,100 };
    int j[15] = { 10,20,30,40,50,60,70,80,90,100 };
    cin >> v;
    for (i = 0; i < 10; i++)
    {
        if (v > a[i] && v < a[i+1])
        {
           m = i + 1;
           break;
        }
     }

    n = m;
    for (n; n<14; n++)
    {
        a[n+1] = j[n];
    }
    a[m] = v;
    for (c = 0; c <=12; c++)
    {
        cout << a[c]<<endl;
    }
}

void test006()
{

}

void test007()
{
    int a, i = 0;
        for(a=1000;a<9001;a++)
        {
            if(a/1000%10==a/1%10 && a/100%10==a/10%10)
            {
                printf("%5d", a);
                i++;
                if(i==9)
                {
                    printf("\n");
                    i = 0;
                }
            }
        }
}

void test008(int n,int k)
{
    int m,sum=0;
    for (m = 1; m <= n; m++)
    {
        sum = sum + pow(m, k);
    }
    cout << sum;
}

 int jiecheng( int m)
{
    int Plus=1;
    for (int i = 1; i <= m;i++)
    {
        Plus= Plus*i;
    }
    return Plus;
}

void test009()
{
    double answer; int n, m;
    cout << "Please key in two number" << endl;
    cin >> n >> m;
    if (n == int(n) && m == int(m) && m > 0 && n > 0)
    {
        answer =(double) jiecheng(m) / (double)(jiecheng(n) * (double)jiecheng(m - n));
        cout << answer;
    }
    else
    {
        cout << "error";
    }
}

void test010()
{
    int i;
    const char* p[12] = { "January","February","March","April","May","June","July","August","September","October","November","December" };
    printf("please input your number of month:");
    cin >> i;
    printf("\n");
    //    i = i - 1;
//    printf("The month is:%s\n", *p+i);
    printf("The month is:%s\n", p[i-1]);
}

void test010_SECOND()
{
    int i;
     char p[12][30] = { "January","February","March","April","May","June","July","August","September","October","November","December" };
    printf("please input your number of month:");
    cin >> i;
    char* a;
    a = p[12];
    printf("\n");
    printf("The month is:%s\n", *(p+i - 1));
}

void test006()

{
    int a, b, c = 0, d;
    int column, row;
    int sum[100] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 };
    cout << "输入二维动态数组的行数和列数" << endl;
    cin >> row >> column;
    int n1, i;
    int** array;
    array = (int**)malloc(sizeof(int*) * row);
    for (int i = 0; i != row; i++)
    array[i] = (int*)malloc(sizeof(int) * column);
    int* average;
    n1 = row;
    average = (int*)malloc(n1 * sizeof(int));//动态一维数组
    cout << "输入二维数组"<<endl;
    for (int j = 0; j != row; j++)
    {
        for (int k = 0; k != column; k++)
        {
            cin >> array[j][k];
        }
    }

    for (int j = 0; j != row; j++)
    {
        for (int k = 0; k != column; k++)
        {
            cout << array[j][k];
        }
    }

    /*
    for (a = 0; a <= row; a++)
    {
        for (b = 0; b < column; b++)
        {
            sum[a] = sum[a] + array[a][b];
        }
        average[a] = sum[a] / row;
    }

    for (c = 0; c <= row; c++)
    {
        cout << average[c];
    }

    */

    //释放空间
    for (int i = 0; i != row; i++)
    {
        free(array[i]);
    }
    free(array);
    free(average);
}

int main()
{
    test001();
    test002();
    test003();
    test004();
    test005();
    test006();
    test007();
    int a, b;
    cin >> a >> b;
    test008(a,b);
    test009();
    test010();
    return 0;

}

原文地址:https://www.cnblogs.com/Loving-Q/p/11963770.html

时间: 2024-10-12 09:07:27

C++自主测试题目的相关文章

PAT 甲级测试题目 -- 1009 Product of Polynomials

题目链接 这题占个坑吧...我用了两种思路,一种将保存结果的数组初始化为 0,把乘积加上去,顺便记录下最后一个指数的值.用两次 2000 次 for 循环过滤掉 0 值以及输出答案,这个代码过了,但是后期测试的时候,有些测试用例会多出来空格,有些则格式不对..但是过了... 代码如下 #include<iostream> #include<stdio.h> using namespace std; int main() { double A[1001], B[1001]; int

5月3日济南清北学堂随堂测试题目

消失的数字(number) Time Limit:1000ms   Memory Limit:128MB 题目描述 rsy拥有n个数,这n个数分别是a1,a2,-,an. 后来出现了一个熊孩子zhw,用橡皮擦去了其中若干个数字,并且打乱了剩下的数字.rsy赶到现场后只剩下了m个数字b1,b2,-,bm,她想知道哪些数字被擦去了. 现在你需要告诉rsy被擦去的n-m个数是什么. 输入格式(number.in) 第一行一个数n,第二行n个数ai,表示一开始的数字. 第三行一个数m,第四行m个数bi,

华为应聘测试题目——找零钱(递归解决)

找零钱 描述: 我们知道人民币有1.2.5.10.20.50.100这几种面值.现在给你n(1≤n≤250)元,让你计算换 成用上面这些面额表示且总数不超过100张,共有几种.比如4元,能用4张1元.2张1元和1张2元.2张2元, 三种表示方法. 题目类别: 循环 难度: 初级 分数:   运行时间限制: 10 Sec 内存限制: 128 MByte 阶段: 招聘管理 输入: 输入有多组,每组一行,为一个整合n.输入以0结束. 输出: 输出该面额有几种表示方法. 样例输入: 1 4 0 样例输出

华为OJ测试题目——删除重复字符

题目标题: 删除重复字符 给定一个字符串,将字符串中所有和前面重复多余的字符删除,其余字符保留,输出处理后的字符串.需要保证字符出现的先后顺序,并且区分大小写. 详细描述: 接口说明 原型: int GetResult(const char *input, char *output) 输入参数: input     输入的字符串 输出参数(需考虑指针指向的内存区域是否有效): output    输出的字符串 返回值: 0         成功 -1        失败及异常 举例: 输入: a

PAT 甲级测试题目 -- 1010 Radix

题目链接 题目描述 给你两个数以及其中一个数的基数(进制数),找出另一个数的基数,找不到就输出 Impassible 分析 思路不是很难,基本可以用进制转换加循环判断做,但是有坑... 坑1:上界不是36....上界是确定的那个数的十进制加 1 . 坑2:暴力循环会导致时间超限,用二分法解决 坑3:二分过程中会有数据溢出,得到的负数处理方式和找到较大数处理方式一样,因为溢出的数和题目条件不符,所以可以舍弃. 实现 #include<iostream> #include<string.h&

PAT 甲级测试题目 -- 1012 The Best Rank

题目链接 题目描述 输入小于等于 2000 的数据 N,M,分别表示 学生的总数 和 查询学生的数量 输入 N 个学生的六位数 id 以及 C,M,E 三科成绩.输入 M 个查询学生的 id. 要求输出: 若被查询的 id 不存在,输出 N/A 若被查询的 id 存在,输出 C,M,E,A(average 平均分) 四个成绩中排名最高的排名,以及对应的分数类型(C, M, E, A).若有多余一个类型的分数相同,则按照 A > C > M > E 的优先序列输出 排名 和 分数类型 分析

PAT 甲级测试题目 -- 1013 Battle Over Cities

题目链接 题目描述 ??给你城市的数量 N(N<1000),城市中地铁的数量 M 以及 被可能占领的城市数量 K(每一次只占领一个城市,并且每次占领的城市不一样),接下来的 M 行根据地铁的数量给出每个地铁连接的两个城市编号.最后一行给你被占领的城市序列.城市编号为 1 到 N,请你求出若某个城市被占领了,连通剩下城市所需要修建的地铁个数. 分析 ??该题考察图的存储以及遍历.本题的难点在于把 "需要维修多少个地铁" 这个问题转换成 "需要多少次 dfs 才能遍历完整个

pat 甲级测试题目 -- 1016 Phone Bills

题目链接 题目描述 要求计算银行账单. 输入 第一行给你一天24小时(00:00~01:00 ...)每个小时每分钟的话费,单位是美分 第二行给你顾客列表(N 个) 接下来的 N 行是顾客的账单详情 CYLL 01:01:06:01 on-line 姓名 月:日:小时:分钟 状态 CYLL 01:28:16:05 off-line 姓名 月:日:小时:分钟 状态 on-line 和 off-line 必须一一对应该记录才有效 输出 对于输入有效的顾客,给出该顾客这个月的账单,格式如下 CYJJ

测试题目:两个有序数组,找出最大的五个数字组成一个新的数组

注意点: 1.输入两行的方法 2.两行输入的数量和小于5的情况 1 //评测题目: 两个有序数组,找出最大的五个数字组成一个新的数组 2 #include <iostream> 3 #include <vector> 4 #include <cstring> 5 #include <bits/stdc++.h> 6 using namespace std; 7 8 vector<int> getTop5(vector<int>&