ZZNUOJ(C/C++)基础练习1031——1040(详解版)

目录

1031 : 判断点在第几象限

C语言版

C++版 

1032 : 员工薪水

​编辑

C语言版 

C++版

1033 : 五级制成绩

​编辑

C语言版

C++版

1034 : 夏季促销

​编辑

C语言版

C++版 

 1035 : 分段函数求值

​编辑

C语言版

C++版 

1036 : 某年某月有多少天

​编辑

C

C++

1037 : 四则运算

C

C++

1038 : 绝对值最大

C

C++

1039 : n个数求和

C

C++ 

1040 : 数列求和1

C

C++

收藏加关注,观看不迷路 


 

1031 : 判断点在第几象限

题目描述

从键盘输入2个整数x、y值,表示平面上一个坐标点,判断该坐标点处于第几象限,并输出相应的结果。

 

输入

输入x,y值表示一个坐标点。坐标点不会处于x轴和y轴上,也不会在原点。

输出

输出对应的象限,用数字1,2,3,4分别对应四个象限。

样例输入

1 1

样例输出

1

C语言版

#include<stdio.h> // 包含标准输入输出库

int main() // 主函数
{
    int x, y; // 定义两个整型变量x和y,用于存储用户输入的坐标值
    scanf("%d%d", &x, &y); // 从用户输入中读取两个整数,分别存储到变量x和y中

    // 判断点(x, y)所在的象限
    if (x > 0 && y > 0) // 如果x和y都大于0
    {
        printf("1\n"); // 输出1,表示点在第一象限
    }
    else if (x < 0 && y > 0) // 如果x小于0且y大于0
    {
        printf("2\n"); // 输出2,表示点在第二象限
    }
    else if (x < 0 && y < 0) // 如果x和y都小于0
    {
        printf("3\n"); // 输出3,表示点在第三象限
    }
    else // 如果上述条件都不满足,即x大于0且y小于0
    {
        printf("4\n"); // 输出4,表示点在第四象限
    }

    return 0; // 程序正常结束
}

C++版 

#include<iostream> // 包含标准输入输出流库
using namespace std; // 使用标准命名空间std

int main() // 主函数
{
    int x, y; // 定义两个整型变量x和y,用于存储用户输入的坐标值
    cin >> x >> y; // 从标准输入读取两个整数,分别存储到变量x和y中

    // 判断点(x, y)所在的象限
    if (x > 0 && y > 0) // 如果x和y都大于0
    {
        cout << "1" << endl; // 输出1,表示点在第一象限
    }
    else if (x < 0 && y > 0) // 如果x小于0且y大于0
    {
        cout << "2" << endl; // 输出2,表示点在第二象限
    }
    else if (x < 0 && y < 0) // 如果x和y都小于0
    {
        cout << "3" << endl; // 输出3,表示点在第三象限
    }
    else // 如果上述条件都不满足,即x大于0且y小于0
    {
        cout << "4" << endl; // 输出4,表示点在第四象限
    }

    return 0; // 程序正常结束
}

1032 : 员工薪水

题目描述

某公司规定,销售人员工资由基本工资和销售提成两部分组成,其中基本工资是1500元/月,销售提成规则如下:

销售额小于等于10000元时,按照5%提成;

销售额大于10000元但小于等于50000元时,超出10000部分按照3%提成;

销售额大于50000元时,超出50000部分按照2%提成。

编写程序,根据销售额计算员工收入。

输入

输入一个整数,表示销售额。

输出

输出员工的薪水,保留2位小数。

样例输入

30000

样例输出

2600.00  

注意员工薪水要用浮点型变量(double)

C语言版 

#include<stdio.h> // 包含标准输入输出库
#define base 1500 // 定义基本工资为1500

int main() // 主函数
{
    int sail; // 定义一个整型变量sail,用于存储用户输入的销售额
    scanf("%d", &sail); // 从用户输入中读取销售额,存储到变量sail中

    double income; // 定义一个双精度浮点型变量income,用于存储计算后的收入

    // 根据销售额计算收入
    if (sail <= 10000) // 如果销售额小于或等于10000
    {
        income = base + sail * 0.05; // 收入 = 基本工资 + 销售额的5%
    }
    else if (sail <= 50000) // 如果销售额大于10000但小于或等于50000
    {
        income = base + 500 + (sail - 10000) * 0.03; // 收入 = 基本工资 + 10000的5% + 超过10000部分的3%
    }
    else // 如果销售额大于50000
    {
        income = base + 500 + 1200 + (sail - 50000) * 0.02; // 收入 = 基本工资 + 10000的5% + 40000的3% + 超过50000部分的2%
    }

    printf("%.2f", income); // 输出收入,保留两位小数
    return 0; // 程序正常结束
}

C++版

#include<iostream> // 包含标准输入输出流库
#include<iomanip> // 包含输入输出流格式化库
using namespace std; // 使用标准命名空间std

#define av(y) setprecision(y) << fixed // 定义一个宏av,用于设置输出的小数精度
#define base 1500 // 定义基本工资为1500

int main() // 主函数
{
    int sail; // 定义一个整型变量sail,用于存储用户输入的销售额
    cin >> sail; // 从标准输入读取销售额,存储到变量sail中

    double income; // 定义一个双精度浮点型变量income,用于存储计算后的收入

    // 根据销售额计算收入
    if (sail <= 10000) // 如果销售额小于或等于10000
    {
        income = base + sail * 0.05; // 收入 = 基本工资 + 销售额的5%
    }
    else if (sail <= 50000) // 如果销售额大于10000但小于或等于50000
    {
        income = base + 500 + (sail - 10000) * 0.03; // 收入 = 基本工资 + 10000的5% + 超过10000部分的3%
    }
    else // 如果销售额大于50000
    {
        income = base + 500 + 1200 + (sail - 50000) * 0.02; // 收入 = 基本工资 + 10000的5% + 40000的3% + 超过50000部分的2%
    }

    cout << av(2) << income << endl; // 使用宏av设置小数精度为2位,并输出收入
    return 0; // 程序正常结束
}

1033 : 五级制成绩

题目描述

给定一个百分制成绩,请根据百分制成绩输出其对应的等级。转换关系如下:
90分以上为’A’,80~89为’B’, 70~79为’C’, 60~69为’D’,60分以下为’E’。

输入

一个百分制成绩(0~100的整数)。

输出

输出对应的等级。

样例输入

100

样例输出

A

C语言版

#include<stdio.h> // 包含标准输入输出库

int main() // 主函数
{
    int grade; // 定义一个整型变量grade,用于存储用户输入的分数
    scanf("%d", &grade); // 从用户输入中读取一个整数,存储到变量grade中

    // 根据分数评定成绩等级
    if (grade < 60) // 如果分数小于60
    {
        printf("E\n"); // 输出等级E
    }
    else if (grade < 70) // 如果分数在60到69之间
    {
        printf("D\n"); // 输出等级D
    }
    else if (grade < 80) // 如果分数在70到79之间
    {
        printf("C\n"); // 输出等级C
    }
    else if (grade < 90) // 如果分数在80到89之间
    {
        printf("B\n"); // 输出等级B
    }
    else // 如果分数大于或等于90
    {
        printf("A\n"); // 输出等级A
    }

    return 0; // 程序正常结束
}

C++版

#include<iostream> // 包含标准输入输出流库
using namespace std; // 使用标准命名空间std

int main() // 主函数
{
    int grade; // 定义一个整型变量grade,用于存储用户输入的分数
    cin >> grade; // 从标准输入读取一个整数,存储到变量grade中

    // 根据分数评定成绩等级
    if (grade < 60) // 如果分数小于60
    {
        cout << "E" << endl; // 输出等级E
    }
    else if (grade < 70) // 如果分数在60到69之间
    {
        cout << "D" << endl; // 输出等级D
    }
    else if (grade < 80) // 如果分数在70到79之间
    {
        cout << "C" << endl; // 输出等级C
    }
    else if (grade < 90) // 如果分数在80到89之间
    {
        cout << "B" << endl; // 输出等级B
    }
    else // 如果分数大于或等于90
    {
        cout << "A" << endl; // 输出等级A
    }

    return 0; // 程序正常结束
}

1034 : 夏季促销

题目描述

商场夏季促销,购物500元以下,不打折;购物500元(含)以上,95折;购物1000元(含)以上,9折;购物3000元(含)以上,85折;购物5000元(含)以上,8折。根据消费金额,确定用户实际需要支付的数目。

输入

输入一个实数,表示消费金额。

输出

输出一个实数,表示用户实际需要支出的数目,保留两位小数。

样例输入

5100

样例输出

4080.00

输入和数出为实数,要用浮点型变量(double)

C语言版

#include<stdio.h> // 包含标准输入输出库

int main() // 主函数
{
    double spending, pay; // 定义两个双精度浮点型变量,分别用于存储消费金额和实际支付金额
    scanf("%lf", &spending); // 从用户输入中读取消费金额,存储到变量spending中

    // 根据消费金额计算实际支付金额
    if (spending < 500) // 如果消费金额小于500
    {
        pay = spending; // 不打折,实际支付金额等于消费金额
    }
    else if (spending < 1000) // 如果消费金额在500到999之间
    {
        pay = spending * 0.95; // 打9.5折
    }
    else if (spending < 3000) // 如果消费金额在1000到2999之间
    {
        pay = spending * 0.9; // 打9折
    }
    else if (spending < 5000) // 如果消费金额在3000到4999之间
    {
        pay = spending * 0.85; // 打8.5折
    }
    else // 如果消费金额大于或等于5000
    {
        pay = spending * 0.8; // 打8折
    }

    printf("%.2f", pay); // 输出实际支付金额,保留两位小数
    return 0; // 程序正常结束
}

C++版 

#include<iostream> // 包含标准输入输出流库
#include<iomanip> // 包含输入输出流格式化库
using namespace std; // 使用标准命名空间std

#define av(y) setprecision(y) << fixed // 定义一个宏av,用于设置输出的小数精度

int main() // 主函数
{
    double spending, pay; // 定义两个双精度浮点型变量,分别用于存储消费金额和实际支付金额
    cin >> spending; // 从标准输入读取消费金额,存储到变量spending中

    // 根据消费金额计算实际支付金额
    if (spending < 500) // 如果消费金额小于500
    {
        pay = spending; // 不打折,实际支付金额等于消费金额
    }
    else if (spending < 1000) // 如果消费金额在500到999之间
    {
        pay = spending * 0.95; // 打9.5折
    }
    else if (spending < 3000) // 如果消费金额在1000到2999之间
    {
        pay = spending * 0.9; // 打9折
    }
    else if (spending < 5000) // 如果消费金额在3000到4999之间
    {
        pay = spending * 0.85; // 打8.5折
    }
    else // 如果消费金额大于或等于5000
    {
        pay = spending * 0.8; // 打8折
    }

    cout << av(2) << pay << endl; // 使用宏av设置小数精度为2位,并输出实际支付金额
    return 0; // 程序正常结束
}

 1035 : 分段函数求值

题目描述

已知:y是x的函数,
当x<-2时,y=7-2x;
当x>=-2,且x<3时,y=5-|3x+2|;
当x>=3时,y=3x+4

输入

输入一个整数x。

输出

输出为一个整数,即x对应的函数值。

样例输入

-4

样例输出

15

C语言版

#include<stdio.h> // 包含标准输入输出库
#include<math.h> // 包含数学库,用于计算绝对值

int main() // 主函数
{
    int x, y; // 定义两个整型变量x和y,用于存储用户输入的值和计算结果
    scanf("%d", &x); // 从用户输入中读取一个整数,存储到变量x中

    // 根据x的取值范围计算y
    if (x < -2) // 如果x小于-2
    {
        y = 7 - 2 * x; // 使用公式 y = 7 - 2x
    }
    else if (x < 3) // 如果x在-2到2之间(包括-2,不包括3)
    {
        y = 5 - fabs(3 * x + 2); // 使用公式 y = 5 - |3x + 2|,其中fabs计算绝对值
    }
    else // 如果x大于或等于3
    {
        y = 3 * x + 4; // 使用公式 y = 3x + 4
    }

    printf("%d\n", y); // 输出计算得到的y值
    return 0; // 程序正常结束
}

C++版 

#include<iostream> // 包含标准输入输出流库
#include<cmath> // 包含数学库,用于计算绝对值
using namespace std; // 使用标准命名空间std

int main() // 主函数
{
    int x, y; // 定义两个整型变量x和y,用于存储用户输入的值和计算结果
    cin >> x; // 从标准输入读取一个整数,存储到变量x中

    // 根据x的取值范围计算y
    if (x < -2) // 如果x小于-2
    {
        y = 7 - 2 * x; // 使用公式 y = 7 - 2x
    }
    else if (x < 3) // 如果x在-2到2之间(包括-2,不包括3)
    {
        y = 5 - fabs(3 * x + 2); // 使用公式 y = 5 - |3x + 2|,其中fabs计算绝对值
    }
    else // 如果x大于或等于3
    {
        y = 3 * x + 4; // 使用公式 y = 3x + 4
    }

    cout << y << endl; // 输出计算得到的y值
    return 0; // 程序正常结束
}

1036 : 某年某月有多少天

题目描述

给你一个年份和月份,求该月有多少天。

输入

一个年份(正整数),一个月份(1-12),中间有一个空格隔开 。

输出

该月的天数,单独占一行。

样例输入

2012 2

样例输出

C

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

int main()
{
    int year, arr[13], month; // 定义变量:年份、月份、数组存储每月天数
    scanf("%d%d", &year, &month); // 输入年份和月份

    int flag = 0; // 定义一个标志变量,用于判断是否为闰年

    // 判断是否为闰年
    if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
    {
        flag = 1; // 如果是闰年,flag 设置为 1
    }

    // 遍历月份,为每个月分配天数
    for (int i = 1; i <= 12; i++)
    {
        switch (i) // 根据月份分配天数
        {
            case 1: case 3: case 5: case 7: case 8: case 10: case 12: // 大月
                arr[i] = 31; // 大月有 31 天
                break;
            case 4: case 6: case 9: case 11: // 小月
                arr[i] = 30; // 小月有 30 天
                break;
            case 2: // 二月
                if (flag == 1) // 如果是闰年
                    arr[2] = 29; // 闰年的二月有 29 天
                else
                    arr[2] = 28; // 平年的二月有 28 天
        }
    }

    // 输出输入月份的天数
    printf("%d\n", arr[month]);
    return 0; // 程序结束
}

C++

#include<iostream>  // 引入输入输出流库

using namespace std; // 使用标准命名空间

int main()
{
    int year, arr[13], month; // 定义变量:年份、月份和一个数组用于存储每个月的天数
    scanf("%d%d", &year, &month); // 从标准输入读取年份和月份

    int flag = 0; // 定义一个标志变量,用于判断是否为闰年

    // 判断是否为闰年
    if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
    {
        flag = 1; // 如果是闰年,将标志变量设置为1
    }

    // 遍历1到12月,为每个月分配天数
    for (int i = 1; i <= 12; i++)
    {
        switch (i) // 根据月份分配天数
        {
            case 1: case 3: case 5: case 7: case 8: case 10: case 12: // 大月
                arr[i] = 31; // 大月有31天
                break;
            case 4: case 6: case 9: case 11: // 小月
                arr[i] = 30; // 小月有30天
                break;
            case 2: // 二月
                if (flag == 1) // 如果是闰年
                    arr[2] = 29; // 闰年的二月有29天
                else
                    arr[2] = 28; // 平年的二月有28天
        }
    }

    // 输出输入月份的天数
    printf("%d\n", arr[month]);
    return 0; // 程序正常结束
}

1037 : 四则运算

题目描述

给你一个简单的四则运算表达式,包含两个实数和一个运算符,实数与运算符用空格隔开,请编程计算出结果。

输入

表达式的格式为:s1 op s2, s1和s2是两个实数,op表示的是运算符(+,-,*,/),也可能是其他字符。

输出

如果运算符合法,输出表达式的值;若运算符不合法或进行除法运算时除数是0(浮点类型的数绝对值小于1e-6,默认为0),则输出"Wrong input!"。最后结果小数点后保留两位

Tips:

1e-6 表示 1×10⁻⁶,即 0.000001。

这是一种科学计数法的表示形式。

样例输入

1.0 + 1.0

样例输出

2.00

C

#include <stdio.h> // 引入标准输入输出库
#include <math.h>  // 引入数学库,用于调用fabs函数
typedef long long i64; // 定义一个长整型的别名,但在此代码中并未使用

int main()
{
    double s1, s2; // 定义两个操作数,类型为双精度浮点数
    char op;       // 定义一个字符变量,用于存储运算符

    // 从标准输入读取两个操作数和一个运算符
    // %lf 用于读取双精度浮点数,%c 用于读取字符
    scanf("%lf %c %lf", &s1, &op, &s2);

    // 使用switch语句根据运算符进行相应的运算
    switch (op)
    {
        case '+': // 如果运算符是加号
            printf("%.2f\n", s1 + s2); // 输出两个数的和,保留两位小数
            break;
        case '-': // 如果运算符是减号
            printf("%.2f\n", s1 - s2); // 输出两个数的差,保留两位小数
            break;
        case '*': // 如果运算符是乘号
            printf("%.2f\n", s1 * s2); // 输出两个数的乘积,保留两位小数
            break;
        case '/': // 如果运算符是除号
            if (fabs(s2) < 1e-6) // 检查除数是否接近0(考虑浮点数精度问题)
                printf("Wrong input!\n"); // 如果除数接近0,输出错误信息
            else
                printf("%.2f\n", s1 / s2); // 输出两个数的商,保留两位小数
            break;
        default: // 如果输入的运算符不是上述四种情况之一
            printf("Wrong input!\n"); // 输出错误信息
            break;
    }
    return 0; // 程序正常结束,返回0
}

C++

#include <iostream>
#include <algorithm>
#include <cmath> // 用于调用fabs函数
using namespace std;

int main()
{
    double s1, s2; // 定义两个操作数
    char op;       // 定义运算符

    // 从标准输入读取两个操作数和一个运算符
    scanf("%lf %c %lf", &s1, &op, &s2);

    // 根据运算符进行相应的运算
    switch (op)
    {
        case '+': // 加法
            printf("%.2f\n", s1 + s2); // 输出结果,保留两位小数
            break;
        case '-': // 减法
            printf("%.2f\n", s1 - s2); // 输出结果,保留两位小数
            break;
        case '*': // 乘法
            printf("%.2f\n", s1 * s2); // 输出结果,保留两位小数
            break;
        case '/': // 除法
            if (fabs(s2) < 1e-6) // 检查除数是否为0(考虑浮点数精度问题)
                printf("Wrong input!\n"); // 如果除数为0,输出错误信息
            else
                printf("%.2f\n", s1 / s2); // 输出结果,保留两位小数
            break;
        default: // 其他非法运算符
            printf("Wrong input!\n"); // 输出错误信息
            break;
    }
    return 0; // 程序正常结束
}

1038 : 绝对值最大

题目描述

输入3个整数,输出绝对值最大的那个数。

输入

输入包含3个int范围内的整数,用空格隔开。

输出

输出三个数中绝对值最大的数,单独占一行。若绝对值最大的数不唯一,则输出最先出现的那个。例如,若输入为1 -3 3,则输出为-3;若输入为1 3 -3则输出为3。

样例输入

1 2 -3

样例输出

-3

C

#include <stdio.h>
#include <stdlib.h> // 引入标准库,用于调用abs函数
#include<math.h>

int main()
{
    int a, b, c, max; // 定义三个整数变量和一个用于存储最大值的变量
    scanf("%d%d%d", &a, &b, &c); // 从标准输入读取三个整数

    // 使用三元运算符简化逻辑
    max = abs(a) >= abs(b) ? a : b; // 先比较a和b的绝对值,选择绝对值较大的数
    max = abs(max) < abs(c) ? c : max; // 再将结果与c的绝对值比较,最终确定绝对值最大的数

    printf("%d\n", max); // 输出绝对值最大的数
    return 0; // 程序正常结束
}

C++

#include <iostream> // 引入输入输出流库
#include <cmath> // 引入数学库,用于调用abs函数

using namespace std;

int main()
{
    int a, b, c, max; // 定义三个整数变量和一个用于存储最大值的变量
    scanf("%d%d%d", &a, &b, &c); // 使用scanf从标准输入读取三个整数

    // 先比较a和b的绝对值,选择绝对值较大的数
    // 如果a的绝对值大于或等于b的绝对值,选择a;否则选择b
    max = abs(a) >= abs(b) ? a : b;

    // 再将max与c的绝对值比较,最终确定绝对值最大的数
    // 如果c的绝对值大于max的绝对值,更新max为c;否则保持max不变
    max = abs(max) < abs(c) ? c : max;

    // 输出绝对值最大的数
    printf("%d\n", max); // 使用printf输出结果

    return 0; // 程序正常结束
}

1039 : n个数求和

题目描述

输入一个整数n和n个整数,输出这n个整数的和。

输入

 输入有两行:第一行是一个正整数n,第二行是n个整数 

输出

输出一个整数,即n个数的和。输出单独占一行。

样例输入

3
7 3 2

样例输出

12

C

#include <stdio.h>  // 引入标准输入输出库

int main()
{
    int n, mid, sum = 0; // 定义变量
    // n: 用于存储用户输入的整数个数
    // mid: 用于临时存储每次输入的整数
    // sum: 用于存储总和,初始化为0

    scanf("%d", &n); // 从标准输入读取一个整数n,表示接下来要输入的整数个数

    // 使用for循环读取n个整数
    for (int i = 0; i < n; i++) // 循环n次
    {
        scanf("%d", &mid); // 每次循环读取一个整数,存储到mid中
        sum += mid;        // 将mid的值加到sum中
    }

    printf("%d\n", sum); // 输出总和
    return 0; // 程序正常结束
}

C++ 

#include <iostream> // 引入输入输出流库
using namespace std;

int main()
{
    int n, mid, sum = 0; // 定义变量
    // n: 用于存储用户输入的整数个数
    // mid: 用于临时存储每次输入的整数
    // sum: 用于存储总和,初始化为0

    scanf("%d", &n); // 使用scanf从标准输入读取一个整数n,表示接下来要输入的整数个数

    // 使用for循环读取n个整数
    for (int i = 0; i < n; i++) // 循环n次
    {
        scanf("%d", &mid); // 每次循环读取一个整数,存储到mid中
        sum += mid;        // 将mid的值加到sum中
    }

    printf("%d\n", sum); // 使用printf输出总和
    return 0; // 程序正常结束
}

1040 : 数列求和1

题目描述

输入一个整数n,输出数列1+1/3+1/5+……前n项的和。

输入

输入只有一个正整数n。

输出

结果保留2位小数,单独占一行

样例输入

3

样例输出

1.53

注意:前n项和用double变量

C

#include <stdio.h> // 引入标准输入输出库

int main()
{
    int n; // 定义一个整数变量,用于存储用户输入的项数
    double sum = 0; // 定义一个双精度浮点数变量,用于存储数列的和,初始化为0

    scanf("%d", &n); // 从标准输入读取一个整数n,表示数列的项数

    // 使用for循环计算数列的和
    for (int i = 1; i <= n; i++) // 循环n次
    {
        sum += 1.0 / (2 * i - 1); // 计算每一项1/(2i-1)并累加到sum中
    }

    printf("%.2f\n", sum); // 输出数列的和,保留两位小数
    return 0; // 程序正常结束
}

C++

#include <iostream> // 引入输入输出流库

using namespace std;

int main()
{
    int n; // 定义一个整数变量,用于存储用户输入的项数
    double sum = 0; // 定义一个双精度浮点数变量,用于存储数列的和,初始化为0

    // 从标准输入读取一个整数n,表示数列的项数
    scanf("%d", &n);

    // 使用for循环计算数列的和
    for (int i = 1; i <= n; i++) // 循环n次,从1到n
    {
        // 计算每一项1/(2i-1)并累加到sum中
        // 2i-1生成奇数序列:1, 3, 5, ..., 2n-1
        sum += 1.0 / (2 * i - 1);
    }

    // 输出数列的和,保留两位小数
    printf("%.2f\n", sum);

    return 0; // 程序正常结束
}

收藏加关注,观看不迷路 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值