好家伙,这个东西有点折磨

这是一个多功能计算器

#include<stdio.h>
#include<math.h>
#include<windows.h>
void first();/*二元一次方程*/
void second();//一元二次方程//
void third();//矩阵的相加//
void fourth();//矩阵的相减//
void fifth();//矩阵的相乘//
void sixth();//三角函数运算//
void seventh();//阶乘的运算// int main()
{ while(1)
{
int a;
printf("\n");
printf("********多功能科学计算器*********\n");
printf("*\t1.二元一次方程求解\t*\n");
printf("*\t2.一元二次方程求解\t*\n");
printf("*\t3.矩阵的相加\t\t*\n");
printf("*\t4.矩阵的相减\t\t*\n");
printf("*\t5.矩阵的相乘\t\t*\n");
printf("*\t6.三角函数运算\t\t*\n");
printf("*\t7.阶乘的运算\t\t*\n");
printf("*\t0.重启程序\t\t*\n");
printf("****输入对应数字实现对应功能*****\n\n");
printf("请输入:");
scanf("%d",&a); if(a==0)
{
break;
}
switch(a)
{
case 1:
first();
break; case 2:
second();
break;
case 3:
third();
break;
case 4:
fourth();
break;
case 5:
fifth();
break;
case 6:
sixth();
break;
case 7:
seventh();
break;
}
system("pause");
system("cls");
} return 0;
}
void first()/*二元一次方程*/
{
double a,b,c,d,n,m,x,y;
printf("公式为ax+by=m cx+dy=n\n");
printf("请依次输入a,b,m,c,d,n\n");
scanf("%lf%lf%lf%lf%lf%lf",&a,&b,&m,&c,&d,&n);
if(a*d-b*c==0)
{
printf("该方程无解\n");
}
else
{
x=(d*m-n*b)/(a*d-b*c);
y=(a*n-c*m)/(a*d-b*c);
printf("x=%f,y=%f",x,y);
}
} void second()//一元二次方程//
{
double a,b,c,x1,x2 ;
printf("公式为ax*x+bx+c=0\n");
printf("请依次输入a,b,c\n");
scanf("%lf%lf%lf",&a,&b,&c);
if(b*b-4*a*c>=0)
{
x1=(-b+sqrt(b*b-4*a*c))/(2*a);
x2=(-b-sqrt(b*b-4*a*c))/(2*a);
if(x1==x2){
printf("该方程仅有一解x=%f\n",x1);
}
else
printf("x1=%f,x2=%f\n",x1,x2);
}
else
{
printf("该方程无解\n");
}
} void third()//矩阵的相加
{
int a[100][100],b[100][100],c[100][100];
int d,e,f,h,j,k;
printf("请输入第一个矩阵行数和列数;\n");
scanf("%d%d",&d,&e);
printf("请输入矩阵中的数字:\n");
for(f=1;f<=d;f++)
{
for(h=1;h<=e;h++)
{
printf("请输入第%d行第%d列的数字",f,h);
scanf("%d",&a[f][h]); }
}
printf("请输入第二个矩阵行数和列数.\n");
scanf("%d%d",&j,&k);
printf("请输入矩阵中的数字:\n");
for(f=1;f<=j;f++)
{
for(h=1;h<=k;h++)
{
printf("请输入第%d行第%d列的数字",f,h); scanf("%d",&b[f][h]);
}
}
if(d==j&&e==k)//矩阵中只有行数于列数相同时候才能运算
{
for(f=1;f<=d;f++)
{
for(h=1;h<=e;h++)
{
c[f][h]=a[f][h]+b[f][h];
printf("%4d",c[f][h]);
}
printf("\n");
}
}
else
{
printf("该输入的矩阵无法相加,因为输入矩阵的行数与列数不同。\n");
}
} void fourth()//矩阵的相减//
{
int a[100][100],b[100][100],c[100][100];
int d,e,f,h,j,k;
printf("请输入第一个矩阵行数和列数;\n");
scanf("%d%d",&d,&e);
printf("请输入矩阵中的数字:\n");
for(f=1;f<=d;f++)
{
for(h=1;h<=e;h++)
{
printf("请输入第%d行第%d列的数字",f,h);
scanf("%d",&a[f][h]);
}
}
printf("请输入第二个矩阵行数和列数.\n");
scanf("%d%d",&j,&k);
printf("请输入矩阵中的数字:\n");
for(f=1;f<=j;f++)
{
for(h=1;h<=k;h++)
{
printf("请输入第%d行第%d列的数字",f,h); scanf("%d",&b[f][h]);
}
}
if(d==j&&e==k)//矩阵中只有行数于列数相同时候才能运算
{
for(f=0;f<d;f++)
{
for(h=0;h<e;h++)
{
c[f][h]=a[f][h]-b[f][h];
printf("%4d",c[f][h]);
}
printf("\n");
}
}
else
{
printf("该输入的矩阵无法相减,因为输入矩阵的行数与列数不同。\n");
} } void fifth()//矩阵的相乘//
{
int a[100][100],b[100][100];
int d,e,f,h,j,k,t;
double sum;
double c[100][100];
printf("请输入第一个矩阵行数和列数;\n");
scanf("%d%d",&d,&e);
printf("请输入矩阵中的数字:\n");
for(f=0;f<d;f++)
{
for(h=0;h<e;h++)
{
printf("请输入第%d行第%d列的数字",f,h);
scanf("%d",&a[f][h]);
}
}
printf("请输入第二个矩阵行数和列数.\n");
scanf("%d%d",&j,&k);
printf("请输入矩阵中的数字:\n");
for(f=0;f<j;f++)
{
for(h=0;h<k;h++)
{
printf("请输入第%d行第%d列的数字",f,h);
scanf("%d",&b[f][h]);
}
}
if(e==j)//矩阵相乘只有在左边矩阵的列数等于右边矩阵的行数时才能相乘
{
for(f=0;f<d;f++)
{ for(h=0;h<k;h++)
{
sum=0;
for(t=0;t<e;t++)
{
sum+=a[f][t]*b[t][h];
}
c[f][h]=sum;
}
printf("\n");
}
for(f=0;f<d;f++)
{ for(h=0;h<e;h++)
{
printf("%f",c[f][h]);
}
printf("\n");
}
}
else
{
printf("该输入的矩阵无法相乘,因为输入左边的矩阵的列数不等于右边矩阵的行数。\n");
} } void sixth() //三角函数的运算
{
double n,s,c,t,pi=3.1415926;
printf("输入数n\n");
scanf("%lf",&n);
if(n==90)
{
s=sin(n*pi/180);
c=cos(n*pi/180);
t=tan(n*pi/180);
printf("sin%.f=%.2f\n",n,s);
printf("cos%.f=%.2f\n",n,c);
printf("tan%.f 不存在\n",n,t);
}
else
{
s=sin(n*pi/180);
c=cos(n*pi/180);
t=tan(n*pi/180);
printf("sin%.f=%.2f\n",n,s);
printf("cos%.f=%.2f\n",n,c);
printf("tan%.f=%.2f\n",n,t);
}
} void seventh()//阶乘的运算//
{
int a,b;
// unsigned long long sum=1;
long sum;
sum=1;
printf("请输入需要计算的阶乘:\n");
scanf("%d",&b);
for(a=1;a<=b;a++)
{
sum*=a;
}
printf("计算的结果为:%lld",sum);
}

1)概述或引言

开发环境为Visual C++

目前已实现的功能:

 

(1)解二元一次方程、一元二次方程

(2)进行矩阵相加、相减、相乘运算

(3)进行三角函数、阶乘运算

 

 

2)程序概要设计

程序流程:

其中包括的函数以及对应的功能:

函数名称

对应功能

first

解二元一次方程

second

解一元二次方程

third

矩阵的相加

fourth

矩阵的相减

fifth

矩阵的相乘

sixth

三角函数运算

seventh

阶乘的运算

1.(first)函数解二元一次方程

 开始时,按照” ax+by=m cx+dy=n”的格式依次输入:a,b,n,c,d,n;

核心算法部分:

(按照公式计算出x,y的值)

 

x=(d*m-n*b)/(a*d-b*c);

                   y=(a*n-c*m)/(a*d-b*c);

 

测试样例:

         输入:1 3 4 1 1 2

         输出:x=1.0000 y=1.0000

2.(second)函数 解一元二次方程

核心算法部分:

(按照公式计算出两解的值)

首先判断: b*b-4*a*c

x1=(-b+sqrt(b*b-4*a*c))/(2*a);

                   x2=(-b-sqrt(b*b-4*a*c))/(2*a);

 

测试样例:

         输入:1 4 4

         输出: 该方程仅有一解x=-2.000

如图:

 

 

3. (third)函数

解一元二次方程

核心算法部分:

(按照公式计算出矩阵的值)

3.1.矩阵输入

         for(f=1;f<=d;f++)

         {

                   for(h=1;h<=e;h++)

                   {

                            printf("请输入第%d行第%d列的数字",f,h);

                            scanf("%d",&a[f][h]);

                           

                   }

         }

 

3.2.矩阵相加:

         if(d==j&&e==k)//矩阵中只有行数于列数相同时候才能运算

         {

                   for(f=1;f<=d;f++)

                   {

                            for(h=1;h<=e;h++)

                            {

                                     c[f][h]=a[f][h]+b[f][h];

                                     printf("%4d",c[f][h]);

                            }

                            printf("\n");

                   }

         }

测试样例:

         输入:2 2\n2\n2\n2\n2\n2 2\n 2\n2\n2\n2\n

         输出:     4   4

                      4   4

                 

4. (fourth)函数 解一元二次方程

核心算法部分:

(按照公式计算出矩阵的值)

4.1.矩阵输入:

for(f=1;f<=d;f++)

         {

                   for(h=1;h<=e;h++)

                   {

                            printf("请输入第%d行第%d列的数字",f,h);

                            scanf("%d",&a[f][h]);

                   }

         }

 

4.2.矩阵相减:

if(d==j&&e==k)//矩阵中只有行数于列数相同时候才能运算

         {

                   for(f=0;f<d;f++)

                   {

                            for(h=0;h<e;h++)

                            {

                                     c[f][h]=a[f][h]-b[f][h];

                                     printf("%4d",c[f][h]);

                            }

                   printf("\n");

                   }

         }

测试样例:

         输入:2 2\n2\n2\n2\n2\n2 2\n 2\n2\n2\n2\n

         输出:    0   0

                0   0

 

5. (second)函数 矩阵的相乘

(有bug,在修复)

 

6. (sixth)函数 三角函数运算

核心算法部分:

(按照公式计算出  的值)

6.1.计算sin,cos,tan(输入值n为角度(如:90)):

         s=sin(n*pi/180);

         c=cos(n*pi/180);

         t=tan(n*pi/180);

 

测试样例:

         输入:90

         输出:   sin90=1.00

      cos90=0.00

      tan90 不存在

 

 

 

7. (seventh)函数 阶乘的运算

核心算法部分:

(按照公式计算出  的值)

7.1.阶乘计算(输入值为b):

 

for(a=1;a<=b;a++)

         {

                   sum*=a;

         }

 

测试样例:

         输入:10

         输出: 计算的结果为:3628800

 

 

矩阵相乘暂时还有bug,正在修复。

C语言:多功能计算器的更多相关文章

  1. 李洪强漫谈iOS开发[C语言-042]-简单计算器

    李洪强漫谈iOS开发[C语言-042]-简单计算器

  2. iOS应用内语言切换功能

    当我们的应用仅仅面向国内用户群,一般仅支持一种语言--中文就可以了.当面向国外用户时就需要进行国际化了,不仅仅是语言的转变,也可能包括设计风格,页面布局.交互效果的转变,如微信,微博,QQ这类应用都有 ...

  3. Android学习–Android app 语言切换功能

    功能: app用户根据自己的语言喜好,设置app语言.语言设置只针对本app,并在下次启动应用时保留前一次启动设置. 更新语言: public static void changeAppLanguag ...

  4. C语言实现简易计算器(可作加减乘除)

    C语言实现简易计算器(加减乘除) 计算器作为课设项目,已完成答辩,先将代码和思路(注释中)上传一篇博客 已增添.修改.整理至无错且可正常运行 虽使用了栈,但初学者可在初步了解栈和结构语法后理解代码 # ...

  5. C语言:多功能计算器程序说明书

    好家伙,3000字终于写完了 一.题目:多功能科学计算器 二.内容: (1)概述或引言 开发环境为Visual C++ 目前已实现的功能: (1)解二元一次方程.一元二次方程 (2)进行矩阵相加.相减 ...

  6. C语言:多功能计算器 (矩阵相乘)

    好家伙,实现矩阵相乘功能 代码如下: void fifth()//矩阵的相乘// { int a[100][100],b[100][100]; int d,e,f,h,j,k,t; double su ...

  7. C语言实现简单计算器小项目

    昨天刚安装上devc++,半夜想着练练C语言吧 于是就看到实验楼有一个计算器的项目 之前做过一次,这次写的主要是思路 首先我们先从原理思考jia,实现简单的计算器就要具备加减乘除这些,看普通的计算器也 ...

  8. Android app应用多语言切换功能实现

    最近在做一个多语言切换的功能,类似于微信的语言切换,搜了下资料基本上都是以下这种: 1. 实现的效果 和微信类似,在设置界面打开切换语言的界面,选择语言后重启 HomeActivity,语言切换完成, ...

  9. C语言,简单计算器【上】

    由于工作需要最近在研究PHP扩展,无可避免的涉及到了C语言.从出了学校以后C语言在实际工作中还没有用到过,所以必须要先进行一点复习工作.个人认为对于熟悉一样东西说最好的方法是上手实践.于是便想起了当时 ...

随机推荐

  1. Day02 HTML语法

    有两种类型的标签 双标记<标记名>内容</标记名> 单标记<标记名/> 属性: 对标签的描述--属性,由属性名和属性值组成 <标记名 属性名 = " ...

  2. final关键字用于修饰局部变量和修饰成员变量

    修饰变量 1. 局部变量--基本类型 基本类型的局部变量,被fifinal修饰后,只能赋值一次,不能再更改.代码如下: public class FinalDemo1 { public static ...

  3. java的方法(类似与C语言函数)

    package www.nihao; import java.util.Scanner; public class demo02 { public static void main(String[] ...

  4. 总结几个简单好用的Python人脸识别算法

    原文连接:https://mp.weixin.qq.com/s/3BgDld9hILPLCIlyysZs6Q 哈喽,大家好. 今天给大家总结几个简单.好用的人脸识别算法. 人脸识别是计算机视觉中比较常 ...

  5. 【实操填坑】在树莓派上编译 EtherCAT IgH Master 主站程序

    官网下载地址:https://etherlab.org/download/ethercat/  (可list查看文件列表)https://etherlab.org/download/ethercat/ ...

  6. Linux安装mysql8.0.29详细教程

    ​ 我在上午卸载了陪伴我多年的mysql5.7,现在准备安装mysql8.0. 一.登录mysql官网下载mysql安装包(我的系统是Centos7) MySQL :: Download MySQL ...

  7. python 操作pdf文档

    简介 在实际项目中,我们有可能需要提取当中的部分内容并导出,给PDF文件添加水印,合并多份PDF文件等等,而本文会着重用到PyPDF2模块来玩转PDF文档,以及tabula模块来对PDF文档中的表格数 ...

  8. 【Azure 应用服务】本地创建Azure Function Kafka Trigger 函数和Kafka output的HTTP Trigger函数实验

    问题描述 在上一篇博文(https://www.cnblogs.com/lulight/p/16525902.html)中,我们成功的以VM作为Kafka服务器运行,并且验证了从其他机器中远程访问.在 ...

  9. 模板库 ~ Template library

    TOC 建议使用 Ctrl+F 搜索 . 目录 小工具 / C++ Tricks NOI Linux 1.0 快速读入 / 快速输出 简易小工具 无序映射器 简易调试器 文件 IO 位运算 Smart ...

  10. PHP小知识收集

    PEAR 是"PHP Extension and Application Repository"的缩写,即PHP扩展和应用仓库. PECL 是"PHP Extension ...