C语言小小计算器

大作业“小小计算器”

实验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)验收/测试用例

  1. 加法

输入:   5, 15

输出:   加法结果的十进制形式是:20

         加法结果的八进制形式是:24

加法结果的十六进制形式是:14

  1. 减法

输入:   5, 15

输出:   减法结果的十进制形式是:-10

         减法结果的八进制形式是:3777777766

减法结果的十六进制形式是:fffffff6

  1. 取模

输入:   10, 7

输出:   取模结果的十进制形式是:3

         取模结果的八进制形式是:3

取模结果的十六进制形式是:3

  1. 乘法

输入:   2000.5,6

输出:   乘法结果的小数形式是:12003.000000

         乘法结果的指数形式是:1.200300e+004

  1. 求圆面积

输入:   2

输出:   该圆面积是12.560000

该圆面积保留两位小数的结果是12.56

实验4、小小计算器”基本功能实现(4)

编程实现以下功能:

①  在屏幕上输出

            ***********************************

            *          小小计算器             *

            *          1 加法                 *

            *          2 减法                 *

            *          3 乘法                 *

            *          4 除法                 *

            *          5 判断数字的位数       *

            *          6 计算圆面积           *

            ***********************************

② 除法运算时,如果输入的第二个数(除数)为0,给出提示,显示计算结果。

③ 输入一个正整数,要求在三位以内(含三位),求出这个数是几位数,并输出每一位数字。

 

(3)验收/测试用例

  1. 除法

输入:   120,6

输出:   除法结果是:20.000000

 

输入:   120,0

输出:   除数为0,无法进行除法运算

  1. 判断数字的位数

输入:   -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)验收/测试用例

  1. 判断闰年

输入:2000

输出:2000年是闰年

 

输入:2013

输出:2000年是平年

 

  1. 成绩转换

输入:-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分后,保存到原文件中。

提示:

  1. 注意d:\my.txt在fopen中如何表示;—> “d:\\my.txt”
  2. 文件打开方式 —> r+
  3. 从文件中读取数据,直到文件结束,如何判断文件结束—> feof()
  4. 将增加10后的数据保存到原文件时,要保证从文件头开始,如何使文件指针回到文件头—> rewind()
  5. 在写数据时,一定要避免在最后一个数据写完后,再写一个回车,否则下次在操作时可能出错。

全部代码:

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

 

 

  • 9
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值