高级语言程序设计课程第五次个人作业

这个作业属于哪个课程:https://edu.cnblogs.com/campus/fzu/gjyycx

这个作业要求在哪里: https://edu.cnblogs.com/campus/fzu/gjyycx/homework/14581

学号:052301346

姓名:郑积超


作业内容

设计一个getchar和putchar联合使用的程序,使得程序遇到空格符时结束

image

建立一个in.txt和out.txt,分别使用这两个文件进行重定位代替键盘输入和屏幕输出in.txt存放一些字符小写字符,大写字符,数字字符,程序将这些小写字符转换成大写字符,然后全部输出到out.txt

image

in.txt
image

out.txt
image

从键盘上输入数据并进行加、减、乘、除四则运算(以“a运算b”的形式输入),判断输入的数据是否可以进行计算,若能计算,则输出计算结果,保留小数点后2位,否则显示“wrong input”。另外,碰到除数为0是能提示“division by zero”

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main() {
    char input[100];
    double a, b, result;
    char op;
    int valid_input = 1;
    printf("请输入四则运算表达式(格式:a运算b,例如:3+5):\n");
    if (fgets(input, sizeof(input), stdin) == NULL) {
        printf("wrong input\n");
        return 1;
    }
    if (sscanf_s(input, "%lf %c %lf", &a, &op, 1, &b) != 3) {
        if (sscanf_s(input, "%lf%c%lf", &a, &op, 1, &b) != 3) {
            valid_input = 0;
        }
    }
    if (valid_input) {
        switch (op) {
        case '+':
            result = a + b;
            printf("%.2lf %c %.2lf = %.2lf\n", a, op, b, result);
            break;
        case '-':
            result = a - b;
            printf("%.2lf %c %.2lf = %.2lf\n", a, op, b, result);
            break;
        case '*':
            result = a * b;
            printf("%.2lf %c %.2lf = %.2lf\n", a, op, b, result);
            break;
        case '/':
            if (b == 0) {
                printf("division by zero\n");
            }
            else {
                result = a / b;
                printf("%.2lf %c %.2lf = %.2lf\n", a, op, b, result);
            }
            break;
        default:
            printf("wrong input\n");
            break;
        }
    }
    else {
        printf("wrong input\n");
    }
    return 0;
}

除以0错误
image

image

混合读入字符、数值,形式参考第八章PPT19页。

问题描述:
先读入一个字符,再读入一个整数,最后又读入一个字符;然后分别输出它们
输入格式:n个空格和/或<回车>,一个字符,m个空格和/或<回车>,一个整数,k个空格和/或<回车>,一个字符
输出格式:字符整数字符

image

编写并运行书本第8章8.11编程练习题目中的第3~7题

3.

image

4.

image

5.

image

6.

image

7.

#include <stdio.h>
#define RATE_1 8.75
#define RATE_2 9.33
#define RATE_3 10.00
#define RATE_4 11.20
#define TAX_RATE_1 0.15
#define TAX_RATE_2 0.20
#define TAX_RATE_3 0.25
#define TAX_BREAK_1 300.0
#define TAX_BREAK_2 450.0
#define OVERTIME_HOURS 40
#define OVERTIME_RATE 1.5
void menu(){
    printf("****************************************\n");
    printf("请选择对应的工资等级或操作:\n");
    printf("a) $%.2f/小时\tb) $%.2f/小时\n", RATE_1, RATE_2);
    printf("c) $%.2f/小时\td) $%.2f/小时\n", RATE_3, RATE_4);
    printf("q) 退出\n");
    printf("****************************************\n");
    printf("请选择(a-d or q): ");
}
double calculate_wage(double hours, double rate){
    if (hours > OVERTIME_HOURS){
        return OVERTIME_HOURS * rate + (hours - OVERTIME_HOURS) * rate * OVERTIME_RATE;
    }
    else{
        return hours * rate;
    }
}
double calculate_taxes(double gross){
    double taxes = 0.0;

    if (gross <= TAX_BREAK_1) {
        taxes = gross * TAX_RATE_1;
    }
    else if (gross <= TAX_BREAK_2) {

        taxes = TAX_BREAK_1 * TAX_RATE_1 + (gross - TAX_BREAK_1) * TAX_RATE_2;
    }
    else {
        taxes = TAX_BREAK_1 * TAX_RATE_1 + (TAX_BREAK_2 - TAX_BREAK_1) * TAX_RATE_2 + (gross - TAX_BREAK_2) * TAX_RATE_3;
    }
    return taxes;
}
int main(){
    char choice;
    double hours;
    double rate;
    double wage, taxes, income;
    while (1){
        menu();
        scanf_s("%c", &choice);
        switch (choice){
        case 'a':
            rate = RATE_1;
            break;
        case 'b':
            rate = RATE_2;
            break;
        case 'c':
            rate = RATE_3;
            break;
        case 'd':
            rate = RATE_4;
            break;
        case 'q':
            printf("程序结束。\n");
            return 0;
        default:
            printf("请输入a-d之间或q的有效选项。\n");
            continue;
        }
        printf("请输入工作小时数: ");
        if (scanf_s("%lf", &hours) != 1 || hours < 0) {
            printf("无效的工作小时数。\n");
            while (getchar() != '\n')
                continue;
            continue;
        }
        wage = calculate_wage(hours, rate);
        taxes = calculate_taxes(wage);
        income = wage - taxes;
        printf("\n工资总额: $%.2f\n", wage);
        printf("税金: $%.2f\n", taxes);
        printf("净收入: $%.2f\n\n", income);
    }
    return 0;
}

image

编写并运行书本第9章9.11编程练习题目中的第1~4,8,9,11题

1.

image

2.

image

3.

image

4.

image

8.

image

9.

image

11.

image

设计一个多源代码文件程序的编译。例如,first.c源代码文件包含主函数和一些头文件(second.h),second.c源代码文件是一些自定义的函数功能实现,second.h文件是一些常量声明和second.c中自定义函数的函数原型声明

first.c
image

second.h
image

second.c
image

编写一个程序,在该程序中输出主函数内定义的变量的地址,以及函数中定义的同名变量的地址

image

总结和思考

熟练掌握格式化输入输出,初步了解指针概念

posted @ 2025-11-17 17:32  052301346郑积超  阅读(5)  评论(0)    收藏  举报