字符串处理函数
作业:求一元二次方程的根
//
// main.c
// 一元二次方程求解
// Created by 丁小未 on 13-7-9.
// Copyright (c) 2013年 dingxiaowei. All rights reserved.
#include <stdio.h>
#include <math.h>
float O(float a,float b,float c)
{
float res = b*b-4*a*c;
if(res<0)
{
return -1;
}
else
return res;
}
int main(int argc, const char * argv[])
float a,b,c;
char flag='y';
printf("*******欢迎使用一元二次方程求根系统***************\n");
do
do {
printf("\n`请输入一元二次方程的a,b,c参数(例如1,4,4):");
scanf("%f,%f,%f",&a,&b,&c);
} while (0==a);
float res;
float x,y;
res=O(a, b, c);
if (res<0)
printf("方程无解!");
if(b*b==4*a*c)
x=(-b)/2*a;
printf("方程的解:X=Y=%.2f",x);
if(res>0)
x=(-b+sqrtf(res))/2*a;
y=(-b-sqrtf(res))/2*a;
printf("方程的解:\nX=%.2f\nY=%.2f",x,y);
printf("\n您想继续吗?(y/n)");
flag = getchar(); //要输入两次是清除之前获取到的留在缓存中的'\n'
flag = getchar();
}while ('y'==flag);
return 0;

运算符的先后顺序(整理)
优先级
运算符
名称或含义
使用形式
结合方向
说明
1
[]
数组下标
数组名[常量表达式]
左到右
()
圆括号
(表达式)/函数名(形参表)
.
成员选择(对象)
对象.成员名
->
成员选择(指针)
对象指针->成员名
2
-
负号运算符
-表达式
右到左
单目运算符
(类型)
强制类型转换
(数据类型)表达式
++
自增运算符
++变量名/变量名++
--
自减运算符
--变量名/变量名--
*
取值运算符
*指针变量
&
取地址运算符
&变量名
!
逻辑非运算符
!表达式
~
按位取反运算符
~表达式
sizeof
长度运算符
sizeof(表达式)
3
/
除
表达式/表达式
双目运算符
乘
表达式*表达式
%
余数(取模)
整型表达式/整型表达式
4
+
加
表达式+表达式
减
表达式-表达式
5
<<
左移
变量<<表达式
>>
右移
变量>>表达式
6
>
大于
表达式>表达式
>=
大于等于
表达式>=表达式
<
小于
表达式<表达式
<=
小于等于
表达式<=表达式
7
==
等于
表达式==表达式
!=
不等于
表达式!= 表达式
8
按位与
表达式&表达式
9
^
按位异或
表达式^表达式
10
|
按位或
表达式|表达式
11
&&
逻辑与
表达式&&表达式
12
||
逻辑或
表达式||表达式
13
?:
条件运算符
表达式1? 表达式2: 表达式3
三目运算符
14
=
赋值运算符
变量=表达式
/=
除后赋值
变量/=表达式
*=
乘后赋值
变量*=表达式
%=
取模后赋值
变量%=表达式
+=
加后赋值
变量+=表达式
-=
减后赋值
变量-=表达式
<<=
左移后赋值
变量<<=表达式
>>=
右移后赋值
变量>>=表达式
&=
按位与后赋值
变量&=表达式
^=
按位异或后赋值
变量^=表达式
|=
按位或后赋值
变量|=表达式
15
,
逗号运算符
表达式,表达式,…
从左向右顺序运算
说明:
同一优先级的运算符,运算次序由结合方向所决定。
简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符
不用第三个参数实现a,b互换
方法一:
a=a+b;
b=a-b;
a=a-b;
方法二:
a=a^b;
b=a^b;