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

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

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. JavaScript--------------------jQuery中.bind() .live() .delegate() .on()的区别 和 三种方式写光棒事件 动画

    bind(type,[data],fn) 为每个匹配元素的特定事件绑定事件处理函数. $("a").bind("click",function(){alert( ...

  2. vim粘贴代码问题

    vim粘贴代码问题 vim 在使用xshell进行vim操作的时候,经常会直接粘贴一些外部的代码,然后粘贴上之后会出现逐行缩进的情况,之前一直没有去找为啥,并且逐行的给他弄回去. 转自:https:/ ...

  3. java中json和字符串互转及日期转换 练习

    一:以下是用到的jar名称: commons-beanutils-1.6.jar commons-collections-3.2.1.jar commons-lang-2.6.jar commons- ...

  4. 《算法4》读书笔记 1.4 - 算法分析(Analysis of Algorithm)

    --------------------------- First priority is to make you code ** CLEAR and CORRECT, but PERFORMANCE ...

  5. 设计模式(1)单例模式(Singleton)

    设计模式(0)简单工厂模式 源码地址 0 单例模式简介 0.0 单例模式定义 单例模式是GOF二十三中经典设计模式的简单常用的一种设计模式,单例模式的基本结构需满足以下要求. 单例模式的核心结构只有一 ...

  6. KMP算法学习(详解)

    kmp算法又称“看毛片”算法,是一个效率非常高的字符串匹配算法.不过由于其难以理解,所以在很长的一段时间内一直没有搞懂.虽然网上有很多资料,但是鲜见好的博客能简单明了地将其讲清楚.在此,综合网上比较好 ...

  7. Java 工具类—日期获得,随机数,系统命令,数据类型转换

    package tems; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Calendar; ...

  8. C#代码将html样式文件转为Word文档

    首先有个这样的需求,将以下网页内容下载为Word文件. html代码: <div class="modal-body">    <div style=" ...

  9. bzoj4818 [Sdoi2017]序列计数

    Description Alice想要得到一个长度为n的序列,序列中的数都是不超过m的正整数,而且这n个数的和是p的倍数.Alice还希望,这n个数中,至少有一个数是质数.Alice想知道,有多少个序 ...

  10. Display:table;妙用,使得左右元素高度相同

    我们在设计网页的时候,为了左右能够分明一点,我们经常会在左边元素弄一个border-right,但是出现一个问题,如果左边高度比较小,这根线就短了,下面空了一部分,反正如果在右边的元素弄一个borde ...