表达式:是有操作数和运算符组成的。

操作数:常量、变量、子表达式

X=(x+2)*(y-2);

运算符:

  1. 赋值运算符:= 。其作用是做赋值运算,将等号后边的值赋值给等号前边的。
  2. 复合赋值运算符: +=,-=,*=,/=,%=

Eg: x+=5 ;x=x+5;

//复合运算符

int x=10;

printf("%d\n",x+=5);//x=x+5;==>x=15

printf("%d\n",x-=5);//x=x-5;==>x=10

printf("%d\n",x*=5);//x=x*5;==>x=50

printf("%d\n",x/=5);//x=x/5;==>x=10

printf("%d\n",x%=5);//x=x%5;==>x=0

  1. 算术运算符: 做算术运算。

二元运算符:+,-,*,/,%

一元运算符: ++,--

如果++或—放在操作数的前面(++i或--i),先做自加或自减操作,再做其他操作

如果++或—放在操作数的后面(++i或--i),先做其他操作,再自加或自减操作

  1. 关系运算符(比较运算符):用于比较两个操作数之间的关系。

>,>=,<,<=,!=,==

注意:在C语言中0代表假,非零代表真。

int x=10,y=5,i=20,j=30;

printf("%d\n",x<y);

printf("%d\n",x>=y);

printf("%d\n",x!=y);

printf("%d",(x+y)==(i+j));

5.  逻辑运算符: 连接一个或多个条件

&&(与):并且----à 一假必假

||(或): 或者---à一真必真

!(非):取反-à非真必假,非假必真。

条件语句

  1. 简单的if条件结构:

语法:

if(条件){

//语句;

}

示例:

int age;

printf("请输入您的年龄:\n");

scanf("%d",&age);

if(age<18)

{

printf("未成年!\n");

}

if(age>=18)

{

printf("成年!\n");

}

if…else 条件结构

语法:

if(条件){

语句1;

}else{

语句2;

}

示例:判断是否成年

if(age<18)

{

printf("未成年!");

}

else

{

printf("成年!");

}

示例2:判断奇偶数

int num;

printf("请输入一个整数:\n");

scanf("%d",&num);

if(num%2==0){

printf("%d是一个偶数!\n",num);

}else{

printf("%d是一个奇数!\n",num);

}

示例3:判断用户输入的数是否为水仙花数(三位数: 个位的3次方+十位的3次方+百位的3次方=这个数)

eg:  153=1^3+5^3+3^3

思路:

1.获取用户输入的3位数。

2.从这个3位数中分别获取个位,十位,百位

3.判断该数字是否为水仙花数: 个位^3+十位^3+百位^3==这个数本身

int num,ge,shi,bai,he;//保存用户输入的3位数

printf("请输入一个3位数:");

scanf("%d",&num);//获取用户输入的3位数 ==>123

ge = num%10;//获取个位  123%10==>3

shi = num/10%10;//获取十位 123/10==>12%10==>2

bai = num/100;//获取百位

he = ge*ge*ge+shi*shi*shi+bai*bai*bai;

if(he==num){

//printf("进入if中...");

printf("%d是水仙花数!\n",num);

}else{

//printf("进入else中...");

printf("%d不是水仙花数!\n",num);

}

示例4: 判断用户输入的字符是否为小写字母

char c;

printf("请输入一个字母:\n");

scanf("%c",&c);

/*

if(c>='a'&&c<='z'){

printf("您输入的%c字符为小写字母!\n",c);

}else{

printf("您输入的%c字符非小写字母!\n",c);

}

*/

if(c<'a'||c>'z'){

printf("您输入的%c字符非小写字母!\n",c);

}else{

printf("您输入的%c字符为小写字母!\n",c);

}

示例5: 判断用户输入的年份是否属于闰年

分析闰年的判断条件:(能被4整除并且不能被100整除)或者(能被400整除)

int year;

printf("请输入年份:\n");

scanf("%d",&year);//获取用户输入的年份

if((year%4==0&&year%100!=0)||(year%400==0)){

printf("%d是闰年,一年有366天!\n",year);

}else{

printf("%d是平年,一年有365天!\n",year);

}

示例6:实现一个猜拳的小游戏

分析: 0代表剪刀,1代表石头,2代表布

用户AVS用户B

用户A胜==>

1.用户A:0&&用户B:2

2.用户A:1&&用户B:0

3.用户A:2&&用户B:1

平局: 用户A==用户B

用户A败:

1.用户A:0&&用户B:1

2.用户A:1&&用户B:2

3.用户A:2&&用户B:0

int userA,userB;

printf("**************************************\n");

printf("*************尚学堂猜拳小游戏***********\n");

printf("**************************************\n");

printf("0代表剪刀,1代表石头,2代表布\n");

printf("请用户A出拳:\n");

scanf("%d",&userA);

printf("请用户B出拳:\n");

scanf("%d",&userB);

//用户A胜

if((userA==0&&userB==2)||(userA==1&&userB==0)||(userA==2&&userB==1)){

printf("恭喜用户A,你获胜了~~~~~\n");

}

//平均

if(userA==userB){

printf("两位选手旗鼓相当,平局!\n");

}

//用户A败

if((userA==0&&userB==1)||(userA==1&&userB==2)||(userA==2&&userB==0)){

printf("恭喜用户B,你获胜了~~~~~\n");

}

sizeof运算符:用于查看数据类型在内存所占用的字节数。

用法:sizeof(type_name)

示例:

printf("short类型占%d个字节\n",sizeof(short));

printf("int类型占%d个字节\n",sizeof(int));

printf("long类型占%d个字节\n",sizeof(long));

printf("float类型占%d个字节\n",sizeof(float));

printf("double类型占%d个字节\n",sizeof(double));

printf("char类型占%d个字节\n",sizeof(char));

综合示例: 判断一个5位数是否为回文数(个位和万位相同,十位和千位相同)

int num,ge,shi,qian,wan;

printf("请输入一个5为整数:\n");

scanf("%d",&num);

//分解该数中个位,十位,千位和万位

ge = num%10;//个位

shi=num/10%10;//十位

qian=num/1000%10;//千位

wan=num/10000;//万位

if((ge==wan)&&(shi==qian)){

printf("%d是回文数\n",num);

}else{

printf("%d不是回文数\n",num);

}

作业1:判断用户输入的数字是否为玫瑰花数。

四叶玫瑰数是指四位数各位上的数字的四次方之和等于本身的数

思路:

1.获取用户输入的4位数

2.分解这个4位数:从该数中提取出个位,十位,百位,千位

3.判断是否为玫瑰花数: 个位^4+十位^4+百位^4+千位^4==这个数

int num,ge,shi,bai,qian,he;

printf("请输入一个4位数:\n");

scanf("%d",&num);//获取用户输入的四位数

ge = num%10;//个位

shi = num/10%10;//十位

bai = num/100%10;//百位

qian = num/1000;//千位

he = ge*ge*ge*ge+shi*shi*shi*shi+bai*bai*bai*bai+qian*qian*qian*qian;

if(num==he){

printf("%d是一个玫瑰花数!\n",num);

}else{

printf("%d不是一个玫瑰花数!\n",num);

}

作业2:输入年份,月份和日期,计算该日期是一年中第多天。

思路:

1.获取用户输入年,月,日

2.判断该年是否为闰年(闰年的2月有29天,平年2月28天)

3.计算总天数 = 日期+当前月前N个月的总天数

前N个月的总天数 = 每个月份的天数累加;

eg: 3月3日=1月的天数(31天)+二月天数(28天或29天)+3月份的日期

int year,month,date,totalDays;

int isRun=0;//平年和闰年相差的天数

printf("请输入日期(yyyy-MM-dd)\n");

scanf("%d-%d-%d",&year,&month,&date);//获取年月日 2017-5-9

//判断是否为闰年:能被4整除不能被100整除,或者能被400整除

if((year%4==0&&year%100!=0)||(year%400==0)){

isRun=1;

}

if(month==1){

totalDays=date;//如果用户输入的是1月份的日期,其第N天刚好为日期

}

if(month==2){

totalDays=31+date;//如果是2月份:总天数=1月份的总天数+日期

}

if(month==3){

totalDays=31+28+isRun+date;//如果是3月份,总天数=1月份的天数+2月的天数+日期

}

if(month==4){

totalDays=31+28+isRun+31+date;

}

if(month==5){

totalDays=31+28+isRun+31+30+date;

}

if(month==6){

totalDays=31+28+isRun+31+30+31+date;

}

if(month==7){

totalDays=31+28+isRun+31+30+31+30+date;

}

if(month==8){

totalDays=31+28+isRun+31+30+31+30+31+date;

}

if(month==9){

totalDays=31+28+isRun+31+30+31+30+31+31+date;

}

if(month==10){

totalDays=31+28+isRun+31+30+31+30+31+31+30+date;

}

if(month==11){

totalDays=31+28+isRun+31+30+31+30+31+31+30+31+date;

}

if(month==12){

totalDays=31+28+isRun+31+30+31+30+31+31+30+31+30+date;

}

printf("%d-%d-%d是一年中第%d天\n",year,month,date,totalDays);

多重If条件结构:

基本语法:

if(条件1){

//语句1

}else if(条件2){

//语句2

}else if(条件3){

//语句3

}….

}else {

//语句N;

}

注意1:条件的范围和位置是有可能影响执行结果的,正确排放条件的方式:

范围小的条件--à范围大的条件

示例:根据用户输入的成绩动态判断该成绩对应的结果(90以上:优;80~90:良;60~80:中;60以下:差)

int score;

printf("请输入成绩:\n");

scanf("%d",&score);

if(score>100||score<0){

printf("您输入的成绩有误,成绩应该在0~100之间!\n");

}else{

if(score>=90){

printf("优!\n");

}else if(score>=80){

printf("良!\n");

}else if(score>=60){

printf("中!\n");

}else{

printf("差!\n");

}

}

if嵌套:一个if语句中包含其他的if语句.

语法:

if(条件){

if(条件2){

语句;

}

}

示例:判断用户输入的数字是否为玫瑰花数。

int num,ge,shi,bai,qian,he;

printf("请输入一个4位数:\n");

scanf("%d",&num);//获取用户输入的四位数

//判断该数是否为4位数

if(num>999&&num<10000){

ge = num%10;//个位

shi = num/10%10;//十位

bai = num/100%10;//百位

qian = num/1000;//千位

he = ge*ge*ge*ge+shi*shi*shi*shi+bai*bai*bai*bai+qian*qian*qian*qian;

if(num==he){

printf("%d是一个玫瑰花数!\n",num);

}else{

printf("%d不是一个玫瑰花数!\n",num);

}

}else{

printf("您输入的不是一个4位数,请重新输入!");

}

switch条件结构: 代替多重if结构做等值判断。

注意:

1.case后的常量值不能相同。

2.switch中的表达式必须是int类型或char类型。

3.case中如果没有break关键字,将出现case穿透。

switch(表达式){

case 值1:

语句1;

[break;]

case 值2:

语句2;

[break;]

....

default:

语句N;

}

示例: /令狐冲参加武林大会,第一名奖励:葵花宝典;第二名:辟邪剑谱 第三名:吸星大法 ;其他:逐出师门!

/*

int num;

printf("请输入令狐冲的名称:\n");

scanf("%d",&num);

if(num==1){

printf("奖励葵花宝典一本!\n");

}else if(num==2){

printf("奖励辟邪剑谱一本!\n");

}else if(num==3){

printf("奖励吸星大法一本!\n");

}else{

printf("逐出师门!\n");

}*/

//使用switch代替多重if做条件判断

switch(num){

case 1:

printf("奖励葵花宝典一本!\n");

break;

case 2:

printf("奖励辟邪剑谱一本!\n");

break;

case 3:

printf("奖励吸星大法一本!\n");

break;

default:

printf("逐出师门!\n");

}

示例2:

int score;

printf("请输入分数:\n");

scanf("%d",&score);

if(score>=0&&score<=100){

switch(score/10){

case 10:

case 9:

printf("A\n");

break;

case 8:

printf("B\n");

break;

case 7:

printf("C\n");

break;

case 6:

printf("D\n");

break;

default:

printf("E\n");

break;

}

}else{

printf("输入的分数有误!\n");

}

示例3:利用switch中的case穿透实现计算指定日期为一年的第多少天?

int year,month,date,totalDays=0;

int isRun=0;//平年和闰年相差的天数

printf("请输入日期(yyyy-MM-dd)\n");

scanf("%d-%d-%d",&year,&month,&date);//获取年月日 2017-5-9

if((year%4==0&&year%100!=0)||(year%400==0)){

isRun=1;

}

switch(month){

case 12:

totalDays+=30;//加上11月份的天数

case 11:

totalDays+=31;//加上10月份的天数

case 10:

totalDays+=30;//加上9月份的天数

case 9:

totalDays+=31;//加上8月份的天数

case 8:

totalDays+=31;//加上7月份的天数

case 7:

totalDays+=30;//加上6月份的天数

case 6:

totalDays+=31;//加上5月份的天数

case 5:

totalDays+=30;//加上4月份的天数

case 4:

totalDays+=31;//加上3月份的天数

case 3:

totalDays+=28+isRun;//加上2月份的天数

case 2:

totalDays+=31;//加上1月份的天数

case 1:

totalDays+=date;//加上日期

}

printf("%d-%d-%d是一年中第%d天\n",year,month,date,totalDays);

示例4: 根据用户输入的字符,判断该字符的类别。

0~32:控制字符

'0'~'9':数字

'A'~'Z':大写字母

'a'~'z':小写字母

剩余的为其余字母。

char c;

printf("请输入一个字符:");

//scanf("%c",&c);

c=getchar();

if(c<32){

printf("控制字符!\n");

}else if(c>='0'&&c<='9'){

printf("数字!\n");

}else if(c>='A'&&c<='Z'){

printf("大写字母!\n");

}else if(c>='a'&&c<='z'){

printf("小写字母");

}else{

printf("其他字符!\n");

}

示例5:个人所得税计算器

应纳税所得额 = 税前工资收入金额 - 起征点(3500元)

应纳税额 = 应纳税所得额 x 税率 - 速算扣除数

float salary,taxSalary,tax,realSalary;

printf("请输入的您的税前工资:\n");

scanf("%f",&salary);//获取税前工资

taxSalary=salary-3500;//应纳税所得额(应纳税的工资部分)

if(taxSalary>0&&taxSalary<=1500){

tax = taxSalary*0.03;

}else if(taxSalary>1500&&taxSalary<=4500){

tax = taxSalary*0.1-105;

}else if(taxSalary>4500&&taxSalary<=9000){

tax = taxSalary*0.2-555;

}else if(taxSalary>9000&&taxSalary<=35000){

tax = taxSalary*0.25-1005;

}else if(taxSalary>35000&&taxSalary<=55000){

tax = taxSalary*0.3-2755;

}else if(taxSalary>55000&&taxSalary<=80000){

tax = taxSalary*0.35-5505;

}else if(taxSalary>80000){

tax = taxSalary*0.45-13505;

}

realSalary = salary-tax;//计算税后工资

printf("您的工资:¥%0.2f,应缴个税:¥%0.2f,税后工资:¥%0.2f\n",salary,tax,realSalary);

条件运算符(三目运算符):? 代替if...else结构

语法:条件表达式?表达式1:表达式2

int a,b,max;

printf("请输入两个数:\n");

scanf("%d %d",&a,&b);

//if(a>b){

// max=a;

//}else{

// max=b;

//}

max=a>b?a:b;

printf("%d和%d中最大的是%d",a,b,max);

C语言之运算符和条件结构的更多相关文章

  1. JAVA的运算符和条件结构

    一.JAVA的运算符. 1.赋值运算符 赋值就是把一个变量的值赋给另一个变量. 语法: 变量名=表达式     例如  n = m + 5 2.算术运算符      算术运算符是数学中常用的加.减.乘 ...

  2. 026 01 Android 零基础入门 01 Java基础语法 03 Java运算符 06 if-else条件结构

    026 01 Android 零基础入门 01 Java基础语法 03 Java运算符 06 if-else条件结构 本文知识点:Java中的if-else条件结构语句 上文回顾--if条件结构 如果 ...

  3. 025 01 Android 零基础入门 01 Java基础语法 03 Java运算符 05 if条件结构

    025 01 Android 零基础入门 01 Java基础语法 03 Java运算符 05 if条件结构 本文知识点:Java中的if条件结构语句 关系运算符回顾 生活中根据条件进行判断采取不同操作 ...

  4. C语言复习3_条件结构

    if条件结构 if else 结构一般处理区间情况 #include <stdio.h> #include <stdlib.h> int main() { //打印剧情 dou ...

  5. JS一周游~(基础、运算符、条件语句)

    一.基础篇 JavaScript 基于浏览器(客户端).基于(面向)对象{没有继承}.事件驱动(要有对象).脚本语言(灵活多变) 1.作用 表单的验证,减轻服务端的压力 添加页面动画效果 动态更改页面 ...

  6. C语言位运算符:与、或、异或、取反,左移和右移

    C语言位运算符:与.或.异或.取反.左移和右移 个位操作运算符.这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型. ,则该位的结果值为1,否则为0 | ...

  7. C语言位运算符:与、或、异或、取反、左移和右移

    语言位运算符:与.或.异或.取反.左移和右移 位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进制位的问题.C语言提供了6个位操作运算符.这些运算符只能用于整型操作数,即只能用于带符号或无符 ...

  8. C#基础(三)--运算符及条件控制语句

    上一章我们了解了C#的一些数据基本类型.如何定义使用变量及类型之间的相互转换.可能大家会发现程序只能按照我们的要求从上向下这样顺序一条一条的执行. 那么程序能按照我们的要求,当某个条件成立的时候才执行 ...

  9. Labview学习笔记-条件结构的两个问题

    数组:“创建数组控件“用于连接数组 输入端:数组+元素 或数组+数组 右键创建数组控件 在连接数组项上打钩或取消,改变连接的数组维度 簇:就是C语言中的结构体 簇和数组的转换 必须保证各元素数据类型一 ...

随机推荐

  1. gulp 学习笔记

    以这次学习gulp为契机来同时了解和学习node相关的知识和概念,比如 npm,package.json等,为以后学习node打好基础. 目录   npm     查看模块     安装模块      ...

  2. Java NIO之通道

    一.前言 前面学习了缓冲区的相关知识点,接下来学习通道. 二.通道 2.1 层次结构图 对于通道的类层次结构如下图所示. 其中,Channel是所有类的父类,其定义了通道的基本操作.从 Channel ...

  3. 间谍网络——tarjan求SCC

    洛谷传送门 看着这道题给人感觉就是tarjan求SCC,然而还得判断是否能控制全部间谍,这就得先从可以贿赂的点dfs一遍. 如果没有全部被标记了,就输出NO,再从没被标记的点里找最小的标号. 如果全被 ...

  4. C++ struct 初始化的问题

    struct student { int age; string name; int id; }; 初始化: student st1={10, "li ming", 01}; 修改 ...

  5. 【转】JDBC学习笔记(7)——事务的隔离级别&批量处理

    转自:http://www.cnblogs.com/ysw-go/ 数据库事务的隔离级别 对于同时运行的多个事务, 当这些事务访问数据库中相同的数据时, 如果没有采取必要的隔离机制, 就会导致各种并发 ...

  6. C#网络程序设计(1)网络编程常识与C#常用特性

        网络程序设计能够帮我们了解联网应用的底层通信原理!     (1)网络编程常识: 1)什么是网络编程 只有主要实现进程(线程)相互通信和基本的网络应用原理性(协议)功能的程序,才能算是真正的网 ...

  7. 火车站点城市查询(appserv 服务器练习)

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  8. 查询sql server进程死锁方案

    SELECT a.spid , a.blocked , lastwaittype = RTRIM( a.lastwaittype ), waitresource = RTRIM( a.waitreso ...

  9. bzoj4827 [Hnoi2017]礼物

    Description 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手 环,一个留给自己,一个送给她.每个手环上各有 n 个装饰物,并且每个装饰物都有一定的亮度.但是在 ...

  10. 实体类和数据表的映射异常(XXX is not mapping[ ])

    在使用SSH框架开发过程,使用hibernate框架提供的工具类实现与数据库数据交互,在执行cmd操作时,如果出现以下异常: org.hibernate.hql.ast.QuerySyntaxExce ...