c程序分析

c程序分析,第1张

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++程序,大家帮我看一下~等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9650575.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存