//求方程根
#include <stdio.h>
#include <math.h>
int main()
{
double a,b,c,disc,x1,x2,p,q;
sacnf("%lf%lf%lf",&a,&b,&c);
disc = b*b-4*a*c;
if ( disc < 0 )
printf("This equaiton hasn't real roots\n");
else
{
p = -b/(2.0*a);
q = sqrt(disc)/(2.0*a);
x1 = p+q;
x2 = p-q;
printf("real roots:\nx1 = %7.2f\nx2 = %7.2f\n",x1,x2);
}
return 0;
}
//若a>b,a,b的值互换
if(a>b)
{
t = a;
a = b;
b = t;
}
输入双精度实型数据,不能用%f格式声明,而应当用%lf格式声明;输出双精度实型数据,可以用%f,%lf或%m.nf,以指定输出的精度。
//输入3个数,a,b,c要求按由小到大的顺序输出
float a,b,c,t;
scanf("%f,%f,%f",&a,&b,&c);
if(a>b){t=a;a=b;b=t;}
if(a>c){t=a;a=c;c=t;}
if(b>c){t=b;b=c;c=t;}
if语句的一般形式
if(表达式)语句1
[else 语句2]
三种形式
1、if(表达式)语句1
2、if(表达式)语句1 else 语句2
3、if(表达式) 语句1 else if (表达式2) 语句2 else if(表达式3) 语句3 ……else 语句n
关系运算符
< <= > >= == !=
前4种优先级大于后2种
关系运算符低于算术运算符,高于赋值运算符
逻辑运算符
&& || !
优先级 ! > && > ||
条件运算符 - C语言中唯一一个三目运算符
表达式1?表达式2:表达式3 (表达式1成立,运算表达式2,否则运算表达式3)
//判断字符是否为大写字母,如果是,转换成小写字母
char ch;
scanf("%c",&ch);
ch = (ch >= 'A' && ch <= 'Z')?(ch+32):ch;
printf("%c\n",ch);
if的嵌套
if( )
if( ) 语句1
else 语句2
else
if( ) 语句3
else 语句4
switch - 多分支选择语句
char grade;
scanf("%c",&grade);
printf("Your score: ");
switch(grade)
{
case 'A' : printf("85~100\n");break;
case 'B' : printf("70~84\n");break;
default : printg(" enter data error!\n");
}
break语句 - 使流程转到switch语句的末尾,否则若输入A,将从第一句进入,执行到末尾,输入B,从第二局进入,执行到末尾。
一般形式
switch ( 表达式)
{
case 常量1 :语句1
case 常量2 :语句2
……
case 常量n :语句n
default :语句n+1
}
当整型表达式和其中一个常量表达式(标签)相同则进入。
switch(表达式)中表达式其值的类型应为整数类型(包括字符型)
可以没用default标号;case只起标记的作用
如果各case子句中没有break语句,将持续输出。
//可用switch语句完成处理菜单命令
void action1(int,int),action2(int,int);
char ch;
int a = 15, b = 23;
ch = getchat();
switch(ch)
{
case 'a':
case 'A': action1(a,b);break;
case 'b':
case 'B': action2(a,b);break;
default : putchar('\a');
}
//判断闰年
int year,leap;
printf("enter year: ");
scanf("%d",&year);
if(year%4==0)
{
if(year%100==0)
{
if(year%400==0)
leap = 1;
else
leap = 0;
}
else
leap = 1;
}
else
leap = 0;
if(leap)
printf("%d is ",year);
else
printf("%d is not ",year);
printf("a leap year\n");
C语言中没有逻辑类型,在c++中才引入的
if(x=0x12)条件语句为赋值语句,是一直成立的,注意赋值操作符“=”和相等操作符“==”的区别
int x;
scanf("%d",&x);
if(x>10)printf("1");
else if(x>20)printf("2");
else if(x>30)printf("3");
此时输入35,得到的输出为1
//按每行8个输出数据
void fun (int *w,int n)
{
int i;
for(i=0;i<n;i++)
{
if(i%8 == 0)
printf("\n");
printf("%d ",w[i]);
}
printf("\n";
}
在程序中else必须与if匹配,共同组成一条if - else语句,中间不能出现其他语句({ }包括的是属于if - else语句的,否则就会编译错误
break语句的功能是跳出正在执行的条件语句或循环语句
switch语句中可以根据需要选择是否使用break语句
switch后面不应该有分号 - 表达式需要在括号内,且表达式的类型应与case后的常量类型一致。
case和后面的常量表达式应该由空格隔开。
运算符优先级:!(非)>算术运算符>关系运算符>逻辑运算符>赋值运算符
其中逻辑运算符,&&>||