运算符和结构流程语句以及课后练习题
算术运算符:
/除 %取余 ++a前自增 a=2;b=++a ;a=3 b=3(a先加1,之后再把结果赋值给b)
a++后自增 a=2;b=a++ ; a=3 b=2 (先把a的值赋给b,之后a的值加1再赋给a)
--a前自减 a=2;b=--a;a=1 b=1
a--后自减 a=2;b=a--;a=1 b=2
/除 %取余 ++a前自增 a=2;b=++a ;a=3 b=3(a先加1,之后再把结果赋值给b)
a++后自增 a=2;b=a++ ; a=3 b=2 (先把a的值赋给b,之后a的值加1再赋给a)
--a前自减 a=2;b=--a;a=1 b=1
a--后自减 a=2;b=a--;a=1 b=2
赋值运算符:
int a=10
将10赋值给整型变量a
a+=3;等同于a=a+3
a-=3;a=7
a*=3;a=30
a%=3;a=1
a/=3;a=3(a为整型)
表达式:通过变量或者常量和运算符连接起来称为表达式 在程序中表达式的结果可以作为程序的条件出现
比较运算符:< > <= >= == !=
int a=10;
int b=9;
a>b(成立)在计算机中用1表示真 用0表示假
printf(“%d\n",a>b)输出结果为1
逻辑运算符:! && ||
!(非)非真为假 非假为真
&&(与)同真则真 其余为假
||(或)同假为假 其余为真
类型转换:
1.隐式转换
例如:
char a=‘a’;
int b = a;
编译器会自动将低的数据类型转换成高的数据类型,转换后的数据正确
2.强制转换
例如:
int a = 3;
float b = (float)a;
把表达式的运算结果强制转换成所需的数据类型
程序流程结构:
选择结构:
语句格式;
格式:if(表达式){代码}如果表达式为真 执行括号内的代码
格式:if(表达式){代码}else{代码}如果表达式为真 执行if括号内的代码 如果为假 执行else括号内的代码
格式:if(表达式){代码}else if(表达式0{代码} {else if 可为多个} else{代码}
格式:
if (表达式)
{
if条件执行语句;
}
else if(表达式)
{
}
.............
else
{
}
2.三目运算符
表达式? 选项1【表达式】:选项2【表达式】 如果表达式为真 选择选项1的结果 如果为假 选择选项2
例如:
int a=10;
int b=20;
int c=a>b?a:b;
表达式? 选项1【表达式】:选项2【表达式】 如果表达式为真 选择选项1的结果 如果为假 选择选项2
例如:
int a=10;
int b=20;
int c=a>b?a:b;
3.switch语句:
格式:switch(表达式)
{
case 值1
代码
break;
case值2
代码
break;
default:
代码
break;
}
例如:
#include <stdio.h>
#include <stdafx.h>
int main()
{
int a = 10;
switch (a)
{
case 1:
printf("adezhishi %d\n", a);
break;
case 10:
printf("adezhishi %d\n", a);
break;
default:
printf("ashisha\n");
break;
}
return 0;
}
注意:if语句执行效率差 switch语句执行效率高 if可以判断一个区间 switch用来判断一个值 三目运算符结构简单明了
while循环语句:
格式:while(表达式)
{
代码
}
注意:程序的出口
do.....while语句:
格式:do
{
代码
}while(表达式); 不要忘记封号;
for循环:
格式:
for(①初始值;②表达式;③表达式)
{
④代码
}
先执行1再执行二之后执行4最后执行3
之后执行二再执行4然后执行3
一直到2不满足条件
嵌套循环:就像表,分针走一次,秒钟走一圈;
从键盘输入 1~7 的数字,分别提示 Monday、Tuesday、Wednesday、Thursday、Friday、Saturday、Sunday 输入其它,提示出错
使用:switch case break 实现
#include <stdio.h>
int main()
{
int a;
scanf("%d",&a);
switch(a)
{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("错误\n");break;
}return 0;
}
#include <stdio.h>
int main()
{
int a;
scanf("%d",&a);
switch(a)
{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("错误\n");break;
}return 0;
}
1. 从屏幕上输入一个学生的成绩(0-100),对学生成绩进行评定:
<=60为"E"
60~69为"D"
70~79为"C"
80~89为"B"
90以上为"A"
<0或>100提示成绩输入出错
<=60为"E"
60~69为"D"
70~79为"C"
80~89为"B"
90以上为"A"
<0或>100提示成绩输入出错
使用:if else if等实现
#include <stdio.h>
int main()
{int num;
scanf("%d",&num);
if (num>100||num<0)
{printf("成绩输入错误\n");}
else if(num>=90)
{printf("成绩为A\n");}
else if(num>=80&&num<=89)
{printf("成绩为B\n");}
else if(num>=70&&num<=79)
{printf("成绩为C\n");}
else if(num>=60&&num<=69)
{printf("成绩为D\n");}
else printf("评价为E\n");
return 0;
}
#include <stdio.h>
int main()
{int num;
scanf("%d",&num);
if (num>100||num<0)
{printf("成绩输入错误\n");}
else if(num>=90)
{printf("成绩为A\n");}
else if(num>=80&&num<=89)
{printf("成绩为B\n");}
else if(num>=70&&num<=79)
{printf("成绩为C\n");}
else if(num>=60&&num<=69)
{printf("成绩为D\n");}
else printf("评价为E\n");
return 0;
}
3. 输出100以内能被7整除的数,分别用for循环和while循环完成
#include <stdio.h>
int main()
{
int num;
{for(num=0;num<100;num++)
{if(num%7==0)
printf("%d\n",num);}}
return 0;}
4. 输出0-1000以内的水仙花数
水仙花数算法:一个数=它各位的立方和,例如:153= 1*1*1 + 5*5*5 + 3*3*3
提示:for循环,求余(%)、取整(/)运算符
#include <stdio.h>
int main()
{ int num,a,b,c;
for(num=101;num<1000;num++)
{a=num/10;
b=(num/10)%10;
c=num%10;
if(num==a*a*a+b*b*b+c*c*c)
{printf("水仙花数字为:%d\n",num);}
}
return 0;
}
水仙花数算法:一个数=它各位的立方和,例如:153= 1*1*1 + 5*5*5 + 3*3*3
提示:for循环,求余(%)、取整(/)运算符
#include <stdio.h>
int main()
{ int num,a,b,c;
for(num=101;num<1000;num++)
{a=num/10;
b=(num/10)%10;
c=num%10;
if(num==a*a*a+b*b*b+c*c*c)
{printf("水仙花数字为:%d\n",num);}
}
return 0;
}