#include <stdio.h>#include <string.h>#include <math.h>#define pi 3.14159void main(){float f1(float,float);//基本运算函数 float f2(float);//三角运算函数void f31(int *p);//数组排列函数void f32(int *p);//数组查找函数void f33(int *p);//数组删除函数void f4(float q[][4]);//行列式计算函数
printf("*******用户登录*******\n");//用户登录char st1[]="lily",st2[]="123456",s1[50],s2[50];int i,j,c1=0,c2=0,k,p[10],flag=1;float a,b,result,q[4][4];printf("请输入用户名:\n");gets(s1);//用户输入姓名,有3次机会for(i=0;i<=3;i++){if(strcmp(s1,st1)==0){c1++;break;}else{if(i<3){ printf("用户名错误,请再次输入:\n"); gets(s1);}}}if(c1==1)//用户名正确,请用户输入密码,同样3次机会{printf("请输入密码:\n");gets(s2);for(j=1;j<=3;j++){if(strcmp(s2,st2)==0){c2++;break;}else{if(j<3){ printf("密码错误,请再次输入:\n"); gets(s2);}}}}
if(c1*c2!=0)//用户名与密码都正确,开始进行计算的操作{printf("***欢迎使用本程序!***\n"); while(flag==1){printf("请问您要做什么运算:\n1-基本运算 2-三角运算 3-数列处理 4-行列式处理(以4阶为例)\n");//选择运算类型scanf("%d",&k);switch(k){ case 1://基本运算{printf("请输入需要计算的两个数,用逗号分隔:\n");scanf("%f,%f",&a,&b);result=f1(a,b);printf("The result is %.2f.\n",result);}break;
case 2://三角运算{printf("请输入角度:");scanf("%f",&a);result=f2(a);printf("The result is %f.\n",result);}break;
case 3://数组操作{printf("请输入10个整数,用空格分隔:\n");for(j=0;j<10;j++){scanf("%d",&p[j]);}printf("请选择您所需要的操作:\n1-排序 2-查找 3-删除\n");//请用户选择所需操作scanf("%d",&k);switch(k){case 1:f31(p);break;case 2:f32(p);break;case 3:f33(p);break;}}break;
case 4://行列式操作{printf("请按先行后列的顺序输入,共4*4=16个整数:\n");for(i=0;i<4;i++){for(j=0;j<4;j++){scanf("%f",&q[i][j]);}}printf("您输入的行列式为:\n");for(i=0;i<4;i++){for(j=0;j<4;j++){printf("%5.2f\t",q[i][j]);}printf("\n");}f4(q);}break;}printf("\n");printf("继续计算请按1,退出请按0。\n");//请用户选择是否继续进行计算scanf("%d",&flag);}}}
float f1(float a,float b)//基本运算{int k;float c;printf("请选择您要进行的运算:\n1-加法 2-减法 3-乘法 4-除法\n");scanf("%d",&k);switch(k){case 1:c=a+b;break;case 2:c=a-b;break;case 3:c=a*b;break;case 4:c=a/b;break;}return(c);}
float f2(float a)//三角运算{int k;float c;printf("请输入您要进行的运算:\n1-sin 2-cos 3-tan 4-角度转弧度\n");scanf("%d",&k);switch(k){case 1:c=sin(a/180*pi);break;case 2:c=cos(a/180*pi);break;case 3:c=tan(a/180*pi);break;case 4:c=a/180*pi;break;}return(c);}
void f31(int *p)//数组运算之排列{int i,j,t;for(i=0;i<10;i++){for(j=i+1;j<10;j++){if(p[i]>p[j]){t=p[i];p[i]=p[j];p[j]=t;}}}printf("这列数从小到大依次是:\n");for(i=0;i<10;i++){printf("%d\t",p[i]);}}
void f32(int *p)//数组运算之查找{int x,i,m,count=0;printf("请输入需要查找的数:");scanf("%d",&x);for(i=0;i<10;i++){if(p[i]==x){m=i;count++;break;}}if(count==0)printf("您要找的数不存在!\n");if(count==1)printf("p[%d]=%d",m,x);}
void f33(int *p)//数组运算之删除{int x,i;printf("请输入需要删除的数:");scanf("%d",&x);for(i=0;i<10;i++){if(p[i]==x){for(;i<10;i++)p[i]=p[i+1];}}printf("删除后的数列是:");for(i=0;i<9;i++){printf("%5d",p[i]);}printf("\n");}
void f4(float q[][4])//行列式计算{double t,m=1,n=4;int i,j,k;for(k=0;k<n-1;k++){for(i=k;i<n;i++)//将第一列的元素都变成1{t=q[i][k]; if(q[i][k]!=0){m=m*t; for(j=k;j<n;j++){ q[i][j]=q[i][j]/t*1.0;}}} for(i=n-1;i>k;i--)//消第一列{ if(q[i][k]!=0){ for(j=k;j<n;j++){ q[i][j]=q[i][j]-q[k][j];}}}}printf("The result is %lf.\n",m*q[3][3]);//打印结果}
printf("*******用户登录*******\n");//用户登录char st1[]="lily",st2[]="123456",s1[50],s2[50];int i,j,c1=0,c2=0,k,p[10],flag=1;float a,b,result,q[4][4];printf("请输入用户名:\n");gets(s1);//用户输入姓名,有3次机会for(i=0;i<=3;i++){if(strcmp(s1,st1)==0){c1++;break;}else{if(i<3){ printf("用户名错误,请再次输入:\n"); gets(s1);}}}if(c1==1)//用户名正确,请用户输入密码,同样3次机会{printf("请输入密码:\n");gets(s2);for(j=1;j<=3;j++){if(strcmp(s2,st2)==0){c2++;break;}else{if(j<3){ printf("密码错误,请再次输入:\n"); gets(s2);}}}}
if(c1*c2!=0)//用户名与密码都正确,开始进行计算的操作{printf("***欢迎使用本程序!***\n"); while(flag==1){printf("请问您要做什么运算:\n1-基本运算 2-三角运算 3-数列处理 4-行列式处理(以4阶为例)\n");//选择运算类型scanf("%d",&k);switch(k){ case 1://基本运算{printf("请输入需要计算的两个数,用逗号分隔:\n");scanf("%f,%f",&a,&b);result=f1(a,b);printf("The result is %.2f.\n",result);}break;
case 2://三角运算{printf("请输入角度:");scanf("%f",&a);result=f2(a);printf("The result is %f.\n",result);}break;
case 3://数组操作{printf("请输入10个整数,用空格分隔:\n");for(j=0;j<10;j++){scanf("%d",&p[j]);}printf("请选择您所需要的操作:\n1-排序 2-查找 3-删除\n");//请用户选择所需操作scanf("%d",&k);switch(k){case 1:f31(p);break;case 2:f32(p);break;case 3:f33(p);break;}}break;
case 4://行列式操作{printf("请按先行后列的顺序输入,共4*4=16个整数:\n");for(i=0;i<4;i++){for(j=0;j<4;j++){scanf("%f",&q[i][j]);}}printf("您输入的行列式为:\n");for(i=0;i<4;i++){for(j=0;j<4;j++){printf("%5.2f\t",q[i][j]);}printf("\n");}f4(q);}break;}printf("\n");printf("继续计算请按1,退出请按0。\n");//请用户选择是否继续进行计算scanf("%d",&flag);}}}
float f1(float a,float b)//基本运算{int k;float c;printf("请选择您要进行的运算:\n1-加法 2-减法 3-乘法 4-除法\n");scanf("%d",&k);switch(k){case 1:c=a+b;break;case 2:c=a-b;break;case 3:c=a*b;break;case 4:c=a/b;break;}return(c);}
float f2(float a)//三角运算{int k;float c;printf("请输入您要进行的运算:\n1-sin 2-cos 3-tan 4-角度转弧度\n");scanf("%d",&k);switch(k){case 1:c=sin(a/180*pi);break;case 2:c=cos(a/180*pi);break;case 3:c=tan(a/180*pi);break;case 4:c=a/180*pi;break;}return(c);}
void f31(int *p)//数组运算之排列{int i,j,t;for(i=0;i<10;i++){for(j=i+1;j<10;j++){if(p[i]>p[j]){t=p[i];p[i]=p[j];p[j]=t;}}}printf("这列数从小到大依次是:\n");for(i=0;i<10;i++){printf("%d\t",p[i]);}}
void f32(int *p)//数组运算之查找{int x,i,m,count=0;printf("请输入需要查找的数:");scanf("%d",&x);for(i=0;i<10;i++){if(p[i]==x){m=i;count++;break;}}if(count==0)printf("您要找的数不存在!\n");if(count==1)printf("p[%d]=%d",m,x);}
void f33(int *p)//数组运算之删除{int x,i;printf("请输入需要删除的数:");scanf("%d",&x);for(i=0;i<10;i++){if(p[i]==x){for(;i<10;i++)p[i]=p[i+1];}}printf("删除后的数列是:");for(i=0;i<9;i++){printf("%5d",p[i]);}printf("\n");}
void f4(float q[][4])//行列式计算{double t,m=1,n=4;int i,j,k;for(k=0;k<n-1;k++){for(i=k;i<n;i++)//将第一列的元素都变成1{t=q[i][k]; if(q[i][k]!=0){m=m*t; for(j=k;j<n;j++){ q[i][j]=q[i][j]/t*1.0;}}} for(i=n-1;i>k;i--)//消第一列{ if(q[i][k]!=0){ for(j=k;j<n;j++){ q[i][j]=q[i][j]-q[k][j];}}}}printf("The result is %lf.\n",m*q[3][3]);//打印结果}