C语言之运算符和条件结构

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

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

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);

时间: 2025-01-11 00:26:17

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

Java 运算符,条件结构小总结

  今天是开始学习的第三天,总结下这两天学的内容,主要是运算符和条件结构.       下面是运算符的一个小总结:  算术运算符 赋值运算符 关系运算符  逻辑运算符 位运算符 条件运算符 +取正时为单目,加时为双目 = 只表赋值 == 双目 && 短路与 & a?b:c  - 取负时为单目,减时为双目  += 双目 !=   结果  ||   短路或  |   */ 双目  -= >=  都是  !非运算  ^   % 模除即取余数,双目  *= <=  布尔  &a

运算符和条件结构

表达式:是有操作数和运算符组成的. 操作数:常量.变量.子表达式 X=(x+2)*(y-2); 运算符: 赋值运算符:= .其作用是做赋值运算,将等号后边的值赋值给等号前边的. 复合赋值运算符: +=,-=,*=,/=,%= //复合运算符 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*

JAVA的运算符和条件结构

一.JAVA的运算符. 1.赋值运算符 赋值就是把一个变量的值赋给另一个变量. 语法: 变量名=表达式     例如  n = m + 5 2.算术运算符      算术运算符是数学中常用的加.减.乘.除.余.(+.-.*./.%)   复合算术运算符:+=.-=.*=./=.%= 例如 a+=1 就是 a = a + 1   自增自减运算符:++.- -. 例如 a++ 就是 a = a+1 注意!a++是先运算在赋值,而++a是先赋值在运算!! 3.关系运算符 关系运算符就是比较两个操作数的

第三部分、类型转换,运算符和条件结构

一.类型转换 1.自动类型转换 原则:把范围小的类型的值转换到范围大的类型的值 short < int < long < float < double 2.强制类型转换 double num = 6;//小类型转换大类型--自动类型转换 int num1 = (int)num;//大类型转换小类型--强制类型转换 二.运算符 1.赋值运算符 单等号=(计算顺序:从右向左) 复合赋值运算符 int num = 10; num += 5;//等价为num = num + 5; //输出

Java 第三章 运算符和条件结构 笔记

一.保存真或假,使用boolean变量      有两个值:true 真                  false 假 二.从控制台接受输入信息,通过创建扫描器     Scanner input new Scanner(System.in);     int age input.nextInt();//接收int类型     String name=input.next();//接收Strin类型 三.关系运算符     > < >= <= == != 四.==和=的区别  

c语言第四章-条件结构

表达式:由运算符和操作数组成赋值运算符:=多分枝选择结构if else if else if else嵌套结构if(){    if(){            }}switch case 结构default可以省略表达式中只能使用整形数值三目运算符:表达式1?表达式2:表达式3;如果表达1为真执行表达式2 否则执行表达式3;三目运算符是if else if 的替代品 原文地址:https://www.cnblogs.com/zxk1995/p/8596622.html

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

一.基础篇 JavaScript 基于浏览器(客户端).基于(面向)对象{没有继承}.事件驱动(要有对象).脚本语言(灵活多变) 1.作用 表单的验证,减轻服务端的压力 添加页面动画效果 动态更改页面内容 Ajax网络请求( 异步 js and xml)无跳转刷新 2.组成部分 ECMAScript语法标准 语法,变量.数据类型,运算符,逻辑控制语句 ,关键字.保留字,对象 DOM文档对象类型操作 BOM文档对象类型操作 JS的执行原理 前台向服务器发起请求,请求服务器给我们数据,然后返回到前台

python中if语句的使用(比较、逻辑、成员、运算符,语句结构)

一.if语句判断的定义 如果 条件满足,才能做某件事情, 如果 条件不满足,就做另外一件事情,或者什么也不做 正是因为有了判断,才使得程序世界丰富多彩,充满变化! 判断语句 又被称为 "分支语句",正是因为有了判断,才让程序有了很多的分支 Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false. Python 编程中 if 语句用于控制程序的执行,基本形式为: if 判断条件: 执行语句-- else: 执行语句-- 例子:如果天气晴朗,我们去室

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

语言位运算符:与.或.异或.取反.左移和右移 位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进制位的问题.C语言提供了6个位操作运算符.这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型. C语言提供的位运算符列表:运算符 含义 描述& 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0| 按位或 两个相应的二进制位中只要有一个为1,该位的结果值为1^ 按位异或 若参加运算的两个二进制位值相同则为0,否则为1~ 取反 ~