大作业“小小计算器”
实验1、“小小计算器”基本功能实现(1)
编写程序,在屏幕上输出以下内容:
**************************
* 小小计算器 *
**************************
实验2、“小小计算器”基本功能实现(2)
编程实现以下功能:
① 在屏幕上输出
***********************************
* 小小计算器 *
* 1 加法 *
* 2 减法 *
* 3 乘法 *
* 4 除法 *
* 5 取模运算 *
* 6 计算圆面积 *
***********************************
② 定义几个变量,并赋初值,分别进行加法、加法、乘法、除法、取模运算;
③ 定义常量PI等于3.14, 计算给定半径的圆面积,将计算结果分别赋值给一个double类型和int类型的变量,掌握C中的数据类型转换,并将各个计算结果在屏幕上输出。
(3)验收/测试用例
假设程序中定义变量并赋初始值如下:
int a=8, b=2, c=0, r=2;
double t;
程序运行后,在屏幕上输入如下:
a+b的结果是:10
a-b的结果是:6
a*b的结果是:16
a/b的结果是:4
圆面积整数结果是12
圆面积是12.560000
实验3、“小小计算器”基本功能实现(3)
在实验2的基础上,实现用scanf从键盘上输入数据,进行相应的运算,并将结果在屏幕上输出。要求实现加法、减法和取模运算时,输入数据类型为整数,并将运算结果的10进制、8进制和16进制形式输出;乘法、除法运算的输入数据均为float,计算结果分别以小数形式和指数形式输出;求圆面积输入的数据类型为double,正常输出结果,同时还要求在输出要求保留两位小数的结果。
在实验过程中,要求结合课本把scanf和printf的各种形式的格式控制都要练习到,从而掌握这两个函数的使用。
(3)验收/测试用例
- 加法
输入: 5, 15
输出: 加法结果的十进制形式是:20
加法结果的八进制形式是:24
加法结果的十六进制形式是:14
- 减法
输入: 5, 15
输出: 减法结果的十进制形式是:-10
减法结果的八进制形式是:3777777766
减法结果的十六进制形式是:fffffff6
- 取模
输入: 10, 7
输出: 取模结果的十进制形式是:3
取模结果的八进制形式是:3
取模结果的十六进制形式是:3
- 乘法
输入: 2000.5,6
输出: 乘法结果的小数形式是:12003.000000
乘法结果的指数形式是:1.200300e+004
- 求圆面积
输入: 2
输出: 该圆面积是12.560000
该圆面积保留两位小数的结果是12.56
实验4、小小计算器”基本功能实现(4)
编程实现以下功能:
① 在屏幕上输出
***********************************
* 小小计算器 *
* 1 加法 *
* 2 减法 *
* 3 乘法 *
* 4 除法 *
* 5 判断数字的位数 *
* 6 计算圆面积 *
***********************************
② 除法运算时,如果输入的第二个数(除数)为0,给出提示,显示计算结果。
③ 输入一个正整数,要求在三位以内(含三位),求出这个数是几位数,并输出每一位数字。
(3)验收/测试用例
- 除法
输入: 120,6
输出: 除法结果是:20.000000
输入: 120,0
输出: 除数为0,无法进行除法运算
- 判断数字的位数
输入: -120
输出: 要求输入的数为整数
输入: 1000
输出: 要求输入的数为3位以内的正整数
输入: 123
输出: 该数为3位数,百位是1,十位是2,个位是3
实验5、“小小计算器”基本功能实现(5)
编程实现:
① 在“小小计算器”基本功能实现(4) 的基础上,用switch多分支语句进行计算器操作选择,根据菜单提示,输入一个数字,进行对应的操作。
② 扩充计算器功能,添加判断输入的年是否是闰年
* 7 判断闰年 *
③ 扩充计算器功能,添加成绩转换功能
* 8 成绩转换 *
从键盘上输入一个百分制的成绩,输出对应的等级成绩。
100 — 90 ——> 优秀
80 — 89 ——> 良
70 — 79 ——> 中
60 — 69 ——> 及格
0 — 59 ——> 不及格
(3)验收/测试用例
- 判断闰年
输入:2000
输出:2000年是闰年
输入:2013
输出:2000年是平年
- 成绩转换
输入:-10或101
输出:成绩输入错误
输入:88
输出:良
实验6、“小小计算器”基本功能实现(6)
编程实现以下功能:
① 在屏幕上输出
***********************************
小小计算器
1 加法
2 减法
3 乘法
4 除法
5 判断数字的位数
6 计算圆面积
7 判断闰年
8 成绩转换
9 计算从1到输入数之间的奇数和 (for)
10 计算从1到输入数之间的偶数和 (while)
11 输出从1到输入数之间所有3的倍数 (do-while)
12 求即被3整除又被5整除的数
13 求水仙花数
14 退出
***********************************
② 利用循环语句,将实验5“小小计算器”基本功能实现(5)改造只有选择退出操作,程序才结束,否则执行一个操作后,提示用户进行下一个操作的输入;
③ 增加功能:
<1>“ 9 计算从1到输入数之间的奇数和 (for)”
从键盘上输入一个正整数,输出1到该数之间所有奇数和。要求用for循环语句实现。
<2> “10 计算从1到输入数之间的偶数和 (while)”
从键盘上输入一个正整数,输出1到该数之间所有偶数和。要求用while语句实现。
<3> “11 输出从1到输入数之间所有3的倍数 (do-while)”
从键盘上输入一个正整数,输出1到该数之间所有3的倍数。要求用do-while实现。
<4> “12 求即被3整除又被5整除的数”
从键盘上输入两个数,输出两个数之间第一个即被3整除又被5整除的数。
<5> “13 求水仙花数”
输出所有水仙花数。水仙花数是一个3位数,各位数字的立方之和等于他本身,例如:153= 13+53+33。
实验7、“小小计算器”基本功能实现(7)
在实验6的基础上,将小小计算器中的各个操作抽取成函数,在switch语句中,根据输入的操作,调用对应的函数。
扩充小小计算器的功能
<1> “14 求最大值”
编写一个带两个参数的函数,该函数返回这两个参数的最大值。输入两个整数,输出他们的最大值。
<2> “15 求最大最小值”
编写一个带两个参数的函数,该函数能求出这两个数的最大值和最小值,使得第一个参数存放最大值,第二个参数存放最小值。要求练习传递地址的参数。
实验8、“小小计算器”基本功能实现(8)
在实验7 “小小计算器”基本功能实现(7)的基础上,扩充以下功能:
<1> “16 冒泡排序”
从键盘上输入10个数,进行冒泡排序,输出排序结果。
<2> “17 矩阵转置”
从键盘输入一个3X4的整数矩阵,进行转置操作,并将转置结果在屏幕上输出;
<3> “18 求对角线和”
从键盘输入一个3*3整数矩阵,求主对角线元素和;
<4> “19 统计单词个数”
从键盘输入一行字符,单词之间用空格分隔开,统计其中有多少个单词, 并输出结果。
实验9、“小小计算器”基本功能实现(9)
在实验8 “小小计算器”基本功能实现(8)的基础上,扩充以下功能:
<1> “19 统计单词个数”
从键盘输入一行字符,单词之间用空格分隔开,统计其中有多少个单词, 并输出结果。
实验10、“小小计算器”基本功能实现(10)
在实验8的基础上,将功能“16 冒泡排序”的排序结果用指针形式来输出。扩充功能:
<1> “20 静态创建链表”
静态创建一个包含有4个节点的单链表,输出这个链表的所有数据。节点包含两个域:数据域(int型),指针域。
<2> “21 动态创建链表”
动态创建一个链表,依次从键盘上输入正整数,将输入的整数插入到该链表中,直到输入一个负数为止。最后将该链表中的数据在屏幕上输出。
实验11、“小小计算器”基本功能实现(11)
扩充小小计算器功能:
<1> “22 学生成绩排序”
定义学生结构体数组,长度为10,依次输入这十个学生的学号、姓名、成绩,利用冒泡排序,对这10个学生排序,从小到大输出这10个学生的信息,然后输出10个学生的总成绩和平时成绩
实验12、“小小计算器”基本功能实现(12)
扩充小小计算器功能:
<1> “23 学生成绩普涨10分”
d盘根目录下存在一个文本文件my.txt,里面存放了10个学生的成绩,一行一个成绩,从文件中读取学生的成绩,每个成绩都加10分后,保存到原文件中。
提示:
- 注意d:\my.txt在fopen中如何表示;—> “d:\\my.txt”
- 文件打开方式 —> r+
- 从文件中读取数据,直到文件结束,如何判断文件结束—> feof()
- 将增加10后的数据保存到原文件时,要保证从文件头开始,如何使文件指针回到文件头—> rewind()
- 在写数据时,一定要避免在最后一个数据写完后,再写一个回车,否则下次在操作时可能出错。
全部代码:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#define PI 3.14
#define NUM_STUDENTS 10
void addition()
{
int num1, num2;
printf("请输入数字:");
scanf("%d%d", &num1, &num2);
printf("加法结果的十进制结果是:%d\n", num1 + num2);
printf("加法结果的八进制结果是:%o\n", num1 + num2);
printf("加法结果的十六进制结果是:%x\n", num1 + num2);
}
void subtraction()
{
int num1, num2;
printf("请输入数字:");
scanf("%d%d", &num1, &num2);
printf("减法结果的十进制结果是:%d\n", num1 - num2);
printf("减法结果的八进制结果是:%o\n", num1 - num2);
printf("减法结果的十六进制结果是:%x\n", num1 - num2);
}
void multiplication()
{
float num1, num2;
printf("请输入数字:");
scanf("%f%f", &num1, &num2);
printf("乘法结果的小数形式是:%f\n", num1 * num2);
printf("乘法结果的指数形式是:%e\n", num1 * num2);
}
void division()
{
float num1, num2;
printf("请输入数字:");
scanf("%f%f", &num1, &num2);
if (num2 == 0)
{
printf("除数为零,无法进行除数运算\n");
}
else
{
printf("除法结果的是:%f\n", num1 / num2);
}
}
void figure()
{
int number;
int sum = 0;
printf("请输入数字:");
scanf("%d", &number);
int n = number;
if (number < 0) {
printf("要求输入的数为正整数\n");
}
else if (number > 999) {
printf("要求输入的数为三位数以内的正整数\n");
}
else
{
for (; n > 0; sum++, n /= 10);
if (sum == 1)printf("该数为一位数,个位数为%d\n", number);
else if (sum == 2)printf("该数为两位数,十位数为%d,个位数为%d\n", number / 10, number % 10);
else printf("该数为三位数,百位数为%d,十位数为%d,个位数为%d\n", number / 100, number % 100 / 10, number % 10);
}
}
void area()
{
float r;
double area;
printf("请输入数字:");
scanf("%f", &r);
area = PI * r * r;
printf("该圆面积是:%lf\n", area);
printf("该圆面积保留两位小数的结果是:%.2lf\n", area);
}
void LeapYear()
{
int years;
printf("请输入年份:");
scanf("%d", &years);
if (years % 4 == 0 && years % 100 != 0 || years % 400 == 0) {
printf("%d是闰年\n", years);
}
else {
printf("%d是平年\n", years);
}
}
void gradeChange()
{
int grade;
printf("请输入成绩:");
scanf("%d", &grade);
if (grade >= 90 && grade <= 100)
{
printf("成绩优秀\n");
}
else if (grade >= 80 && grade < 90)
{
printf("成绩良\n");
}
else if (grade >= 70 && grade <= 79)
{
printf("成绩中\n");
}
else if (grade >= 60 && grade <= 69)
{
printf("成绩及格\n");
}
else
{
printf("成绩不及格\n");
}
}
void oddSum()
{
int num;
int i;
int sum = 0;
printf("请输入数字:");
scanf("%d", &num);
for (i = 1; i <= num; i+=2) {
sum += i;
}
printf("1到%d所有奇数和%d", num, sum);
}
void evenSum()
{
int num;
int i=0;
int sum = 0;
printf("请输入数字:");
scanf("%d", &num);
while (i <= num)
{
sum += i;
i += 2;
}
printf("1到%d所有偶数和%d", num, sum);
}
void threeTimes()
{
int num;
int i = 1;
printf("请输入数字:");
scanf("%d", &num);
printf("1到%d所有3的倍数:\n", num);
do
{
if (i % 3 == 0){
printf("%d\t", i);
}
i++;
} while (i <= num);
}
void threeFiveTimes()
{
int num1, num2;
printf("请输入两个数:");
scanf("%d %d", &num1, &num2);
printf("%d到%d之间既被3整除又被5整除的数:\n",num1,num2);
for (int i = num1; i <= num2; i++)
{
if (i % 3 == 0 && i % 5 == 0)
{
printf("%d\t", i);
}
}
}
void NarcissisticNumber()
{
int m;
printf("水仙花数:\n");
for (m = 100; m < 1000; m++)
{
int a = m / 100, b = m % 100 / 10, c = m % 10;
if (pow(a, 3) + pow(b, 3) + pow(c, 3) == m)
{
printf("%d\t", m);
}
}
}
int isMax(int num1,int num2)
{
return num1 > num2 ? num1 : num2;
}
void isMaxMin(int *p,int*q)
{
int temp;
if (*p < *q)
{
temp = *p;
*p = *q;
*q = temp;
}
}
void BubbleSort()
{
int array[10];
int i,j;
printf("请输入要排序的十个数:\n");
for (i = 0; i < 10; i++) {
scanf("%d", &array[i]);
}
printf("排序前:\n");
for (i = 0; i < 10; i++)
{
printf("%d\t", array[i]);
}
for (i = 0; i < 10; i++)
{
for (j = 0; j < 9; j++)
{
int temp;
if (array[j] > array[j + 1])
{
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
printf("\n排序后:\n");
for (i = 0; i < 10; i++)
{
printf("%d\t", array[i]);
}
}
void MatrixTranspose()
{
int array[3][4];
int i, j;
int temp;
printf("请输入一个3*4矩阵:\n");
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++) {
scanf("%d", &array[i][j]);
}
}
printf("转置前:\n");
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++) {
printf("%d\t", array[i][j]);
}
printf("\n");
}
for (i = 0; i < 3; i++)
{
for (j = 0; j < i; j++)
{
temp = array[i][j];
array[i][j] = array[j][i];
array[j][i] = temp;
}
}
printf("\n转置后:\n");
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++) {
printf("%d\t", array[i][j]);
}
printf("\n");
}
}
void DiagonalSum()
{
int array[3][3];
int i, j;
int sum = 0;
printf("请输入一个3*3矩阵:\n");
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++) {
scanf("%d", &array[i][j]);
if (i == j) {
sum += array[i][j];
}
}
}
printf("主对角线元素和为:%d\n", sum);
}
void wordCount()
{
char ch[100] = { 0 };
int spaces = 0;
int i;
getchar();//除去换行符造成的影响
printf("请输入一行字符:\n");
fgets(ch, sizeof(ch), stdin);
for (i = 0; ch[i] != '\0'; i++)
{
if ((ch[i] == ' ' && ch[i + 1] != ' ')||ch[i+1]=='\0'){//排除了多个空格的干扰并计算到了结尾单词
spaces++;
}
}
printf("单词个数为:%d", spaces);
}
//以下是20
struct student
{
int num;
float score;
struct student* next;
};
void StaticLinkedList()
{
struct student* head, * p;
struct student stu1, stu2, stu3, stu4;
stu1.num = 10011; stu1.score = 88;
stu2.num = 10012; stu2.score = 98;
stu3.num = 10013; stu3.score = 97;
stu4.num = 10014; stu4.score = 99;
head = &stu1;
stu1.next = &stu2;
stu2.next = &stu3;
stu3.next = &stu4;
stu4.next = NULL;
p = head;
while (p != NULL)
{
printf("学号:%d , 成绩:%.1f\n", p->num, p->score);
p = p->next;
}
}
//以下是21的代码
struct Node {
int data;
struct Node* next;
};
void printList(struct Node* n);
void DynamicChain() {
struct Node* head = NULL; // 头节点初始为空
struct Node* temp = NULL;
int value;
printf("输入一个整数,当输入负值时结束: ");
while (1) {
scanf("%d", &value);
if (value < 0) break;
// 创建新节点
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
if (newNode == NULL) {
printf("内存分配失败.\n");
exit(1);
}
newNode->data = value;
newNode->next = NULL;
// 如果是第一个节点,则设为头节点
if (head == NULL) {
head = newNode;
temp = newNode;
}
else {
// 否则,将新节点添加到链表末尾
temp->next = newNode;
temp = newNode;
}
}
// 打印链表信息
printf("\n输入数值为:\n");
printList(head);
// 释放内存
struct Node* current = head;
while (current != NULL) {
struct Node* nextNode = current->next;
free(current);
current = nextNode;
}
}
// 打印链表函数
void printList(struct Node* n) {
while (n != NULL) {
printf("%d ", n->data);
n = n->next;
}
}
//以下是22的代码
struct stu
{
int id;
char name[20];
float scores[3];
};
void swapscore(struct stu* a, struct stu* b)//交换学生信息
{
struct stu temp = *a;
*a = *b;
*b = temp;
}
void bubblesort(struct stu students[], int n)//冒泡排序
{
int i, j;
for (i = 0; i < n - 1; i++)
{
for (j = 0; j < n - i - 1; j++)
{
if (students[j].id > students[j + 1].id) {
swapscore(&students[j], &students[j + 1]);
}
}
}
}
void RankingOfGrades()
{
struct stu students[10];
int i, j;
float sum[10] = { 0 };
printf("请输入十个学生的信息:\n");
for (i = 0; i < 10; i++)
{
printf("第%d的学生的学号是:",i+1);
scanf("%d", &students[i].id);
printf("第%d的学生的名字是:",i+1);
scanf("%s", &students[i].name);
printf("第%d的学生的三门成绩是:",i+1);
for (j = 0; j < 3; j++) {
scanf("%f", &students[i].scores[j]);
sum[i] += students[i].scores[j];
}
}
printf("按照学号排序后的结果如下:\n");
bubblesort(students, 10);
for (int i = 0; i < 10; i++)
{
printf("%5d %5s ", students[i].id, students[i].name);
for(j=0;j<3;j++) {
printf("\t%.1f", students[i].scores[j]);
}
printf(" 总成绩为:%.1f", sum[i]);
printf("\n");
}
}
void case23()
{
FILE* file = fopen("my.txt", "r+");
if (file == NULL) {
perror("Error opening file");
exit(1);
}
int scores[NUM_STUDENTS];
int i = 0;
int result;
// 读取成绩到数组中
while (i < NUM_STUDENTS && (result = fscanf(file, "%d", &scores[i])) == 1) {
i++;
}
// 确保已经读取了所有学生成绩,或者是因为到达文件末尾而停止
if (i != NUM_STUDENTS && !feof(file)) {
fprintf(stderr, "Error: Less than %d scores found in the file before EOF.\n", NUM_STUDENTS);
fclose(file);
exit(1);
}
// 将文件指针移到文件开始处
rewind(file);
// 清除文件内容(可选,但在这个例子中需要)
char ch;
while ((ch = fgetc(file)) != EOF) {
// 不做任何事情,只是读取并丢弃字符,直到文件结束
}
// 重置文件指针到文件开始处
rewind(file);
printf("普涨十分后的成绩为:\n");
// 将修改后的成绩写回到文件
for (int j = 0; j < i; j++) { // 使用实际读取到的成绩数量
scores[j] += 10; // 加10分
fprintf(file, "%d\n", scores[j]); // 写入文件并添加换行符
printf("%d\t", scores[j]);
}
// 关闭文件
fclose(file);
}
//以下是24的代码
struct stu_list* function_24_print(void);
struct stu_list* function_24_read(void);
struct stu_list* phead = NULL;
void print_institution();
struct stu_list* function_24_insert(void);
struct stu_list* function_24_empty(void);
struct stu_list
{
char name[20];
int number;
float score;
struct stu_list* next;
};
struct stu_list* function_24_read()
{
FILE* fp;
struct stu_list* p2, * p1;
p2 = (struct stu_list*)malloc(sizeof(struct stu_list));
//struct student people[N];
int i = 0, j = 1;
fp = fopen("file.txt", "r");
if (fp == NULL)
{
printf("文件打开失败!\n");
}
else
{
printf("文件读取成功!\n");
i = 0;
while (1)
{
if (feof(fp))
{
p2->next = NULL;
break;
}
p1 = (struct stu_list*)malloc(sizeof(struct stu_list));
fscanf(fp, "%s\t%d\t%f\n", p1->name, &(p1->number), &(p1->score));
printf("%s\t%d\t%f\n", p1->name, p1->number, p1->score);
i = i + 1;
if (i == 1)
phead = p1;
else
p2->next = p1;
p2 = p1;
p1->next = NULL;
}
fclose(fp);
}
return 0;
}
struct stu_list* function_24_print()
{
printf("\n");
struct stu_list* temp = phead;
while (temp != NULL)
{
printf("%s %ld %.2f\n", temp->name, temp->number, temp->score);
temp = temp->next;
}
printf("\n");
return 0;
}
struct stu_list* function_24_find()
{
printf("\n请输入需要查找的学号:");
int num;
scanf("%d", &num);
struct stu_list* temp = phead;
while (temp != NULL)
{
if (temp->number == num)
{
printf("找到信息如下:%s %d %.2f \n\n", temp->name, temp->number, temp->score);
break;
}
temp = temp->next;
if (temp == NULL)
{
printf("未找到该学号!\n\n");
}
}
return 0;
}
struct stu_list* function_24_insert()
{
printf("\n请输入插入的学号:");
int num;
scanf("%d", &num);
struct stu_list* p1 = phead, * newnode;
while (p1 != NULL)
{
if (p1->number == num)
{
printf("\n请输入要插入的数据:学号、姓名、成绩\n");
newnode = (struct stu_list*)malloc(sizeof(struct stu_list));
scanf("%s%d%f", newnode->name, &(newnode->number), &(newnode->score));
newnode->next = p1->next;
p1->next = newnode;
break;
}
p1 = p1->next;
if (p1 == NULL) {
printf("未找到该学号!\n\n");
}
}
return 0;
}
struct stu_list* function_24_delete()
{
printf("\n请输入欲删除数据的学号:");
int num;
scanf("%d", &num);
struct stu_list* p1 = phead, * p2=NULL;
while (p1 != NULL)
{
if (p1->number == num)
break;
else
{
p2 = p1; p1 = p1->next;
}
}
if (p1 == NULL)
{
printf("未找到该学号!\n\n");
}
else
{
if (p1 == phead)
phead = p1->next;
else
p2->next = p1->next;
printf("\n已删除!\n\n");
}
return 0;
}
struct stu_list* function_24_empty() {
struct stu_list* temp;
while (phead != NULL) {
temp = phead;
phead = phead->next;
free(temp);
}
printf("已经清空学生系统!\n");
return 0;
}
void print_institution()
{
printf(" 1.打印链表数据\n\
2.使用学号查找数据\n\
3.在某学号后插入数据\n\
4.按学号删除数据\n\
5.清空数据\n\
6.退出学生成绩系统\n\
选择您要进行的操作:");
}
void function_24()
{
function_24_read();
print_institution();
label2:fflush(stdin);
switch (getchar()) {
case '1':
function_24_print();
print_institution();
break;
case '2':
function_24_find();
print_institution();
break;
case '3':
function_24_insert();
print_institution();
break;
case '4':
function_24_delete();
print_institution();
break;
case '5':
function_24_empty();
print_institution();
break;
case '6':
printf(" *已退出学生成绩系统*");
return;
default:
puts("不存在此结果,请重新输入");
break;
}
goto label2;
}
int main()
{
printf("***************************************************************\n\
* 小小计算器 *\n\
* 1 加法 *\n\
* 2 减法 *\n\
* 3 乘法 *\n\
* 4 除法 *\n\
* 5 判断数字的位数 *\n\
* 6 计算圆面积 *\n\
* 7 判断闰年 *\n\
* 8 成绩转换 *\n\
* 9 计算从1到输入数之间的奇数和 (for) *\n\
* 10 计算从1到输入数之间的偶数和 (while) *\n\
* 11 输出从1到输入数之间所有3的倍数 (do-while) *\n\
* 12 求即被3整除又被5整除的数 *\n\
***************************************************************\n\
* 13 求水仙花数 *\n\
* 14 求最大值 *\n\
* 15 求最大最小值 *\n\
* 16 冒泡排序 *\n\
* 17 矩阵转置 *\n\
* 18 求对角线和 *\n\
* 19 统计单词个数 *\n\
* 20 静态创建链表 *\n\
* 21 动态创建链表 *\n\
* 22 学生成绩排序 *\n\
* 23 学生成绩普涨10分 *\n\
* 24 学生成绩链表 *\n\
* 25 退出 *\n\
***************************************************************\n");
label:printf("\n请选择您要进行的运算:");
int choice;
int num1, num2;
int max,min;
int* p, * q;
scanf("%d", &choice);
switch (choice)
{
case 1:addition();
break;
case 2:subtraction();
break;
case 3:multiplication();
break;
case 4:division();
break;
case 5:figure();
break;
case 6:area();
break;
case 7:LeapYear();
break;
case 8:gradeChange();
break;
case 9:oddSum();
break;
case 10:evenSum();
break;
case 11:threeTimes();
break;
case 12:threeFiveTimes();
break;
case 13:NarcissisticNumber();
break;
case 14:
printf("请输入两个数:");
scanf("%d%d", &num1, &num2);
max=isMax(num1, num2);
printf("两数中最大值为:%d", max);
break;
case 15:
printf("请输入两个数:");
scanf("%d%d", &max, &min);
p = &max;
q = &min;
isMaxMin(p, q);
printf("两数中最大值为:%d,最小值为:%d", max,min);
break;
case 16:BubbleSort();
break;
case 17:MatrixTranspose();
break;
case 18:DiagonalSum();
break;
case 19:wordCount();
break;
case 20:StaticLinkedList();
break;
case 21:DynamicChain();
break;
case 22:RankingOfGrades();
break;
case 23:case23();
break;
case 24:function_24();
break;
case 25:return 0;
default:
printf("输入无效选项\n");
}
goto label;
}