int _tmain(int argc, _TCHAR argv[])
{
char string[10];
char operates[] = {'+','-','','/'};
int i, j, temp;
int num1 = 0, num2 = 0, result;
char operate = '0';
printf("Hello, input string:\r\n");
scanf("%s", string);
for (i = 0; i < strlen(string); i++)
{
for (j = 0; j < sizeof(operates); j++)
{
if (string[i] == operates[j])
{
operate = operates[j];
break;;
}
}
if (operate != '0')
{
for (temp = 0; temp < i; temp++)
{
num1 = num1 10 + string[temp] - '0';
}
for (temp = i+1; temp < strlen(string); temp++)
{
num2= num2 10 + string[temp] - '0';
}
break;
}
}
switch (operate)
{
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '':
result = num1 num2;
break;
case '/':
result = num1 / num2;
break;
}
printf("%s = %d\r\n", string, result);
return 0;
}
///////////
这个没有对输入进行检查, 你如果想更完善的话,可以加上对输入进行检查。
输入
123+2
23
输出
125
61、乘号 就是星号键,间接运算符 可以用()。
2、常用的运算符号及优先级别:
1级(左结合)
( ) 圆括号;[ ]下标运算符;->指向结构体成员运算符; 结构体成员运算符。
2级(右结合)
“ ! ”逻辑非运算符;“ ~ ”按位取反运算符;“ ++ ”前缀增量运算符;“ -- ”前缀减量运算符;
“ - ”负号运算符;(类型)类型转换运算符;“ ”指针运算符;“ & ”地址运算符;
“sizeof ” 长度运算符。
3级(左结合)
“ ” 乘法运算符;“ / ” 除法运算符;“ % ” 取余运算符。
4级(左结合)
“ + ”加法运算符;“ - ”减法运算符。
5级(左结合)
<< 左移运算符;>> 右移运算符。
6级(左结合)
、>=关系运算符。
7级(左结合)
“ == ”等于运算符;“ != ”不等于运算符。
8级(左结合)
“ & ”按位与运算符。
9级(左结合)
“ ∧ ”按位异或运算符。
10级(左结合)
“ | ”按位或运算符。
11级(左结合)
“&&”逻辑与运算符。
12级(左结合)
“ || ”逻辑或运算符。
13级(右结合)
:条件运算符。
14级(右结合)
=、 +=、 -=、 =、 /=、 %=、 &=、 ^=、 |=、 <<=、 >>=赋值运算符。
15级(左结合)
“,” 逗号运算符。_这个其实不是符号,是个中文汉字,读kuài,大家想要的是《》这个书名号的符号,有很多小伙伴还不知道怎么在电脑上打出来这个符号,下面就来教一教大家,简单两步就能搞定哦!一起来看看吧。
这个符号电脑怎么打共需要两步,可以通过键盘快捷键实现,以下为具体 *** 作步骤。
1、在中文输入法下,按住shift键不松。
2、同时按住如图所示的,键,即可打出《符号。
python支持:数学运算符、逻辑运算符、比较运算符、赋值运算符、(位运算符)
其中:+、-、、/,与数学中的加减乘除一样
整除(//),两数相除结果只取整数部分
取余(%),两数相除取余数
幂运算(),x y 即为(求x的y次方)
可用于开方。如下:
注意:运算符的运算不一定非得是数据,也可是存数据的变量
所有比较运算符的值都是布尔值(False/True)
补充:is的使用
一个变量有三要素,分别是:类型(变量中存储的数据的类型)、值(变量中存储的数据)、
地址(变量存储的真正内容,数据的地址)
(==)和is的区别:
注意:变量中若是存储的数据为数字和字符串,则地址相同
(变量中存储的数据为数字和字符串)示例:
与比较运算符的运算对象和值都是一样的,值都为布尔值
应用:要求同时满足多个条件的时候就用逻辑与运算
练习:能否获得奖学金条件,成绩90分以上以及测评分不能低于95
False or False --> False
运算技巧:只要存在True,则结果为True
应用:要求多个条件只要有一个条件满足就使用逻辑或运算
练习:是否降班条件,考试分数低于60,或者不在教室
not False = True
not True = False
是否漂亮,评分大于5则为漂亮
所有的赋值运算符,要求运算符的左边必须是变量;右边是有结果的(值)
其他赋值运算符中除(=)外,运算方法与以上一致
数学运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符
优先级高的先算,优先级低的后算。如果有(),先算()里面的
数学运算符中的优先级: > ,/,%,// > +,-
1int:包含所有的整数,支持十进制、二进制、八进制、十六进制
2float:包含所有的小数,支持科学计数法
3布尔(bool)类型:值只有True和False,数学运算中 True == 1 ,False == 0
4复数(complex)型:实部 + 虚部(通常用j来表示虚部,j前面的数字不能省略)
1,认识字符串:
通过单引号或者双引号括起来的字符集(文本)就是字符串
什么是字符 :python中只有字符的概念,没有字符的类型,如果要表示一个字符,用一个长度是1的'字符串'来表示
字符串是不可变的,但是有序--》(长度不可变,字符内容不可变,有序指的是每个字符在字符串中的位置是不变的)
2字符串类型(str):str是python自己提供的一种容器型数据类型
容器型数据类型的特点:一个字符串中可以存储多个字符
3字符串中的字符
注意: 1没有阻止转义时,一个转义字符的长度是1
2可以在字符串的最前面加r/R来阻止转义(阻止字符串中的所有转义字符转义)
如下:
例如:
4字符编码:字符的编码就是为了把字符存到计算机里面,给每个字符一个固定的编号(数字组成)
计算机在存储数据的时候只能存数字数据,而且存的是数字的二进制的补码
数字存储:列如 10—> 转换成二进制 -> 求补码(存储)
目前采用的两种编码方式:ASCII码表(128个字符)和Unicode编码表(相当于ASCII码表的扩充,
采用两个字节对字符进行编码,包含世界上所有的语言和符号,又称万国码)。python采用的是Unicode编码表
小写字母的编码范围(a-z):97 - 122
大写字母的编码范围(A-Z):65 - 90
中文编码范围:0x4e00 - 0x9fa5
函数应用:
1、一个字符串里面包含运算符,要转成正常运算的运算符,可以用 宏指令。相当于直接执行语句。宏指令在不同语言中执行方式不同的。
2、例程:
#include<stdioh>
#include<stdlibh>
typedef struct
{
int base;
int top;
int size;
} stack_i;
void initStack_I(stack_i int_sta)
{
int_sta->base = (int )malloc(sizeof(int) 100);
int_sta->top = int_sta->base;
int_sta->size = 100;
}
void deleteStack_I(stack_i int_sta)
{
free(int_sta->base);
}
void push_I(stack_i int_sta, int i)
{
if(int_sta->top - int_sta->base >= int_sta->size)
{
return;
}
(int_sta->top++) = i;
}
void pop_I(stack_i int_sta, int i)
{
if(int_sta->top == int_sta->base)
{
return;
}
i = (--int_sta->top);
}
int main(void)
{
int i;
int temp, temp1;
int sum = 0;
char c; //当前字符
char lastc = 0; //上一个字符
stack_i IS;
initStack_I(&IS);
scanf("%d", &i); //接收第一个数字
push_I(&IS, i); //压栈
while(1)
{
scanf("%c", &c); //接收第一个字符
if(c == '\n') //换行符就退出
{
break;
}
switch(c)
{
case '+':
if(lastc == '+') //上次也是一个加号的话
{
pop_I(&IS, &temp); //d出上一个数字
pop_I(&IS, &temp1); //d出上一个数字
sum = temp + temp1; //加法计算
push_I(&IS, sum); //新的结果压栈
}
scanf("%d", &i); //接收一个数字进来
push_I(&IS, i); //压栈
lastc = c;
break;
case '':
scanf("%d", &i); //接收一个数字进来
pop_I(&IS, &temp); //d出上一个数字
sum = i temp; //乘法计算
push_I(&IS, sum); //新的结果压栈
break;
}
}
temp1 = 0;
pop_I(&IS, &temp);
pop_I(&IS, &temp1);
sum = temp + temp1;
printf("%d\n", sum);
deleteStack_I(&IS);
return 0;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)