高级语言程序设计课程第五次个人作业
这个作业属于哪个课程:https://edu.cnblogs.com/campus/fzu/gjyycx
这个作业要求在哪里: https://edu.cnblogs.com/campus/fzu/gjyycx/homework/14581
学号:052301346
姓名:郑积超
作业内容
设计一个getchar和putchar联合使用的程序,使得程序遇到空格符时结束

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

in.txt

out.txt

从键盘上输入数据并进行加、减、乘、除四则运算(以“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错误


混合读入字符、数值,形式参考第八章PPT19页。
问题描述:
先读入一个字符,再读入一个整数,最后又读入一个字符;然后分别输出它们
输入格式:n个空格和/或<回车>,一个字符,m个空格和/或<回车>,一个整数,k个空格和/或<回车>,一个字符
输出格式:字符整数字符

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

4.

5.

6.

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;
}

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

2.

3.

4.

8.

9.

11.

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

second.h

second.c

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

总结和思考
熟练掌握格式化输入输出,初步了解指针概念

浙公网安备 33010602011771号