文档库 最新最全的文档下载
当前位置:文档库 › C语言中特殊用法

C语言中特殊用法

C语言中特殊用法
C语言中特殊用法

一、_near_func 用法解释

那就是说__near_func和汇编的JUMP作用差不多而_far_func 和汇编的LONG JUMP 差不多了

二、st(P##port##SEL &= ~BV(pin); \ 1

P##port##_##pin## = val; \ 2

P##port##DIR |= BV(pin); ) 3

解释

port和pin是IO口的,例如,如果port是1,pin是0,则P##port##_##pin##=1表示P1_0=1

BV 为宏定义为#define BV(n) ……

st意思是指括号里的程序直接执行

预定义运算与函数中运算符的运算是一样的,关键在于灵活掌握运算符的含义与使用。

3 表示P端口的值与BV(pin)“相或”,结果赋值给DIR;

1 表示P端口的值与BV(pin)的按位求反的值“相与”,结果赋值给DIR。

三、asm(nop) 时间计算

根据设定的晶振,怎么样确定asm("nop");延时了多少时间?比如7.3728MHz下,一个asm("nop");代表多少时间呢?

1、一个指令周期.

指令周期是执行一条指令所需要的时间,一般由若干个机器周期组成,是从取指令、分析取数到执行完所需的全部时间。指令不同,所需的机器周期数也不同。对于一些简单的的单字节指令,在取指令周期中,

指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。

机器周期:通常用内存中读取一个指令字的最短时间来规定CPU周期,(也就是计算机通过内部或外部总线进行一次信息传输从而完成一个或几个微操作所需要的时间它一般由12个时钟周期组成。而时钟周期=1秒/晶振频率,因此单片机的机器周期=12秒/晶振频率

补充其他几个周期:

指令周期:取出并执行一条指令的时间。

时钟周期:处理操作的最基本单位。(CPU的主频)

存储周期:也就是一个访存指令周期。

指令周期、机器周期和时钟周期之间的关系:指令周期通常用若干个机器周期表示,而机器周期时间又包含有若干个时钟周期。

--》指令周期=若干个机器周期=12个时钟周期12秒/晶振频率(51系列)

2、1/7378200 = 0.000000135534 s = 135.5ns (51系列)

3、执行一个空语句null opreation 延时

有时软件抗干扰时要用到,使跑飞的程序入正轨

c语言if语句练习题

c语言if语句练习题 1、输入一个学生成绩,判断并输出该学生是否及格。 #include main { int a; printf ; scanf ; if printf ; else switch { case 0: case 1: case: case: case: case: printf ; break; 为B\n”); } }

2、输入三角形的三条边长,求三角形的周长和面积,若不能构成三角形,输出提示。拓展练习:根据用户输入的三角形的三条边长判定是何种三角形。 提示:正三角形——三边相等; 等腰三角形——三边中有两边相等; 直角三角形——两边的平房和等于第三边平方。 case: printf; break; case: printf; break; case: printf; #include #include main { float a,b,c,d; \n”); printf ; d=/2; if { if {printf ; printf ; } else { if { printf ; printf **),a+b+c); } else { if

{ printf ; printf **),a+b+c); } else { printf ; printf **),a+b+c); } } } } else printf ; } 3、输入3个分别表示箱子长、宽、高的整数值,判断并输出该箱子是正方体还是长方体。 ? 马克思手稿中有一道趣味数学题:有30个人,其中有男人、女人和小孩,在一家饭馆里吃饭 共花了50先令,每个男人各花3先令,每个女人各花2先令,每个小孩各花1先令,问男人、女人和小孩各有几人?

c语言if的用法

c语言if的用法 条件condition可以是任何返回布尔值的表达式。 else子句是可选的。 if语句的执行过程如下:如果条件为真,就执行if的对象(statement1);否则,执行else的对象(statement2)。 任何时候两条语句都不可能同时执行。 考虑下面的例子:int a,b;if(a 任何情况下都不可能使a和b 都被赋值为0。 记住,直接跟在if 或else语句后的语句只能有一句。 如果你想包含更多的语句,你需要建一个程序块,如下面的例子:int bytesAvailable;if (bytesAvailable > 0) {ProcessData();bytesAvailable -= n;} elsewaitForMoreData();这里,如果变量bytesAvailable 大于0,则if 块内的所有语句都会执行。 嵌套if 语句嵌套(nested)if语句是指该if语句为另一个if或者else语句的对象。 在编程时经常要用到嵌套if语句。 当你使用嵌套if语句时,需记住的要点就是:一个else语句总是对应着和它同一个块中的最近的if语句,而且该if语句没有与其他else 语句相关联。 下面是一个例子:if(i == 10) {if(j 100) c = d; // this if iselse a = c; // associated with this else}else a = d; // this else refers to if(i ==

10)如注释所示,最后一个else语句没有与if(j 最后一个else语句对应着if(i==10)。 内部的else语句对应着if(k>100),因为它是同一个块中最近的if 语句。 if-else-if 阶梯基于嵌套if语句的通用编程结构被称为if-else-if 阶梯。 它的语法如下:if(condition)statement;else if(condition)statement;else if(condition)statement;elsestatement;条件表达式从上到下被求值。 一旦找到为真的条件,就执行与它关联的语句,该阶梯的其他部分就被忽略了。 如果所有的条件都不为真,则执行最后的else语句。 最后的else语句经常被作为默认的条件,即如果所有其他条件测试失败,就执行最后的else语句。 如果没有最后的else语句,而且所有其他的条件都失败,那程序就不做任何动作。 . 下面的程序通过使用if-else-if阶梯来确定某个月是什么季节。 // Demonstrate if-else-if statements.main() {int month = 4; // Aprilif (month == 12 || month == 1 || month == 2)printf ( "Winter");else if (month == 3 || month == 4 || month == 5)printf ("Spring");else if (month == 6 || month == 7 || month == 8)printf ( "Summer");else if (month == 9

c语言if语句的练习题答案

c语言i f语句的练习题答 案 Prepared on 24 November 2020

1、编写程序输入a和b,求a和b的余数和商。 #include<> voidmain() { inta,b; scanf("%d%d",&a,&b); printf("商为%d余数为%d",a/b,a%b); } 2、输入一个整型数据,分别求出各位数字。如:469,则个位数是9,十位数 是6,百位数是4。 #include<> voidmain() {inta,m=0; intt,t1,t2,t3,t4; scanf("%d",&a); if(a<0||a>99999) printf("输入数据超出范围\n"); elseif(a>=0&&a<10) {m=1; printf("该数是%d位数,其个位数为%d\n",m,a); } elseif(a>=10&&a<100) { m=2; t=a%10; a=a/10; printf("该数是%d位数,其个位数为%d十位数为%d\n",m,t,a); } elseif(a>=100&&a<1000) { m=3; t=a%10; t1=(a/10)%10; t2=a/100; printf("该数是%d位数,其个位数为%d十位数为%d百位数为%d\n",m,t,t1,t2);

elseif(a>=1000&&a<10000) { m=4; t=a%10; t1=a/10%10; t2=a/100%10; t3=a/1000; printf("该数是%d位数,其个位数为%d十位数为%d百位数为%d千位数字 为%d\n",m,t,t1,t2,t3); } elseif(a>=10000&&a<100000) { m=5; t=a%10; t1=a/10%10; t2=a/100%10; t3=a/1000%10; t4=a/10000; printf("该数是%d位数,其个位数为%d十位数为%d百位数为%d千位数字为%d 万位数字为%d\n",m,t,t1,t2,t3,t4); } } 以上写法太繁琐了,如果学习了循环,则简单很多。 #include<> voidmain() { inta,b; intn=0; scanf("%d",&a); while(a)//while(a!=0) {n++;//n用来统计数字a是几位数,n的初值必须为0 b=a%10; a=a/10;//a/=10; printf("%d",b);//输出a的各位数字 } printf("a的位数为%d",n);//此语句必须写在循环体的外面

C语言中# ifdef和# elseif的使用技巧和注意事项

下面这几个宏是为了进行条件编译。一般情况下源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。 条件编译命令最常见的形式为: #ifdef 标识符 程序段1 #else 程序段2 #endif 它的作用是:当标识符已经被定义过(一般是用#define命令定义),则对程序段1进行编译,否则编译程序段2。 其中#else部分也可以没有,即: #ifdef 程序段1 #denif 这里的“程序段”可以是语句组,也可以是命令行。这种条件编译可以提高C源程序的通用性。如果一个C源程序在不同计算机系统上运行,而不同的计算机又有一定的差异。例如,我们有一个数据类型,在Windows平台中,应该使用long类型表示,而在其他平台应该使用float表示,这样往往需要对源程序作必要的修改,这就降低了程序的通用性。可以用以下的条件编译: #ifdef WINDOWS #define MYTYPE long #else #define MYTYPE float #endif 如果在Windows上编译程序,则可以在程序的开始加上 #define WINDOWS 这样则编译下面的命令行: #define MYTYPE long 如果在这组条件编译命令之前曾出现以下命令行: #define WINDOWS 0 则预编译后程序中的MYTYPE都用float代替。这样,源程序可以不必作任何修改就可以用于不同类型的计算机系统。当然以上介绍的只是一种简单的情况,可以根据此思路设计出其它的条件编译。 例如,在调试程序时,常常希望输出一些所需的信息,而在调试完成后不再输出这些信息。可以在源程序中插入以下的条件编译段:

C语言中if和goto的用法

C语言中,if是一个条件语句,用法 if(条件表达式) 语句 如果满足括号里面表达式,表示逻辑为真于是执行后面的语句,否则不执行(表达式为真则此表达式的值不为0,为假则为0,也就是说,如果括号里面不是一个判断表达式,你填了一个不是0的数字或其他,表示条件永远为真,一定执行后面的语句,反之,你填了一个0,则永远不会执行后面的语句)。 if后面的语句如果多于一句,可以放在{}里面作为复合语句, 例: int a=2,b=1; if(a>b) cout<<"a>b"<1 ,表达式a>b为真,于是执行后面的语句,输出a>b 这几个字符。 goto 是转向语句,按其英文含义就可理解 用法标号:语句; ...................... goto 标号; 或者 goto 标号; ..................... 标号:语句; 标号和goto必须包括处于同一个函数内标号的写法跟变量名一样不能和关键词相同,后面必须带冒号 当程序执行到goto这个语句时,程序就转跳到标号后面的语句去了 例 int x=1; biaohao: x=x+1; if(x<100) goto biaohao; cout<<"x=100"<

C中goto语句的用法 个人觉得goto用在内层循环中比较合适,用break只能跳出内层循环,而goto可以直接跳出最外层循环,在合理的地方使用就可以了。debian:/home/server# vi goto.c #include #include int main() { int i, j; for (j = 0; j < 3; j++) { for (i = 0; i < 10; i++) { printf("j: %d, i: %d\n", j, i); if (i == 3) goto last; } } last: printf("This is the last line\n"); return 0; } debian:/home/server# gcc -o goto goto.c

C语言if语句总结

C语言选择语句 C语言支持两种选择语句:if语句和switch语句。这些语句允许你只有在程序运行时才能。知道其状态的情况下,控制程序的执行过程。首先看一下if语句的用法: if语句: if语句是c语言中的条件分支语句。它能将程序的执行路径分为两条。if语句的完整格式如下: if (condition) statement1;; else statement2; 其中,if和else的对象都是单个语句(statement),也可以是程序块。条件condition可以是任何返回布尔值的表达式。else子句是可选的。 if语句的执行过程如下:如果条件为真,就执行if的对象(statement1);否则,执行else的对象(statement2)。任何时候两条语句都不可能同时执行。考虑下面的例子: int a,b; if(a < b) a = 0; else b = 0; 本例中,如果a小于b,那么a被赋值为0;否则,b被赋值为0。任何情况下都不可能使a 和b都被赋值为0。 记住,直接跟在if 或else语句后的语句只能有一句。如果你想包

含更多的语句,你需 要建一个程序块,如下面的例子: int bytesAvailable; if (bytesAvailable > 0) { ProcessData(); bytesAvailable -= n; } else waitForMoreData(); 这里,如果变量bytesAvailable 大于0,则if块内的所有语句都会执行。 嵌套if 语句 嵌套(nested)if语句是指该if语句为另一个if或者else语句的对象。在编程时经常要用到嵌套if语句。当你使用嵌套if语句时,需记住的要点就是:一个else语句总是对应着和它同一个块中的最近的if语句,而且该if语句没有与其他else语句相关联。下面是一个例子:if(i == 10) { if(j < 20) a = b; if(k > 100) c = d; // this if is else a = c; // associated with this else } else a = d; // this else refers to if(i == 10) 如注释所示,最后一个else语句没有与if(j <20)相对应,因为它

c语言中if语句知识点总结

If语句知识点总结 一. if语句的三种基本形式 (1)if (表达式)语句; 例:if(x>y) printf(“%d”,x); (2)if(表达式) 语句1; else语句2; 例:if (x>y) printf(“%d”,x); else printf(“%d”,y); (3)if(表达式1)语句1; else if(表达式2)语句2; else if(表达式3)语句3; ……

else if(表达式m)语句m; else 语句n; 例:if (number>10)cost=0.15; else if(number>30)cost=0.10; else if(number>100)cost=0.075; else if(number>500)cost=0.05; else cost=0.01; c语言中的六大陷阱 1.if(表达式)一般为逻辑表达式或关系表达式输出1/0,但原则上可以是任何变量、常量和表达式; 2.if(常量)--C语言中任何非零的数都被认作为真; 例一:int i=5; if(2)printf("%d\n",++i); else printf("%d\n",--i); 输出值:6 例二:int i=5,a=3,b; if(b=a)printf("%d\n",++i); /*上面括号里“b=a”即将a的值赋给b,所以该条件为真*/

else printf("%d\n",--i); 输出值:6 例三:int i=5,a=3,b=9; if(b==a)printf("%d\n",++i); /*括号中“==”含义为“等于”,所以是假*/ else printf("%d\n",--i); 输出值:4 3.注意:if(表达式)语句;表达式里面是"=="还是"=" 4.如果if后面的表达式是多个关系表达式,要注意关系运算符 是两两进行比较的!!!!!!! int a=6,b=5,c=4,i=5; if(a>b>c)printf("%d\n",++i); /*括号中“a>b>c”,先判断“a>b”,为真,值为1;然后判断“1>c”,为假,所以“a>b>c”为假*/ else printf("%d\n",--i); 输出值:4 5.复合语句:>=2条的语句用{}括起来,共同完成一定功能 注意复合语句的用法! 6.在上机改错题中,如果在if语句后面的表达式中出现“=”,90%要将“=”改为“==”。 可乐雪碧原理/*输入两个实数,由小到大输出*/ 超级考点:交换 e.g. #include void main( ) {

c语言if语句的练习题答案

1、编写程序输入 a 和 b ,求 a 和 b 的余数和商。 #include<> voidmain() { inta,b; scanf("%d%d",&a,&b); printf("商为%d 余数为%d",a/b,a%b); } 2、输入一个整型数据,分别求出各位数字。如:469,则个位数是 9,十位数是 6, 百位数是 4。 #include<> voidmain() {inta,m=0; intt,t1,t2,t3,t4; scanf("%d",&a); if(a<0||a>99999) printf(" 输入数据超出范围 \n"); elseif(a>=0&&a<10) {m=1; printf(" 该数是 %d 位数,其个位数为 %d\n",m,a); } elseif(a>=10&&a<100) { m=2; t=a%10; a=a/10; printf("该数是%d位数,其个位数为%d十位数为%d\n",m,t,a); } elseif(a>=100&&a<1000) { m=3; t=a%10; t1=(a/10)%10; t2=a/100; printf("该数是%d位数,其个位数为 %d十位数为%d百位数为%d\n",m,t,t1,t2); } elseif(a>=1000&&a<10000) { m=4; t=a%10; t1=a/10%10; t2=a/100%10; t3=a/1000; printf("该数是%d位数,其个位数为%d十位数为%d百位数为%d千位数字 为%d\n",m,t,t1,t2,t3); } elseif(a>=10000&&a<100000) { m=5; t=a%10; t1=a/10%10; t2=a/100%10; t3=a/1000%10; t4=a/10000; printf(" 该数是 %d 位数,其个位数为 %d 十位数为 %d 百位数为 %d 千位数字为 %d 万位数字为%d\n",m,t,t1,t2,t3,t4); } } 以上写法太繁琐了,如果学习了循环,则简单很多。 #include<>

c语言(if语句)练习题

If 语句练习 一、程序填空: 输入3个数分别是a 、b 、c 。先将a 、b 中的较大致存入a 中、较小数存入b 中;再让a 与c 比较,将a 与c 中的较大数存在a 中,较小数存人c 中;最后比较b 与c ,将b 、c 中的较大数存入b 中,较小数存入c 中。这样a 、b 、c 这3个数的序列即按从大到小排列。 #include main() { int a,b,c,t; printf(“Input three integers:”); scanf(“%d,%d,%d ”, ); /*输入a ,b ,c3个整数*/ if(a?=?--≤?? 分析下列程序代码能否实现,如果程序中存在错误,请修改程序中的错误,然后运行修改后的程序。 #include main() { int x,y; scanf(“%d ”,&x); if(x*x – 10>0); y = x*x; printf(“y= %d\n ”,y); else y=-(x*x); printf(“y=%d\n ”,y); } 三、编程题 1、编写程序从键盘上输入两个整数,检查第一个数是否能被第二个数整除。

2、编写一个程序,输入某人的身高(cm)和体重(kg),按下式确定其体重是否为标准、过胖或过瘦。(1)标准体重=身高-110;(2)超过标准体重5kg(即大于5kg)为过胖;(3)低于标准体重5kg(即小于5kg)为过瘦。 3、判断某一年是否是闰年: (1) 被4整除但不能被100整除; 或(2) 被400整除; 4、编写程序计算升高:每个做父母的都关心自己孩子成人后的身高,据有关生理卫生知识与数理统计分析表明,影响小孩成人后身高的因素有遗传、饮食习惯与坚持体育锻炼等。小孩成人后身高与其父母身高和自身性别密切相关。设faHeight为其父身高,moHeight为其母身高,身高预测公式为: 男性成人时身高= (faHeight + moHeight) * 0.54(cm) 女性成人时身高= (faHeight * 0.923 + moHeight) / 2(cm) 此外,如果喜爱体育锻炼,那么可增加身高2%,如果有良好的卫生饮食习惯,那么可增加身高1.5%。 程序要求:父亲的身高与母亲的身高、小孩的性别、是否喜爱体育锻炼和是否有良好的卫生饮食习惯也从键盘上输入,最终输出预测的身高。 提示:小孩性别的输入方式,可在屏幕给出提示“请输入小孩的性别(男孩输入M,女孩输入F):”,然后通过if语句来判断从键盘输入的字符是M还是F。是否喜爱体育锻炼也可以通过类似的方式实现。 演示效果如下:

c语言中if语句知识点总结(可编辑修改word版)

If语句知识点总结 一.if语句的三种基本形式 (1)if (表达式)语句; 假 例: if(x>y) printf(“%d”,x); (2)if(表达式) 语句1; else语句2; 例:if (x>y) printf(“%d”,x); else printf(“%d”,y); (3)if(表达式1)语句1; else if(表达式2)语句2; else if(表达式3)语句3; ……

else if(表达式m)语句m; else 语句n; 例:if (number>10)cost=0.15; else if(number>30)cost=0.10; else if(number>100)cost=0.075; else if(number>500)cost=0.05; else cost=0.01; c语言中的六大陷阱 1.if(表达式)一般为逻辑表达式或关系表达式输出1/0,但原则上可以 是任何变量、常量和表达式; 2.if(常量)--C语言中任何非零的数都被认作为真; 例一:int i=5; if(2)printf("%d\n",++i); else printf("%d\n",--i); 输出值:6 例二:int i=5,a=3,b; if(b=a)printf("%d\n",++i); /*上面括号里“b=a”即将a的值赋给b,所以该条件为真*/

else printf("%d\n",--i); 输出值:6 例三:int i=5,a=3,b=9; if(b==a)printf("%d\n",++i); /*括号中“==”含义为“等于”,所以是假*/ else printf("%d\n",--i); 输出值:4 3.注意:if(表达式)语句;表达式里面是"=="还是"=" 4.如果if后面的表达式是多个关系表达式,要注意关系运算符 是两两进行比较的!!!!!!! int a=6,b=5,c=4,i=5; if(a>b>c)printf("%d\n",++i); /*括号中“a>b>c”,先判断“a>b”,为真,值为1;然后判断“1>c”,为假,所以“a>b>c”为假*/ else printf("%d\n",--i); 输出值:4 5.复合语句:>=2条的语句用{}括起来,共同完成一定功能 注意复合语句的用法! 6.在上机改错题中,如果在if语句后面的表达式中出现“=”,90%要将 “=”改为“==”。 可乐雪碧原理/*输入两个实数,由小到大输出*/ 超级考点:交换 e.g. #include void main( ) {

c语言if语句的练习题答案

1、编写程序输入a和b,求a和b的余数和商。 #include<> void main() { int a,b; scanf("%d%d",&a,&b); printf("商为%d 余数为%d",a/b,a%b); } 2、输入一个整型数据,分别求出各位数字。如:469,则个位数是9,十位数是6,百位数 是4。 #include<> void main() { int a,m=0; int t,t1,t2,t3,t4; scanf("%d",&a); if(a<0||a>99999) printf("输入数据超出范围\n"); else if (a>=0&&a<10) { m=1; printf("该数是%d位数,其个位数为%d\n",m,a); } else if(a>=10&&a<100) { m=2; t=a%10; a=a/10; printf("该数是%d位数,其个位数为%d 十位数为%d\n",m,t,a); } else if(a>=100&&a<1000) { m=3; t=a%10; t1=(a/10)%10; t2=a/100; printf("该数是%d位数,其个位数为%d 十位数为%d 百位数为%d\n",m,t,t1,t2); } else if(a>=1000&&a<10000) { m=4; t=a%10; t1=a/10%10; t2=a/100%10; t3=a/1000; printf("该数是%d位数,其个位数为%d 十位数为%d 百位数为%d 千位数字

为%d\n",m,t,t1,t2,t3); } else if(a>=10000&&a<100000) { m=5; t=a%10; t1=a/10%10; t2=a/100%10; t3=a/1000%10; t4=a/10000; printf("该数是%d位数,其个位数为%d 十位数为%d 百位数为%d 千位数字为%d 万位数字为%d\n",m,t,t1,t2,t3,t4); } } 以上写法太繁琐了,如果学习了循环,则简单很多。 #include<> void main() { int a,b; int n=0; scanf("%d",&a); while(a)//while(a!=0) { n++;//n用来统计数字a是几位数,n的初值必须为0 b=a%10; a=a/10;//a/=10; printf("%d",b);//输出a的各位数字 } printf("a的位数为%d",n);//此语句必须写在循环体的外面 } 3、编程输入两个整型数据a和b,若a2+b2的结果大于100,则输出a2+b2的值,否则输出 a+b的结果。 #include<> void main() { int a,b; scanf("%d%d",&a,&b); if(a*a+b*b>100) printf("%d\n",a*a+b*b); else printf("%d\n",a+b); } //还可以用一个变量来表示a2+b2的值 4、输入两个整数a和b,若a3-b3小于0,则输出a-b的值,否则输出a3-b3的结果。 #include<> void main()

C语言if语句详解

C语言if语句详解 用if语句可以构成分支结构。它根据给定的条件进行判断,以决定执行某个分支程序段。C 语言的if语句有三种基本形式。 语句的三种形式 1)第一种形式为基本形式:if if(表达式) 语句 其语义是:如果表达式的值为真,则执行其后的语句,否则不执行该语句。其过程可表示为下图。

本例程序中,输入两个数a、b。把a先赋予变量max,再用if语句判别max和b的大小,如max小于b,则把b赋予max。因此max中总是大数,最后输出max的值。 2) 第二种形式为: if-else if(表达式) 语句1; else 语句2; 其语义是:如果表达式的值为真,则执行语句1,否则执行语句2 。其执行过程可表示为下图。

输入两个整数,输出其中的大数。改用if-else语句判别a,b的大小,若a大,则输出a,否则输出b。 3) 第三种形式为if-else-if形式 前二种形式的if语句一般都用于两个分支的情况。当有多个分支选择时,可采用if-else-if 语句,其一般形式为: if(表达式1) 语句1; else if(表达式2) 语句2; else if(表达式3) 语句3; … else if(表达式m) 语句m; else 语句n; 其语义是:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。如果所有的表达式均为假,则执行语句n。然后继续执行后

续程序。if-else-if语句的执行过程如下图所示。

本例要求判别键盘输入字符的类别。可以根据输入字符的ASCII码来判别类型。由ASCII 码表可知ASCII值小于32的为控制字符。在“0”和“9”之间的为数字,在“A”和“Z”之间为大写字母,在“a”和“z”之间为小写字母,其余则为其它字符。这是一个多分支选择的问题,用if-else-if语句编程,判断输入字符ASCII码所在的范围,分别给出不同的输出。例如输入为“g”,输出显示它为小写字符。 在使用if语句中还应注意以下问题: ?本语句的语义是,把b值赋予a,如为非0则输出该值,否则输出“a=0”字符串。这种用法在程序中是经常出现的。 ?在if语句中,条件判断表达式必须用括号括起来,在语句之后必须加分号。 ?在if语句的三种形式中,所有的语句应为单个语句,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用{}括起来组成一个复合语句。但要注意的是在}之后不能再加分号。例如:

c语言中多个if的用法

c语言中多个if的用法 c语言中多个if的用法的用法如下:用if语句可以构成分支结构。 它根据给定的条件进行判断,以决定执行某个分支程序段。 C语言的if语句有三种基本形式。 语句的三种形式1) 第一种形式为基本形式:ifif(表达式) 语句其语义是:如果表达式的值为真,则执行其后的语句,否则不执行该语句。 其过程可表示为下图。 【例5-3】01.#include 02.int main(void){03. int a,b,max;04. printf("\n input two numbers: ");05. scanf("%d%d",&a,&b);06. max=a;07. if (max把a先赋予变量max,再用if语句判别max和b的大小,如max小于b,则把b赋予max。 因此max中总是大数,最后输出max的值。 2) 第二种形式为: if-elseif(表达式)语句1;else语句2;其语义是:如果表达式的值为真,则执行语句1,否则执行语句2 。 其执行过程可表示为下图。 【例5-4】01.#include 02.int main(void){03. int a, b;04. printf("input two numbers: ");05. scanf("%d%d",&a,&b);06. if(a>b)07. printf("max=%d\n",a); 改用if-else语句判别a,b的大小,若a大,则输出a,否则输出b。 3) 第三种形式为if-else-if形式前二种形式的if语句一般都用于两个分支的情况。

当有多个分支选择时,可采用if-else-if语句,其一般形式为:if(表达式1)语句1;else if(表达式2)语句2;else if(表达式3)语句3;…else if(表达式m)语句m;else语句n;其语义是:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。 然后跳到整个if语句之外继续执行程序。 如果所有的表达式均为假,则执行语句n。 然后继续执行后续程序。 if-else-if语句的执行过程如下图所示。 【例5-5】01.#include 02.int main(void){03. char c;04. printf("input a character: ");05. c=getchar();06. if(c='0'&&c='A'&&c='a'&&c这是一个多分支选择的问题,用if-else-if语句编程,判断输入字符ASCII 码所在的范围,分别给出不同的输出。 例如输入为“g,输出显示它为小写字符。 在使用if语句中还应注意以下问题: 1. 在三种形式的if语句中,在if关键字之后均为表达式。 该表达式通常是逻辑表达式或关系表达式,但也可以是其它表达式,如赋值表达式等,甚至也可以是一个变量。 例如:if(a=5) 语句;if(b) 语句;都是允许的。 只要表达式的值为非0,即为“真。 如在:if(a=5)…;中表达式的值永远为非0,所以其后的语句总是要执行的,当然这种情况在程序中不一定会出现,但在语法上是合法的。

相关文档