‘壹’ c语言怎么进行算术运算
#include "stdio.h" void main() { int a,b,c; scanf("%d%d",&a,&b); c=a+b; printf("%d\n",c); getch(); }
具体如下:
1、简介C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
2、基本介绍
C语言,是一种通用的、过程式的编程语言,广泛用于系统与应用软件的开发。具有高效、灵活、功能丰富、表达力强和较高的移植性等特点,在程序员中备受青睐。最近25年是使用最为广泛的编程语言。
3、运算
C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单,但初学者往往会觉的这种表达式难读,关键原因就是对运算符和运算顺序理解不透不全。当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则显得十分重要。在学习中,对此合理进行分类,找出它们与数学中所学到运算之间的不同点之后,记住这些运算也就不困难了,有些运算符在理解后更会牢记心中,将来用起来得心应手,而有些可暂时放弃不记,等用到时再记不迟。
‘贰’ c语言中x+a%3*(int)(x+y)%2/4 x=2.5 a=7 y=4.7
解题步骤:
1、(int)(2.5+4.7)=(int)(7.2)=7,式子变 x + a%3 *7 %2/4;
2、a%3=1,式子变 x + 1 *7 %2/4;
3、1*7=7,式子变 x + 7 %2/4;
4、7 %2=1,式子变 x+1/4;
5、1/4 整数除整数的除法先做,商得 0,式子变 x + 0;
6、x+0=2.5 + 0=2.5,答案2.5。
字符解释:
(int)(x+y) -- 括号里的先做
2/4 -- 整数2除以整数4,得整数0,但这里前面还有运算符%,所以你不能先做2除以4的整数除法。
% 是整数与整数的除法求余数运算,得余数,(略去商)。
2.0/4.0 -- 浮点数除以浮点数,得浮点数的商 0.5。
(2)c语言算术编程扩展阅读:
C语言算术编程示例:
#include <stdio.h>
int main()
{
int a = 21;
int b = 10;
int c ;
c = a + b;
printf("Line 1 - c 的值是 %d ", c );
c = a - b;
printf("Line 2 - c 的值是 %d ", c );
c = a * b;
printf("Line 3 - c 的值是 %d ", c );
c = a / b;
printf("Line 4 - c 的值是 %d ", c );
c = a % b; printf("Line 5 - c 的值是 %d ", c );
c = a++; // 赋值后再加 1 ,c 为 21,a 为 22
printf("Line 6 - c 的值是 %d ", c );
c = a--; // 赋值后再减 1 ,c 为 22 ,a 为 21
printf("Line 7 - c 的值是 %d ", c );
}
‘叁’ 用C语言编写程序“算术表达式求值”
#include <stdio.h>
#include <math.h>
enum state
;
int ctoi( char c)
bool isNum( char a)
bool isOp(char op)
{
switch(op)
{
case '+':
return true;
break;
case '-':
return true;
break;
case '*':
return true;
break;
case '/':
return true;
break;
default:
return false;
break;
}
}
bool isDot(char dot)
int checkString( char str[], double *a, double * b, char* op, int num)
{
enum state s = BEGIN;
int a_i = 0;
int b_i = 0;
double num1 = 0;
double num2 = 0;
int pointNum = 0;
for( int i = 0; i < num; ++i)
{
if(str[i] == ' ')continue;
switch(s)
{
case BEGIN:
if(isNum(str[i]))
elses = ERROR;
break;
case P2:
if(isNum(str[i]))
else if(isDot(str[i]))
{
s = P3;
}
else if(isOp(str[i]))
{
*op = str[i];
s = P5;
}
else
s = ERROR;
break;
case P3:
if(isNum(str[i]))
{
num1 = num1 + ctoi(str[i]) * pow(0.1, ++pointNum) ;
s = P4;
}
else
s = ERROR;
break;
case P4:
if(isNum(str[i]))
{
num1 = num1 + ctoi(str[i]) * pow(0.1, ++pointNum);
s = P4;
}
else if(isOp(str[i]))
{
*op = str[i];
s = P5;
}
else
s = ERROR;
break;
case P5:
if(isNum(str[i]))
{
num2 = num2 * 10 + ctoi(str[i]);
s = P6;
}
else
s = ERROR;
break;
case P6:
pointNum = 0;
if(isNum(str[i]))
{
num2 = num2 * 10 + ctoi(str[i]);
s = P6;
}
else if(isDot(str[i]))
{
s = P7;
}
else
s = END;
break;
case P7:
if(isNum(str[i]))
{
num2 = num2 + ctoi(str[i]) * pow(0.1, ++pointNum);
s = P8;
}
else
s = END;
break;
case 8:
if(isNum(str[i]))
{
num2 = num2 + ctoi(str[i]) * pow(0.1, ++pointNum);
s = P8;
}
else if(isOp(str[i]))
{
s = END;
}
else
s = END;
break;
case ERROR:
printf("express error. \n");
break;
}
if (s == END || s == ERROR)
break;
}
if(s==END)
else
}
int main()
{
char op;
double a;
double b;
char string[128] = ;
scanf("%s", &string);
printf("the expression you input is : %s. \n", string);
getchar();
if (-1 == checkString(string, &a, &b, &op, 128))
{
printf("error occur while checking expression. Be sure no space in your expression when input\n");
getchar();
return 0;
}
double result;
switch(op)
{
case '+':
result = a + b;
break;
case '-':
result = a - b;
break;
case '*':
result = a * b;
break;
case '/':
if(b != 0)
result = a / b;
else
{
printf(" error! %d/%d", a, b);
return -1;
}
break;
default:
printf("undefined expression.\n");
break;
}
printf("%f %c %f = %f\n", a, op, b, result);
return 0;
}
‘肆’ C语言程序设计-算术运算符 编程,把变量x中的3位数213的百位、十位、个位拆出
其中a,b,c和a2,b2,c2是x213的百,十,个位,望采纳
‘伍’ c语言,编程求助,算术题
一个较系统的方法是:
每个字母设置两种状态,已知和未知。
进行回朔搜索。从个位搜索起,等式左边的T,Q先进行0-9的搜索,且将T,Q的状态设置成已知。这时搜索E的值,可以很快得到结果,也将其设置成已知。然后搜索十位,此时T的值已知,搜索未知的字母,另G+N+N=T为进行下一层搜索的条件(如果个位有进位,等式左边要加1),把矛盾的情况排除。以此类推,搜索百位,千位,由于有回朔,所以搜索的速度会快很多。这是一个DFS。
闲着无聊,写了一下程序。结果按vingtcqre的顺序为999219919。
#include
<stdio.h>
#include
<string.h>
int
f[6][9];//存储原等式
int
r[9];//结果
char
k[9];//Known?
int
find(int
level,
int
j,
int
c/*进位*/)
{
if(level
==
6)
return
1;
if(j
==
9)
{
int
t=c;
for(int
i
=
0;
i
<
9;
++i)
t
+=
r[i]
*
f[level][i];
if(t
%
10
!=
0)
return
0;
return
find(level
+
1,
0,
t
/
10);
}
if(!k[j]
&&
f[level][j])
{
k[j]
=
1;
for(int
i
=
9;
i>=
0;
--i)
{
r[j]
=
i;
if(find(level,
j+1,
c))
return
1;
}
k[j]
=
0;
return
0;
}
else
{
return
find(level,
j+1,
c);
}
}
int
main()
{
memset(f,
0,
sizeof(f));
memset(r,
0,
sizeof(r));
memset(k,
0,
sizeof(k));
//按vingtcqre的顺序
f[0][4]
=
1;
f[0][6]
=
2;
f[0][8]
=
-1;
f[1][3]
=
1;
f[1][2]
=
2;
f[1][4]
=
-1;
f[2][1]
=
2;
f[3][1]
=
1;
f[3][5]
=
2;
f[3][8]
=
-1;
f[4][0]
=
1;
f[4][7]
=
-1;
f[5][4]
=
-1;
find(0,
0,
0);
//这时r中按vingtcqre的顺序保存结果。
return
0;
}
‘陆’ 编程c语言或者c++计算 算术表达式
Add brackets for calculationpriority:
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#include"iostream"
usingnamespacestd;
/*checkifthiselementisanumber*/
/*a:string*/
/*b:lengthofthestring*/
intisThisSingleNumber(char*a,intb)
{
for(inti=1;i<b-1;i++)
{
if(*(a+i)=='+'||*(a+i)=='-'||*(a+i)=='*'
||*(a+i)=='/'||*(a+i)=='('||*(a+i)==')')
return0;
}
return1;
}
/*insertanCharacter*/
/*a:inserthere*/
/*b:insertcharacter*/
voidinsertChar(char*a,charb)
{
char*al=newchar[strlen(a)+1];
memset(al,0,strlen(a)+1);
memcpy(al,a,strlen(a));
*a=b;
memcpy(a+1,al,strlen(al)+1);
}
/*findtheendoftheElement*/
/*a:startcharacteroftheelement*/
/*return:lengthoftheElement*/
intfindElementEnd(char*a)
{
intcount=0;
intflag=0;
for(;1;count++)
{
if(*(a+count)=='(')
flag++;
elseif(*(a+count)==')')
flag--;
if(flag==0)
break;
}
returncount+1;
}
/**/
char*findLastElement(char*a)
{
intcount=1;
intflag=0;
for(;1;count++)
{
if(*(a-count)==')')
flag++;
elseif(*(a-count)=='(')
flag--;
if(flag==0)
break;
}
returna-count;
}
/**/
char*findNextElement(char*a)
{
intcount=1;
intflag=0;
for(;1;count++)
{
if(*(a+count)=='(')
flag++;
elseif(*(a+count)==')')
flag--;
if(flag==0)
break;
}
returna+count+1;
}
/*addbracket,*/
voidaddBracket(char*a)
{
//addBracketsfornumber
for(inti=0;1;i++)
{
if(*(a+i)>='0'&&*(a+i)<='9'&&(*(a+i-1)<'0'
||*(a+i-1)>'9'))
{
insertChar(a+i,'(');
i++;
}
elseif(i>0&&(*(a+i)<'0'||*(a+i)>'9')&&*(a+i-1)>='0'
&&*(a+i-1)<='9')
{
insertChar(a+i,')');
i++;
}
if(*(a+i)=='