用c
用c 编写一个程序,输入两个实数和一个四则运算符( ,-,*,/),根据运算符执行相应的运算并输出结果?
编写一个程序,输入两个实数和一个四则运算符( ,-,*,/),根据运算符执行相应的运算并输出结果?
运算符算术运算符运算符举例 加 a b-减 a-b*乘 a*b/除 a/b求余 ab加减和乘法运算符不必多说,我们来看看除法运算符和求余运算符除法运算符两个实数相除的结果为双精度实数,两个整数相除的结果为整数(一般向0取整)例如:5/3 运行结果为1,舍去了小数部分根据整数除法特性:四舍五入 设计方法四舍五入到个位 #includestdio.h int main() { float n 1.525f; //float n 1.425f; printf(d, (int)(n * 10 5)/10); //四舍五入到个位 输出为 2 return 0; } 四舍五入到小数点后两位 #includestdio.h int main() { float n 1.525f; printf(f, (int)(n*100 0.5)/100.0); //四舍五入到小数点后两位 return 0; } 当然也有函数可以实现四舍五入stdio.h里面有个 round() 函数 将浮点值舍入为最接近的整数。 #includestdio.h #includemath.h int main() { float n 1.525f; printf(f, round(n)); //输出为 2.000000 return 0; } 求余运算符求余只能两个整数求余利用求余得到整数的各个位数:水仙花数 算法 #includestdio.h int main() { int i,n,m,l; for(i100;i999;i ) { ni/100; //百位数 mi0/10; //十位数 li; //个位数 if(in*n*n m*m*m l*l*l) //判断水仙花数 { printf(d
,i); } } printf(
); return 0; } 关系运算符和逻辑运算符关系运算符关系运算符和逻辑运算符主要用在分支和循环里面作为条件判断真假比较的结果有两种状态 1 和 0 真(1)和假(0)关系运算符举例小于 12 为假,结果为0大于 12 为真,结果为2大于等于 12 为假,结果为0小于等于 12 为真,结果为1等于 12 为假,结果为0!不等于 1!2 为真,结果为1对于小数 浮点型数据不够精确 一般不用0.009x0.011 这种数学表达式就禁用了,要用逻辑运算符来连接逻辑运算符 逻辑与左右两个条件都为真 最后的结果为真 否则(只要有一个为假) 结果为假 if(0.009xx0.011){} //这种就是正确的 || 逻辑或左右两边的条件只要有一个为真 结果为真 两边都为假 结果为假 if(x0.009||x0.011){} !逻辑非一般放在一个条件前面 真变假 假变真关于用数字作为条件 0为假 非0为真逻辑运算符的截断逻辑与 两边都为真 结果为真左边为假 直接得到整个式子的结果为假(右边可以不用算) #includestdio.h int main() { int x1; if(0( x)){} printf(d,x); //结果为1 即 x这个代码未执行 return 0; } 逻辑或 左边为真 右边可以不用算(截断)位运算符(二进制运算符)学C语言很少用到二进制,但是,我们需要了解他按位与 对一个二进制数字操作:有0则0 1489 14二进制:1110 89二进制:0101 1001 0000 1110 0101 1001 按位与 0000 1000 结果为:0000 1000(二进制),10(十进制)按位或 |对一个二进制数字操作:有1则1按位异或 ^对一个二进制数字操作:相同为0不同为1按位取反~对一个二进制数字操作:1变0 0变1 ~14 14二进制:0000 1110 0000 1110 按位取反 1111 0001左移 xn 去掉前面的n位 后面补上n个0 142 14二进制:0000 1110 0000 1110 0011 1000 左移补0 结果为0011 1000右移 xn 去掉后面的n位 前面补上n个符号位(正数前面补0 负数前面补1)对于一个正整数 右移一位相当于除以2异或 ^特点:对于同一个数字异或两次会得到它本身 14^87^8714 异或的用法简单的加密zx^y 对x进行加密 az^y 对z进行解密交换两个变量的值 //利用临时变量交换 int temp; tempx; xy; ytemp; //利用异或 xx^y; yx^y; xx^y; //用加减法 xx y; //对于x和y比较大的时候 x y可能超过int范围 yx-y; xx-y; 赋值运算符把一个值赋值给一个变量: 左值 右值 把右值赋值给左值 x4; //4这个值赋值给x这个变量 左值 只能是变量右值 可以是数字 表达式(1 2)条件运算符(三目运算符)条件 表达式1 : 表达式2 //求两个数的最大值 maxaba:b; 其他运算符() 括号运算符改变计算顺序(优先级)类型转换 (float)3/4: 类型转换存在的问题:精度高的数据 转换成精度低的数据 可能会丢失数据类型 char int float double 精度由低到高 (int)(3.14 0.5) 小数强转整数 小数部分全部丢掉 --自增和自减 前 先运算,再自增 int x,y; x0; yx ; //先用x之前的值进行计算 然后 再给x变量加1 //结果y0,x1 后 先自增,再运算 int x,y; x0; y x; //先给x变量加1,再进行计算 //结果y1,x1 前加加,后加加探讨(小白勿看) #includestdio.h int main() { int i 5, j 5, p, q; p (i ) (i ) (i ); q ( j) ( j) ( j); printf(d,d,d,d, p, q, i, j); return 0; } 输出结果:15,22,8,8这个涉及到 前加加先运算,再自增;后加加先自增,再运算 这一特性 #includestdio.h int main() { int i 8; //输出 i printf(d
, i); //i先加一在输出 9 9 printf(d
, --i); //i先减一再输出 8 8 printf(d
, i ); //i输出再加一 8 9 printf(d
, i--); //i输出再减一 9 8 printf(d
, -i ); //i输出再加一 -8 9 printf(d
, -i--); //i输出再减一 -9 8 printf(
-----------------
); i 8; printf(d
d
d
d
d
d
, i, --i, i , i--, -i , -i--);//前加加完成后再后加加 return 0; } //运行结果 9 8 8 9 -8 -9 ----------------- 8 7 8 8 -8 -8 这又涉及到C的特性:语句编译时从右往左 取变量地址scanf(d,a);sizeof 计算变量/类型的大小sizeof(int)逗号运算符 隔开几个表达式 int x; x1,2,3 4,5,7; x最后的值是1 其他[] 下标运算符. 点运算- 箭头运算符*指针运算符() 函数{}语句其他后面介绍优先级这个不需要记,需要用的时候查表就可以从上到下优先级降低 不清楚优先级顺序加()
C语言中,什么时候用void什么时候用int?
当一个函数只需要别人调用,调用该函数的函数不需要得到返回值时用void,当需要从被调函数中返回一个int型数时就用int。
比如比较大小的函数, int max(int a,int b){ return aba:b; } 调用该函数的函数需要知道哪个数大,就得返回一个int型的数;
又如交换两个变量的函数, void swap(int a,int b){ int ca; ab; bc; } 调用该函数的函数知道它的功能就是让这俩变量的值交换,然后不用别的返回值了,所以就用void了