#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<math.h>
#define m 10
#define n 100
#define q 3
#define w 4
# define PI 3.14
int paixu(int []);
int *daxiao(int*s,int*z);
struct student
{
int xuehao;
char name[20];
int score;
};
int main()
{
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到输入数之间的奇数和(for) *\n");
printf("*10 计算从1到输入数之间的偶数和(while) *\n");
printf("*11 输出从1到输入数之间所有3的倍数(do-while)*\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("*22 学生成绩排序 *\n");
printf("*********************************************\n");
int j,i,a,b,r,e,arr[n],brr[3][4],drr[q][w],stu[m];
char crr[n];
int num=0,v=1;
int *p=arr;
int *s,*z;
float c,d;
double t;
while(1)
{
scanf("%d",&i);
if(i<=0||i==20||i==21||i>22) {
printf("输入错误\n");
}else
switch(i){
case 1:
scanf("%d %d",&a,&b);
printf("加法结果的十进制形式是:%d\n",a+b);
printf("加法结果的八进制形式是:%o\n",a+b);
printf("加法结果的十六进制形式是:%x\n",a+b);
break;
case 2:
scanf("%d %d",&a,&b);
printf("减法结果的十进制形式是:%d\n",a-b);
printf("加法结果的八进制形式是:%o\n",a-b);
printf("加法结果的十六进制形式是:%x\n",a-b);
break;
case 3:
scanf("%f %f",&c,&d);
printf("乘法结果的小数形式是:%f\n",c*d);
printf("乘法结果的指数形式是:%e\n",c*d);
break;
case 4:
scanf("%f %f",&c,&d);
if(d==0)
{
printf("除数为0,无法进行除法运算\n");
}
else{
printf("除法结果的小数形式是:%f\n",c/d);
printf("除法结果的指数形式是:%e\n",c/d);
}
break;
case 5:
scanf("%d",&a);
if(a<0)
{
printf("要求输入的数为整数\n");
}else if(a>999)
{
printf("要求输入的数为3位以内的正整数");
}else {
b=a%10;
r=a/10%10;
e=a/100;
if(e==0){
printf("该数为2位数,十位是%d,个位是%d\n",r,b);
}else{
printf("该数为3位数,百位是%d,十位是%d,个位是%d\n",e,r,b);
}
}
break;
case 6:
scanf("%d",&r);
t=double(PI*r*r);
printf("该圆面积是:%f",t);
break;
case 7:
scanf("%d",&a);
if((a%4==0&&a%100!=0)&&(a%400==0)) {
printf("%d年是闰年\n",a);
}else {
printf("%d年是平年\n",a);
}
break;
case 8:
scanf("%d",&a);
if(a<0||a>100){
printf("成绩输入错误\n");
}
else
switch(a/10){
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
printf("不及格\n");
break;
case 6:
printf("及格\n");
break;
case 7:
printf("中\n");
break;
case 8:
printf("良\n");
break;
case 9:
case 10:
printf("优秀\n");
break;
}
break;
case 9:
scanf("%d",&a);
for(b=1;b<=a;b++)
{
if(b%2!=0){
num+=b;
}
}
printf("%d\n",num);
break;
case 10:
scanf("%d",&a);
while(v<=a){
if(v%2==0){
num+=v;
}
v++;
}
printf("%d\n",num);
break;
case 11:
scanf("%d",&a);
do{
if(v%3==0){
printf("%d\t",v);
}
v++;
}while(v<=a);
printf("\n");
break;
case 12:
scanf("%d",&a);
for(b=1;b<=a;b++)
{
if(b%3==0&&b%5==0){
printf("%d\t",b);
}
}
break;
case 13:
for(a=100;a<=999;a++){
b=a%10;
r=a/10%10;
e=a/100;
if((e*e*e+r*r*r+b*b*b)==a){
printf("%d\t",a);
}
}
break;
case 14:
printf("%d\n",i);
break;
case 15:
scanf("%d %d",&a,&b);
s=&a;
z=&b;
daxiao(s,z);
break;
case 16:
for(a=0;a<10;a++){
scanf("%d",&arr[a]);
}
printf("\n排序后:\n");
paixu(arr);
for(i=0;i<10;i++){
printf("%d\t",arr[i]);
}
printf("\n指针排序后:\n");
paixu(arr);
for(i=0;i<10;i++){
printf("%d\t",*(p+i));
}
break;
case 17:
for(a=0;a<3;a++){
for(b=0;b<4;b++){
scanf("%d",&brr[a][b]);
}
}
printf("原数组为:\n");
for(a=0;a<3;a++){
for(b=0;b<4;b++){
printf("%d\t",brr[a][b]);
}
printf("\n");
}
printf("数组转置后:\n");
for(a=0;a<4;a++){
for(b=0;b<3;b++){
printf("%d\t",brr[b][a]);
}
printf("\n");
}
break;
case 18:
for(a=0;a<3;a++){
for(b=0;b<3;b++){
scanf("%d",&brr[a][b]);
}
}
printf("原数组为:\n");
for(a=0;a<3;a++){
for(b=0;b<3;b++){
if(a==b){
num+=brr[a][b];
}
printf("%d\t",brr[a][b]);
}
printf("\n");
}
printf("对角线和等于%d\n",num);
break;
case 19:
{
int i,num,leap;
char crr[n];
getchar();
gets(crr);
a=strlen(crr);
for(i=0,num=1;i<a;i++)
{
if(crr[i]==' ')
leap=0;
else if(leap==0)
{
leap=1;
num++;
}
}
printf("单词个数:%d\n",num);
break;
}
case 22:
struct student stu[15],o;
int num=0,i,j;
printf("请输入学号 姓名 成绩\n");
for(i=0;i<10;i++)
scanf("%d%s%d",&stu[i].xuehao,stu[i].name,&stu[i].score);
for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
{
if(stu[j].score>stu[j+1].score)
{
o=stu[j+1];stu[j+1]=stu[j];stu[j]=o;
}
}
printf("\n");
for(i=0;i<10;i++)
{
printf("%d %s %d\n",stu[i].xuehao,stu[i].name,stu[i].score);
num+=stu[i].score;
}
printf("总成绩%d 平均成绩%d",num,num/10);
break;
}
if(i==14){
break;
}
}
return 0;
}
int paixu(int arr[])
{
int i,j,tem;
for(i=0;i<9;i++){
for(j=0;j<9-i;j++){
if(arr[j]>arr[j+1]){
tem=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tem;
}
}
}
return 0;
}
int *daxiao(int*s,int*z)
{
int *r;
if(*s<*z){
r=s;
s=z;
z=r;
printf("最大值:%d 最小值:%d\n",*s,*z);
}else{
printf("%d %d\n",*s,*z);
}
return 0;
}