『壹』 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)=='