
1 #include<stdioh>
2 void add(int a,int b,int c) //函数add,计算a+b,并赋值给c
3 {
4 c=a+b;
5 printf("%d\t",c);//输出c,/t为转义序列符,水平制表符
6 printf("\n");//转移序列符,换行
7 }
8 void minus(int a,int b,int c) //函数minus,计算a-b,赋值给c
9 {
10 c=a-b;
11 printf("%d\t",c);
12 printf("\n");
13 }
14 void multiplication(int a,int b,int c) //函数
15 {
16 c=ab;
17 printf("%d\t",c);
18 printf("\n");
19 }
20 void div(int a,int b,float c)//函数
21 {
22 c=(float)a/b;//“(float)”强制转换a/b结果为float型
23 printf("%f\t",c);
24 printf("\n");
25 }
26 void main() //主函数
27 {
28 int a,b,c;
29 float d;
30 char p;
31 puts("input A:\n"); //提示用户输入一个数字A,输入“input A:”这句后程序暂停,等待用户输入数字
32 scanf("%d",&a); //用户输入数字并按下回车后,此语句得到用户输入的数字并赋值给a
33 puts("input B:\n");
34 scanf("%d",&b);
35 do{//进入循环
36 puts("input operation:\n"); //提示用户输入运算符
37 getchar(); //函数getchar(),接收用户输入的运算符
38 p=getchar(); //将getchar()接收的字符赋值给p
39 if(p=='+') add(a,b,c);//如果接收的字符为+,运行函数minus,下同
40 else if(p=='-') minus(a,b,c);
41 else if(p=='') multiplication(a,b,c);
42 else if(p=='/') div(a,b,d);
43 else puts("没有注册这个运算符号\n"); //如果输入的都不是+-/,则运行这一句,输出“没有注册这个运算符号”
44 }while(p!='0');//输入0运算符的时候退出,
45 }
程序运行的时候,从mian()函数(26行)开始运行,运行到地39行,根据p的值调用前面4个定义的函数,如果p的值是+,则调用函数add,函数add运行完后,回到main()函数39行,跳过40-43行,进入44行,判断p的值,由于此时p的值是+,不为0,循环继续,程序跳到第35行,继续运行,让用户输入运算符,此时如果用户输入0,程序会输出“没有注册这个运算符号”,程序结束。
本人新手,如有不对请指正,大家一起学习~~
以下是我原来写过的一个关于矩阵的类,里面实现了求方阵的行列式函数:int det(matrix);
//matrixh
//
# ifndef matrix_h
# define matrix_h
class matrix
{
private:
int m;
int n;
double arr[8][8];
public:
matrix();
matrix(double);
void set();// 对矩阵的赋值;
void show();//在屏幕上显示矩阵;
friend int homotype(matrix,matrix);//是否同型;
friend int multipliable(matrix,matrix);
//判断矩阵是否可相乘
friend matrix operator +(matrix,matrix);
//矩阵相加,对加号重载;
friend matrix operator -(matrix,matrix);
//矩阵机减,对减号重载;
friend matrix add(matrix,matrix);
//矩阵相加;
friend matrix minus(matrix,matrix);
//矩阵相减
friend matrix multiply(matrix,matrix);
//矩阵相乘
friend matrix operator (matrix,matrix);
//矩阵相乘,对乘号重载;
friend double det(matrix);
//求方阵的行列式;
int issquare()
{
return m==n;
}
//判断是否为方阵;
matrix left(int x,int y);
//求元素arr[x][y](x,y从0开始)的余子式;
};
# endif
//
//matrixcpp
//下面是对类中成员及友元函数的实现
//
# include <iostreamh>
# include "matrixh"
matrix::matrix()
{
m = 8;
n = 8;
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
arr[i][j] = 0;
}
}
matrix::matrix(double x)
{
m = 1;
n = 1;
arr[0][0] = x;
}
void matrix::set()
{
cout<<"Set the type of the matrix()"<<endl;
cin>>m>>n;
cout<<"Now input the elements of the matrix:"<<endl;
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
cin>>arr[i][j];
}
}
void matrix::show()
{
cout<<"This is the matrix:"<<endl;
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
cout<<arr[i][j]<<ends;
}
cout<<endl;
}
}
int homotype(matrix x,matrix y)
{
if(xm==ym&&xn==yn)
return 1;
else
return 0;
}
int multipliable(matrix x,matrix y)
{
if(xn==ym)
return 1;
else
return 0;
}
matrix add(matrix x,matrix y)
{
matrix z;
if(homotype(x,y))
{
zm = xm;
zn = xn;
for(int i=0;i<zm;i++)
for(int j=0;j<zn;j++)
zarr[i][j] = xarr[i][j] + yarr[i][j];
return z;
}
else
{
cout<<"cannot be added!"<<endl;
return z;
}
}
matrix operator +(matrix x,matrix y)
{
return add(x,y);
}
matrix minus(matrix x,matrix y)
{
matrix z;
if(homotype(x,y))
{
zm = xm;
zn = xn;
for(int i=0;i<zm;i++)
for(int j=0;j<zn;j++)
zarr[i][j] = xarr[i][j] - yarr[i][j];
return z;
}
else
{
cout<<"cannot be added!"<<endl;
return z;
}
}
matrix operator -(matrix x,matrix y)
{
return minus(x,y);
}
matrix multiply(matrix x,matrix y)
{
matrix z;
if(xn!=ym)
{
cout<<"The two matrixes cannot be multiplied"<<endl;
return z;
}
for(int i=0;i<xm;i++)
{
for(int j=0;j<yn;j++)
{
for(int k=0;k<xn;k++)
zarr[i][j] += xarr[i][k]yarr[k][j];
}
}
zm = xm;
zn = yn;
return z;
}
matrix operator (matrix x,matrix y)
{
matrix z;
z = multiply(x,y);
return z;
}
matrix matrix::left(int x,int y)
{
matrix leftmatrix;
if((x>=m)||(y>=n))
{
cout<<"errer"<<endl;
return leftmatrix;
}
/ if(!issquare())
{
cout<<"不是方阵!"<<endl;
return this;
}///
leftmatrixm = m - 1;
leftmatrixn = n - 1;
int testx = 0;
int testy = 0;
for(int i=0;i<leftmatrixm;i++)
{
testy = 0;
for(int j=0;j<leftmatrixn;j++)
{
if(i==x)
testx = 1;
if(j==y)
testy = 1;
if((!testx)&&(!testy))
leftmatrixarr[i][j] = this->arr[i][j];
else if(testx&&(!testy))
leftmatrixarr[i][j] = this->arr[i+1][j];
else if((!testx)&&testy)
leftmatrixarr[i][j] = this->arr[i][j+1];
else
leftmatrixarr[i][j] = this->arr[i+1][j+1];
}
}
return leftmatrix;
}
double det(matrix x)//递归算法
{
if(!xissquare())
{
cout<<"不是方阵!"<<endl;
return 999;
}
if(xm==0)
return 0;
else if(xm==1)
return xarr[0][0];
else if(xm==2)
return (xarr[0][0]xarr[1][1] - xarr[0][1]xarr[1][0]);
else
{
double num = 0;
int a = 1;
for(int i=0;i<xm;i++)
{
num = num + axarr[0][i]det(xleft(0,i));
//按第0行展开
a = -a;
}
return num;
}
}
//
首先,我必须说明:函数名就是函数指针,这点请记住。在C/C++中函数的名称其实就是一个指针变量,用来记录内存中函数的位置。这样才能调用。
结果本来就是8
你先调用的7+5 = 12
然后又用20-12 =8
代码如下,加入一定的容错,还待进一步完善!(VS2010通过,因使用了__min,VC++6中可使用min)
#include <stdioh>
#include <conioh>
#include <stdlibh>
int main(void)
{
int iApple, iOrange, i, t, iLine = 0;
printf("请输入2个小于9999的整数,用逗号分隔:\n");
for(; 2 != scanf("%4d,%4d", &iApple, &iOrange); ) /对溢出输入、数字字母混合输入进行处理/
{
MINUS:
fflush(stdin);
printf("非法输入!请重新输入:\n");
}
if(iApple <= 0 || iOrange <= 0) /对负数输入进行处理/
goto MINUS; /为了节约代码,只想到使用goto,见笑/
t = __min(iApple, iOrange);
for(i = 1; i <= t / 2; i++)
if((iApple % i == 0) && (iOrange % i == 0))
printf("%d 分成%d份 其中每份苹果%d个橘子%d个\n", ++iLine,i, iApple / i, iOrange / i);
return(0);
}
#include<stdioh>
void add(int a,int b,int c)
{
c=a+b;
printf("%d\t",c);
printf("\n");
}
void minus(int a,int b,int c)
{
c=a-b;
printf("%d\t",c);
printf("\n");
}
void multiplication(int a,int b,int c)
{
c=ab;
printf("%d\t",c);
printf("\n");
}
void div(int a,int b,int c)
{
c=(float)a/(float)b;
printf("%f\t",c);
printf("\n");
}
main()
{
int a,b,c;
char p;
puts("input A:\n");
scanf("%d",&a);
puts("input B:\n");
scanf("%d",&b);
puts("input operation:\n");
getchar();
p=getchar();
if(p=='+') add(a,b,c);else
if(p=='-') minus(a,b,c);else
if(p=='') multiplication(a,b,c);else
if(p=='/') div(a,b,c);else
puts("没有注册这个运算符号\n");
}
以上是设计的一个简易计算器。可以进行相应的加减乘除。
简介:C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的DMRitchie于1972年推出,1978年后,C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画,具体应用比如单片机以及嵌入式系统开发。
//注意,没有考虑/和+-的优先级。
import javaxswing;
import javaawt;
import javaawtevent;
public class Calculator3 extends JFrame implements ActionListener {
private boolean dotExist, operated, equaled; // 帮助运算的布尔变量
private double storedNumber; // 目前的结果
private char lastOperator; // 表示上一运算符
private JTextField operation; // 结果栏
private JButton dot, plus, minus, multi, div, sqrt, equal, changePN, clear; // 运算符
private JButton[] numbers; // 数字
// 构造者
public Calculator3() {
setTitle("Calculator");
// 初始化变量
dotExist = false; // 表示当前的数是否有小数点
operated = false; // 表示任意运算符是否被按下
equaled = false; // 表示等号是否被按下
storedNumber = 0;
lastOperator = '';
// 初始化窗口变量
operation = new JTextField("0");
operationsetEditable(false);
numbers = new JButton[10];
for (int i = 0; i < 10; i++)
numbers[i] = new JButton("" + i);
dot = new JButton("");
plus = new JButton("+");
minus = new JButton("-");
multi = new JButton("");
div = new JButton("/");
sqrt = new JButton("√");
equal = new JButton("=");
changePN = new JButton("±");
clear = new JButton("AC");
// 将窗口物体放入窗口
GridBagLayout layout = new GridBagLayout();
getContentPane()setLayout(layout);
addComponent(layout, operation, 0, 0, 4, 1);
addComponent(layout, numbers[1], 1, 0, 1, 1);
addComponent(layout, numbers[2], 1, 1, 1, 1);
addComponent(layout, numbers[3], 1, 2, 1, 1);
addComponent(layout, numbers[4], 2, 0, 1, 1);
addComponent(layout, numbers[5], 2, 1, 1, 1);
addComponent(layout, numbers[6], 2, 2, 1, 1);
addComponent(layout, numbers[7], 3, 0, 1, 1);
addComponent(layout, numbers[8], 3, 1, 1, 1);
addComponent(layout, numbers[9], 3, 2, 1, 1);
addComponent(layout, dot, 4, 0, 1, 1);
addComponent(layout, numbers[0], 4, 1, 1, 1);
addComponent(layout, sqrt, 4, 2, 1, 1);
addComponent(layout, plus, 1, 3, 1, 1);
addComponent(layout, minus, 2, 3, 1, 1);
addComponent(layout, multi, 3, 3, 1, 1);
addComponent(layout, div, 4, 3, 1, 1);
addComponent(layout, equal, 5, 0, 2, 1);
addComponent(layout, changePN, 5, 2, 1, 1);
addComponent(layout, clear, 5, 3, 1, 1);
}
// 对按钮进行反应的方法
public void actionPerformed(ActionEvent e) {
JButton btn = (JButton) egetSource();
if (btn == clear) {
operationsetText("0");
dotExist = false;
storedNumber = 0;
lastOperator = '';
} else if (btn == equal) {
operate('=');
equaled = true;
} else if (btn == plus) {
operate('+');
equaled = false;
} else if (btn == minus) {
operate('-');
equaled = false;
} else if (btn == multi) {
operate('');
equaled = false;
} else if (btn == div) {
operate('/');
equaled = false;
} else if (btn == changePN) {
operate('p');
operate('=');
equaled = true;
} else if (btn == sqrt) {
operate('s');
operate('=');
equaled = true;
} else {
if (equaled)
storedNumber = 0;
for (int i = 0; i < 10; i++)
if (btn == numbers[i]) {
if (operationgetText()equals("0"))
operationsetText("" + i);
else if (!operated)
operationsetText(operationgetText() + i);
else {
operationsetText("" + i);
operated = false;
}
}
if (btn == dot && !dotExist) {
operationsetText(operationgetText() + "");
dotExist = true;
}
}
}
// 进行运算的方法
private void operate(char operator) {
double currentNumber = DoublevalueOf(operationgetText())
doubleValue();
if (lastOperator == '')
storedNumber = currentNumber;
else if (lastOperator == '+')
storedNumber += currentNumber;
else if (lastOperator == '-')
storedNumber -= currentNumber;
else if (lastOperator == '')
storedNumber = currentNumber;
else if (lastOperator == '/')
storedNumber /= currentNumber;
else if (lastOperator == 'p')
storedNumber = -1;
else if (lastOperator == 's')
storedNumber = Mathsqrt(currentNumber);
else if (lastOperator == '=' && equaled)
storedNumber = currentNumber;
operationsetText("" + storedNumber);
operated = true;
lastOperator = operator;
}
// 快捷使用GridBagLayout的方法
private void addComponent(GridBagLayout layout, Component component,
int row, int col, int width, int height) {
GridBagConstraints constraints = new GridBagConstraints();
constraintsfill = GridBagConstraintsBOTH;
constraintsinsets = new Insets(10, 2, 10, 2);
constraintsweightx = 100;
constraintsweighty = 100;
constraintsgridx = col;
constraintsgridy = row;
constraintsgridwidth = width;
constraintsgridheight = height;
layoutsetConstraints(component, constraints);
if (component instanceof JButton)
((JButton) component)addActionListener(this);
getContentPane()add(component);
}
// 主方法初始化并显示窗口
public static void main(String[] args) {
Calculator3 calc = new Calculator3();
calcsetSize(290, 400);
calcsetVisible(true);
}
}
以上就是关于c程序分析全部的内容,包括:c程序分析、求一个 计算矩阵行列式 的C或C++程序!、一段简单的c++程序,大家帮我看一下~等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)