计算器
#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;
printf("请输入英文句子:");
gets(arr);
char ch = 0;
while ((ch = getchar()) != '\n')
{
if (ch == ' ')
{
MarkWord = 0;
}
else if (MarkWord == 0)
{
MarkWord = 1;
count++;
}
}
printf("单词个数为:%d\n", 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);
}
for (int i = 0; i < 10; i++)
{
printf("%s %s %.2f\n", stu[i].Sno, stu[i].name, stu[i].Grade);
}
for (int i = 0; i < 10; i++)
{
sum = sum + stu[i].Grade;
}
Avg = sum / 10;
printf("总成绩为:%.2f\n平均成绩为:%.2f\n", sum, Avg);
}