常用运算符分类
算术运算符
赋值运算符
比较运算符
逻辑运算符
类型转换
原则:占用内存字节数少(值域小)的类型,向占用内存字节数多(值域大)的类型转换,以保证精度不降低。
1.自动转换(隐式转换):遵循一定的规则,由编译系统自动完成。
#include <stdio.h>
int main()
{
int num = 5;
printf("s1=%d\n", num / 2);
printf("s2=%lf\n", num / 2.0);
return 0;
}
2.强制类型转换:把表达式的运算结果强制转换成所需的数据类型。
#include <stdio.h>
int main()
{
float x = 0;
int i = 0;
x = 3.6f;
i = x; //x为实型, i为整型,直接赋值会有警告
i = (int)x; //使用强制类型转换
printf("x=%f, i=%d\n", x,i,);
return 0;
}
程序流程结构
顺序结构:程序按顺序执行,不发生跳转。
顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。
选择结构:依据是否满足条件,有选择的执行相应功能。
if if...else if…else if…else
switch
#include <stdio.h>
int main()
{
char c;
c = getchar();
switch (c) //参数只能是整型变量
{
case '1':
printf("OK\n");
break;//switch遇到break就中断了
case '2':
printf("not OK\n");
break;
default://如果上面的条件都不满足,那么执行default
printf("are u ok?\n");
}
return 0;
}
三目运算符
条件 ? 结果1 : 结果2
"?"运算符的含义是:先求表达式1的值,如果为真,则执行表达式2,并返回表达式2的结果;如果表达式1的值为假,则执行表达式3,并返回表达式3的结果
#include <stdio.h>
int main()
{
int a = 1;
int b = 2;
int c;
c = ( a > b ? a : b );
printf("c2 = %d\n", c);
return 0;
}
循环结构:依据条件是否满足,循环多次执行某段代码。
while
do...while
for
for(表达式1;表达式2;表达式3)
循环体语句;
1.计算表达式1
2.判断表达式2,为真则执行循环体语句然后再次判断表达式2的真假,为假则循环结束
嵌套循环
while嵌套while
while()
{
...
while()
{...}
...
}
do while 镶嵌do while
do
{
...
do
{...}
while();
...
}while();
for 镶嵌for
for( ; ; )
{
...
for( ; ; )
{...}
....
}
while镶嵌do while
while()
{
...
do
{...}
while();
...
}
for镶嵌while
for( ; ; )
{
...
while()
{...}
...
}
跳转语句break、continue、goto
break:
1.当它出现在switch条件语句中时,作用是终止某个case并跳出switch结构
2.当它出现在循环语句中,作用是跳出当前内循环语句,执行后面的代码
3.当它出现在嵌套循环语句中,跳出最近的内循环语句,执行后面的代码
continue:
continue语句用于结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定
unsigned
char
i, j=50;
for
(i=0;i<100;i++)
{
if
(i>j)
continue
;
j=i;
}
#include <stdio.h> int main() { int a; scanf("%d",&a); if(a<=60&&a>=0) printf("E\n"); else if(a>60&&a<=69) printf("D\n"); else if(a>=70&&a<=79) printf("C\n"); else if(a>=80&&a<=89) printf("B\n"); else if(a>=90&&a<=100) printf("A\n"); else printf("成绩输入出错\n"); }
#include <stdio.h> int main() { int w; scanf("%d",&w); switch(w) { case 1: printf("Monday\n"); break; case 2: printf("Tuesday\n"); break; case 3: printf("Wednesday\n"); break; case 4: printf("Thursday\n"); break; case 5: printf("Friday\n"); break; case 6: printf("Saturday\n"); break; case 7: printf("Sunday\n"); break; default:printf("wrong\n"); } }
#include <stdio.h> int main() { int i; for(i=1;i<=100;i++) if(i%7==0) printf("能被7整除的数%d\n",i); }
#include <stdio.h> int main() { int i=1; while(i<=100) { if(i%7==0) printf("能被7整除的数%d\n",i); i++; } }
#include <stdio.h> int main() { int i; int a=0; int b=0; int c=0; for(i=0;i<1000;i++) a=i/100; b = i / 10 % 10; c = i % 10; if(i==a*a*a+b*b*b+c*c*c) printf("%d是水仙花数\n",i); }