课程设计计算器

计算器

////实验1
//void menu()
//{
//	printf("****************************\n");
//	printf("*        小小计算器        *\n");
//	printf("*        1.加法            *\n");
//	printf("*        2.减法            *\n");
//	printf("*        3.乘法            *\n");
//	printf("*        4.除法            *\n");
//	printf("*        5.取模运          *\n");
//	printf("*        6.计算圆周率      *\n");
//	printf("*        0.退出计算器      *\n");
//	printf("****************************\n");
//}
//int main()
//{
//	menu();
//	return 0;
//}
////实验2
//#include"stdio.h"
//#define PI 3.14
//void menu()
//{
//	printf("****************************\n");
//	printf("*        小小计算器        *\n");
//	printf("*        1.加法            *\n");
//	printf("*        2.减法            *\n");
//	printf("*        3.乘法            *\n");
//	printf("*        4.除法            *\n");
//	printf("*        5.取模运          *\n");
//	printf("*        6.计算圆周率      *\n");
//	printf("*        0.退出计算器      *\n");
//	printf("****************************\n");
//}
//void Calculator()
//{
//	int a, b;
//	float r;
//	int t = 1;
//	do
//	{
//		printf("请输入要进行的计算:\n");
//		scanf("%d", &t);
//		switch (t)
//		{
//		case 1:
//		{
//				  printf("请输入值:");
//				  scanf("%d %d", &a, &b);
//				  printf("十进制形式输出结果:%d+%d=%d\n", a, b, a + b);
//				  break;
//		}
//		case 2:
//		{
//				  printf("请输入值:");
//				  scanf("%d %d", &a, &b);
//				  printf("十进制形式输出结果:%d-%d=%d\n", a, b, a - b);
//				  break;
//		}
//		case 3:
//		{
//				  printf("请输入值:");
//				  scanf("%d %d", &a, &b);
//				  printf("十进制形式输出结果:%d*%d=%d\n", a, b, a * b);
//				  printf("乘法的指数形式:%e", a*b);
//				  break;
//		}
//		case 4:
//		{
//				  printf("请输入值:");
//				  scanf("%d %d", &a, &b);
//				  printf("%d÷%d=%f\n", a, b, (float)a / b);
//				  break;
//		}
//		case 5:
//		{
//				  printf("请输入值:");
//				  scanf("%d %d", &a, &b);
//				  printf("十进制:%d对%d取模运算得:%d\n", a, b, (int)a % (int)b);
//				  break;
//		}
//		case 6:
//		{
//				  printf("请输入圆的半径:");
//				  scanf("%f", &r);
//				  printf("圆的整数结果为:%d\n", (int)(PI*r*r));
//				  printf("圆的面积为:%f\n", PI*r*r);
//				  printf("圆的面积保留两位小数:%.2f\n", PI*r*r);
//				  break;
//		}
//		}
//	} while (t != 0);
//}
//int main()
//{
//	menu();
//	Calculator();
//	return 0;
//}
//综合实验
#include"stdio.h"
#define PI 3.14
void LeapYear();
void GradeChange();
void  OddSum();
void EvenSum();
void ThreeTimes();
void Divide_3_5();
void ShuiXianHua();
int MaxInTwo(int,int);
void MaxAndMin();
void Bubble();
void Transposition();
void DiagnoalSum();
void CountWords();
void Sort();
void StuBubble(struct student stu[]);
void menu()
{
	printf("***********************************************\n");
	printf("*            小小计算器                       *\n");
	printf("*      1.加法                                 *\n");
	printf("*      2.减法                                 *\n");
	printf("*      3.乘法                                 *\n");
	printf("*      4.除法                                 *\n");
	printf("*      5.取模运                               *\n");
	printf("*      6.计算圆周率                           *\n");
	printf("*      7.判断闰年                             *\n");
	printf("*      8.成绩转换                             *\n");
	printf("*      9.计算1到输入数之间的奇数和            *\n");
	printf("*      10.计算从1到输入数之间的偶数和         *\n");
	printf("*      11.计算从1到输入数之间所有3的倍数      *\n");
	printf("*      12.求既能被3整除又能被5整除的数        *\n");
	printf("*      13.求水仙花数                          *\n");
	printf("*      14.求两个数中的最大值                  *\n");
	printf("*      15.                                    *\n");
	printf("*      16.冒泡排序                            *\n");
	printf("*      17.矩阵转置                            *\n");
	printf("*      18.求对角线的和                        *\n");
	printf("*      19.统计单词个数                        *\n");
	printf("*      20.                                    *\n");
	printf("*      21.                                    *\n");
	printf("*      22.学生成绩排序                        *\n");
	printf("*      0.退出程序                             *\n");
	printf("***********************************************\n");
}
void Calculator()
{
	int a, b;
	float r;
	int t = 1;
	do
	{
		printf("请输入要进行的计算:\n");
		scanf("%d", &t);
		switch (t)
		{
		case 1:
		{
				  printf("请输入值:");
				  scanf("%d %d", &a, &b);
				  printf("十进制形式输出结果:%d+%d=%d\n", a, b, a + b);
				  printf("八进制形式输出结果:%d+%d=%o\n", a, b, a + b);
				  printf("十六进制形式输出结果:%d+%d=%x\n", a, b, a + b);
				  break;
		}
		case 2:
		{
				  printf("请输入值:");
				  scanf("%d %d", &a, &b);
				  printf("十进制形式输出结果:%d-%d=%d\n", a, b, a - b);
				  printf("八进制形式输出结果:%d-%d=%o\n", a, b, a - b);
				  printf("十六进制形式输出结果:%d-%d=%x\n", a, b, a - b);
				  break;
		}
		case 3:
		{
				  float a1, a2;
				  printf("请输入值:");
				  scanf("%f %f", &a1, &a2);
				  printf("乘法的小数形式:%f\n", a1*a2);
				  printf("乘法的指数形式:%e\n", a1*a2);
				  break;
		}
		case 4:
		{
				  printf("请输入值:");
				  scanf("%d %d", &a, &b);
				  printf("%d÷%d=%f\n", a, b, (float)a / b);//除的运算可能除不尽
				  break;
		}
		case 5:
		{
				  printf("请输入值:");
				  scanf("%d %d", &a, &b);
				  printf("十进制:%d对%d取模运算得:%d\n", a, b, (int)a % (int)b);
				  printf("八进制:%d对%d取模运算得:o\n", a, b, (int)a % (int)b);
				  printf("十六进制:%d对%d取模运算得:%x\n", a, b, (int)a % (int)b);
				  break;
		}
		case 6:
		{
				  printf("请输入圆的半径:");
				  scanf("%f", &r);
				  printf("圆的整数结果为:%d\n", (int)(PI*r*r));
				  printf("圆的面积为:%f\n", PI*r*r);
				  printf("圆的面积保留两位小数:%.2f\n", PI*r*r);
				  break;
		}
		case 7:
		{
				  LeapYear();
				  break;
		}
		case 8:
		{
				  GradeChange();
				  break;
		}
		case 9:
		{
				  OddSum();
				  break;
		}
		case 10:
		{
				   EvenSum();
				   break;
		}
		case 11:
		{
				   ThreeTimes();
				   break;
		}
		case 12:
		{
				   Divide_3_5();
				   break;
		}
		case 13:
		{
				   ShuiXianHua();
				   break;
		}
		case 14:
		{
				   int num1, num2;
				   printf("请输入要求的两个数:");
				   scanf("%d %d", &num1, &num2);
				   printf("两个数中的最大值为:%d\n", MaxInTwo(num1, num2));
				   break;
		}
		case 15:
		{
				   MaxAndMin();
				   break;
		}
		case 16:
		{
				   Bubble();
				   break;
		}
		case 17:
		{
				   Transposition();
				   break;
		}
		case 18:
		{
				   DiagnoalSum();
				   break;
		}
		case 19:
		{
				   CountWords();
				   break;
		}
		case 20:
		{

		}
		case 21:
		{

		}
		case 22:
		{
				   Sort();
		}
		}
	} while (t != 0);
}
int main()
{
	menu();
	Calculator();
	return 0;
}
void LeapYear()
{
	int year;
	printf("请输入你要判断的闰年:");
	scanf("%d", &year);
	if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
	{
		printf("%d是闰年\n", year);
	}
}
void GradeChange()
{
	int Grade;
	printf("请输入要转换的(百分制)成绩:");
	scanf("%d", &Grade);
	if (Grade<0 || Grade>100)//增强函数的功能
	{
		printf("输入错误!\n");
	}
	else
	{
		switch (Grade / 10)
		{
		case 10:
		case 9:
		{
				  printf("优秀\n");
				  break;
		}
		case 8:
		{
				  printf("良好\n");
				  break;
		}
		case 7:
		{
				  printf("中等\n");
				  break;
		}
		case 6:
		{
				  printf("及格\n");
				  break;
		}
		default:
			printf("不及格\n");
		}
	}
}
void  OddSum()
{
	int num, sum = 0;
	printf("请输入范围的最大值:");
	scanf("%d", &num);
	for (int i = 1; i <= num; i+=2)//这种方式递增比较简单
	{
		sum = sum + i;
	}
	printf("奇数的和为%d\n", sum);
}
void EvenSum()
{
	int num, sum = 0, i=2;
	printf("请输入该范围的最大值;");
	scanf("%d", &num);
	while (i <= num)
	{
		sum = sum + i;
		i += 2;
	}
	printf("偶数的和为:%d\n", sum);
}
void ThreeTimes()
{
	int num, i = 1;
	printf("请输入该范围的最大值;");
	scanf("%d", &num);
	do
	{
		if (i % 3 == 0)
		{
			printf("%d ", i);
		}
		i++;
	} while (i <= num);
	printf("\n");
}
void Divide_3_5()
{
	int num1, num2;
	printf("输入要求的数的范围:");
	scanf("%d %d", &num1,&num2);
	do
	{
		if (num1 % 3 == 0 && num1 % 5 == 0)
		{
			printf("%d ", num1);
		}
		num1++;
	} while (num1 <= num2);
	printf("\n");
}
void ShuiXianHua()
{
	for (int i = 1; i <= 9; i++)
	{
		for (int j = 0; j <= 9; j++)
		{
			for (int k = 0; k <= 9; k++)
			{
				if (i*i*i + j*j*j + k*k*k == i * 100 + j * 10 + k)
				{
					printf("%d水仙花数:%d %d %d\n", i * 100 + j * 10 + k, i, j, k);
				}
			}
		}
	}
}
int MaxInTwo(int num1,int num2)
{
	int max;
	return (max = num1 > num2 ? num1 : num2);
}
void MaxAndMin()
{

}
void Bubble()
{
	int i, j, tmp;
	int a[10] = { 0 };
	printf("请输入十个整数:");
	for (i = 0; i < 10; i++)
	{
		scanf("%d", &a[i]);
	}
	for (i = 0; i < 10; i++)
	{
		printf("%d ", a[i]);
	}
	printf("\n");
	for (i = 0; i < 9; i++)
	{
		for (j = 0; j < 9-i; j++)
		{
			if (a[j]>a[j + 1])
			{
				tmp = a[j + 1];
				a[j + 1] = a[j];
				a[j] = tmp;
			}
		}
	}
	for (i = 0; i < 10; i++)
	{
		printf("%d ", a[i]);
	}
}
void Transposition()
{
	int arr[3][4] = {
		{ 1, 2, 3, 4 },
		{ 4, 5, 6, 7 },
		{ 7, 8, 9, 0 },
	};
	for (int i = 0; i < 3; i++)//三行
	{
		for (int j = 0; j < 4; j++)//四列
		{
			printf("%-4d", arr[i][j]);
		}
		printf("\n");
	}
	printf("转置后的数组:\n");
	for (int i = 0; i < 4; i++)//由上一个循环的行变成列,行写在列的位置
	{
		for (int j = 0; j < 3; j++)//由上一个循环的列变成行,列写在行的位置
		{
			printf("%-4d  ", arr[j][i]);
		}
		printf("\n");
	}
}
void DiagnoalSum()
{
	int sum = 0;
	int arr[3][3] = {
		{ 1, 2, 3 },
		{ 4, 5, 6 },
		{ 7, 8, 9 },
	};
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			if (i == j)
			{
				sum += arr[i][j];
			}
		}
	}
	printf("对角线的和为:%d\n",sum);
}
void CountWords()
{
	char arr[100] = { 0 };
	int i, MarkWord=1, count = 0;//MarkWord标记是否在单词内,在单词内为1 不在为0
	printf("请输入英文句子:");
	gets(arr);
	char ch = 0;
	while ((ch = getchar()) != '\n')//getchar()在缓冲区读取字符串
	{
		if (ch == ' ')
		{
			MarkWord = 0;//I am a cat.根据这个单词串,走一下while里面的循环
		}
		else if (MarkWord == 0)
		{
			MarkWord = 1;
			count++;
		}
	}
	printf("单词个数为:%d\n", count+1);//count+1的原因是,最后一个单词后面没有空格
}
struct student{
	char Sno[10];
	char name[10];
	float Grade;
};
void Sort()
{
	float sum = 0, Avg;
	struct student stu[10];
	printf("请依次输入这十个学生的学号、姓名和成绩:\n");
	for (int i = 0; i < 10; i++)
	{
		printf("请输入第%d个学生的学号、姓名和成绩\n",i);
		scanf("%s %s %f", &stu[i].Sno, &stu[i].name, &stu[i].Grade);//用这种方式输入Sno和name比gets()方便
	}
	for (int i = 0; i < 10; i++)
	{
		printf("%s %s %.2f\n", stu[i].Sno, stu[i].name, stu[i].Grade);
	}
	//StuBubble(stu);
	for (int i = 0; i < 10; i++)
	{
		sum = sum + stu[i].Grade;
	}
	Avg = sum / 10;
	printf("总成绩为:%.2f\n平均成绩为:%.2f\n", sum, Avg);
}
//void StuBubble(struct student stu[])
//{
//	int i, j;
//	float tmp;
//	for (i = 0; i < 9; i++)
//	{
//		for (j = 0; j < 9 - i; j++)
//		{
//			if (stu[j].Grade>stu[j + 1].Grade)
//			{
//				tmp = stu[j + 1].Grade;
//				stu[j + 1].Grade = stu[j].Grade;
//				stu[j].Grade = tmp;
//			}
//		}
//	}
//	for (int i = 0; i < 10; i++)
//	{
//		printf("%s %s %.2f\n", stu[i].Sno, stu[i].name, stu[i].Grade);
//	}
//}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彭就是我的姓i

你的鼓励是我创作的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值