c语言选择结构
- 格式:docx
- 大小:46.75 KB
- 文档页数:18
选择结构(if & switch)If语句一、if的三种结构1、单分支结构(if结构)If(表达式)语句;2、双分支结构(if-else结构)If(表达式)语句1;else语句2;3、多分支结构(if-else-if结构)If(表达式1)语句1;else if(表达式2)语句2;……else(表达式n-1)语句n-1;else语句n;说明:(建议在分支语句上加大括号,以减少错误)○1语句中的表达式可以是任意表达式:if(x) y=1\x;else y=10000;○2一个if结构不可分割;○3一个分支中包含多个语句时,要用{};○4else和else-if不是独立的,其前方必须有与之配对的if语句;二、if语句的嵌套在if语句中,又包含一个或多个if语句:if(score>=80)if(score>=90) printf(“A”);else printf(“B”);elseif(score>=60) printf(“C”);else printf(“D”);注意else与if的匹配三、条件运算符如果两个分支的内容都是给同一个变量赋值,则可用简单的条件运算符处理:if(a>b) max=a;else max=b;可用: max=a>b ? a : b;赋值运算符右边为一条件表达式。
条件表达式的一般形式:表达式1 ?表达式2 :表达式3条件表达式的执行过程: a>b ? a : b优先级:低于关系运算符,高于赋值运算符。
结合性:右结合性。
Switch(多分支)1、适用于根据一个表达式的值就可确定走哪个分支的情况。
switch(表达式){常量表达式1:语句1常量表达式2:语句2┋常量表达式n:语句ndefault:语句n+1}注意:常量表达式不可以是字符串2、switch一般配合break使用:switch (控制表达式) {case 常量表达式:语句列表;break;case 常量表达式:语句列表;break;...default:语句列表}说明:1、break用来跳出switch语句块。
C语言选择结构选择结构是C语言中的一种流程控制结构,用于根据给定的条件选择不同的执行路径。
本文将详细介绍C语言中的选择结构以及其使用。
选择结构主要包括if语句、if-else语句、else if语句和switch 语句。
1. if语句if语句是最简单的选择结构,用于根据给定条件决定是否执行段代码。
其语法结构为:if (condition)//如果条件为真,执行这里的代码其中,condition是一个表达式,如果它的值为真,则执行if语句中的代码块。
if语句也可以与else语句结合使用,使得在条件为假时执行不同的代码块。
2.if-else语句if-else语句是在if语句的基础上增加了一个分支,用于在条件为假时执行另外一段代码。
其语法结构为:if (condition)//如果条件为真,执行这里的代码else//如果条件为假,执行这里的代码如果if语句的条件为真,则执行if语句中的代码块,否则执行else语句中的代码块。
3.else if语句else if语句用于在多个条件之间进行选择,并根据不同的条件执行相应的代码块。
其语法结构为:if (condition1)//如果条件1为真,执行这里的代码else if (condition2)//如果条件1为假,条件2为真,执行这里的代码else//如果条件1和条件2都为假,执行这里的代码在多个else if语句中,只有第一个满足条件的语句会被执行,其他的else if和else语句会被忽略。
4.switch语句switch语句是用来根据不同的取值来执行不同的代码块。
其语法结构为:switch (expression)case constant1:// 如果expression的值等于constant1,执行这里的代码break;case constant2:// 如果expression的值等于constant2,执行这里的代码break;...default:// 如果expression的值与之前的常量都不匹配,执行这里的代码expression 表达式的值会与每个 case 后面的常量进行比较,如果匹配则执行相应的代码块,可以使用 break 语句来跳出 switch 代码块。
选择结构c语言选择结构是C语言中的一种重要语句,它可以根据条件的真假来选择执行相应的语句块,从而实现程序的不同流程控制。
本篇文章将详细介绍C语言中选择结构的使用方法及注意事项。
一、if语句if语句是C语言中最基本的选择结构,其语法结构为:if(条件表达式){//当条件表达式为真时执行的语句块}其中,条件表达式一般是关系表达式或逻辑表达式,其返回值为真或假。
当条件表达式为真时,执行花括号中的语句块;当条件表达式为假时,跳过整个if语句块,继续执行下一条语句。
示例代码:#include<stdio.h>int main(){int age;printf("请输入您的年龄:");scanf("%d",&age);if(age>=18){printf("您已经成年!\n");}printf("程序结束!\n");return 0;}该程序根据输入的年龄判断是否成年,并输出相应的提示信息。
二、else语句如果if语句的条件表达式为假,程序会直接跳过整个if语句块。
如果需要在条件为假时执行一些操作,可以使用else语句。
else语句的语法结构为:if(条件表达式){//当条件表达式为真时执行的语句块}else{//当条件表达式为假时执行的语句块}示例代码:#include<stdio.h>int main(){int age;printf("请输入您的年龄:");scanf("%d",&age);if(age>=18){printf("您已经成年!\n");}else{printf("您还未成年!\n");}printf("程序结束!\n");return 0;}该程序根据输入的年龄判断是否成年,并输出相应的提示信息。
C语⾔程序的三种基本结构1、程序结构:在C语⾔程序中,⼀共有三种程序结构:顺序结构、选择结构(分⽀结构)、循环结构; 顺序结构:从头到尾⼀句接着⼀句的执⾏下来,直到执⾏完最后⼀句; 选择结构:到某个节点后,会根据⼀次判断的结果来决定之后向哪⼀个分⽀⽅向执⾏; 循环结构:循环结构有⼀个循环体,循环体⾥是⼀段代码。
对于循环结构来说,关键在于根据判断的结果,来决定循环体执⾏多少次; 注:在逻辑上有⼀种bool类型(也叫boolean类型,布尔类型),只有两个值,即真和假。
C语⾔的判断表达式最终的值就是⼀个bool类型,这个判断表达式的bool值就决定了选择结构如何选择,循环结构如何循环;2、顺序结构:顺序结构很简单,⼀般我们遇到的除了选择结构和循环结构外,都是顺序结构;3、选择结构:C语⾔中常⽤的选择结构主要有以下两种: (1) if else:引⼊关键字:if else else if if (bool值) // 如果bool值为真,则执⾏代码段1,否则执⾏代码段2 { 代码段1 } else { 代码段2 } if (bool值1) // 如果bool值1为真,则执⾏代码段1,否则判断bool值2是否为真 { 代码段1 } else if (bool值2) // 若bool值2为真则执⾏代码段2,否则直接执⾏代码段3 { // 开头的if和结尾的else都只能有⼀个,但是中间的else if可以有好多个 代码段2 } else { 代码段3 }1 #include <stdio.h>23int main(void)4 {5int a, b, max;67 a = 456;8 b = 45;910if (a > b) // 判断表⽰式11 {12 max = a;13 printf("true.\n");14 }15else if (a == b)16 {17 max = a;18 printf("a == b.\n");19 }20else21 {22 max = b;23 printf("false.\n");24 }2526 printf("max = %d.\n", max);2728return0;29 } (2) switch case:引⼊关键字:switch case break default switch (变量) // 执⾏到这⼀句时,变量的值是已知的 { // switch case语句执⾏时,会⽤该变量的值依次与各个case后的常数去对⽐,试图找到第⼀个匹配项,找到匹配的项⽬后, case 常数1: // 就去执⾏该case对应的代码段,如果没找到则继续下⼀个case,直到default 代码段1; // 如果前⾯的case都未匹配,则default匹配。
【c语言程序设计】选择结构程序设计C语言程序设计 - 选择结构程序设计C语言是一种通用的程序设计语言,广泛应用于计算机科学和软件开发领域。
选择结构是C语言中的一种重要控制结构,用于根据条件的真假来决定程序运行的路径。
本文将介绍选择结构在C语言程序设计中的应用以及相关的编程技巧。
一、IF语句IF语句是最简单的选择结构,用于根据一个条件的真假来决定程序的下一步动作。
它的基本语法如下:if (条件) {// 如果条件为真,执行这里的代码}例如,如果我们想判断一个数字是否为正数,可以使用如下的C代码:```c#include <stdio.h>int main() {int num;printf("请输入一个数字:");scanf("%d", &num);if (num > 0) {printf("这是一个正数。
\n");}return 0;}```上述代码中,用户输入一个数字,程序会判断这个数字是否大于0,如果是,则输出"这是一个正数"。
二、IF-ELSE语句IF-ELSE语句是在条件为真或假的情况下,分别执行不同的代码块。
它的基本语法如下:if (条件) {// 如果条件为真,执行这里的代码} else {// 如果条件为假,执行这里的代码}例如,我们想判断一个数字是否为奇数,可以使用如下的C代码:```c#include <stdio.h>int main() {int num;printf("请输入一个数字:");scanf("%d", &num);if (num % 2 == 0) {printf("这是一个偶数。
\n");} else {printf("这是一个奇数。
\n");}return 0;}```上述代码中,用户输入一个数字,程序会通过判断这个数字是否能被2整除来确定是奇数还是偶数,并输出相应的结果。
1. 以下非法的赋值语句是A: n=(i=2,++i);B: j++;C: ++(i+1);D: x=j>0;2. 已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1 && y+z/2 的值是A: 6B: 0C: 2D: 13. 阅读以下程序:main(){ int x;scanf(“%d”,&x);if(x--<5) printf(“%d”,x);else printf(“%d”,x++);}程序运行后,如果从键盘上输人5,则输出结果是()。
A: 3B: 4C: 5D: 64. 有如下程序main0{ int a=2,b=-1,c=2;if(a<b)if(b<0) c=0;else c++printf("%d\n",c);}该程序的输出结果是A: 0B: 1C: 2D: 35. 有以下程序#include <stdio.h>main()a=c/100%9;b=(-1)&&(-1);printf("%d,%d\n",a,b);}输出结果是( )。
A: 2,1B: 3,2C: 4,3D: 2,-16.两次运行下面的程序,如果从键盘上分别输入6 和4,则输出结果是main( ){ int x;scanf("%d",&x);if(x + + >5) printf("%d",x);else printf("%d\n",x - -); }A: 7 和5B: 6 和3C: 7 和4D: 6 和47. 能表示x 为偶数的表达式是A: x%2==0B: x%2==1C: x%2D: x%2!=08. 下面的程序段中共出现了几处语法错误?int a,b;scanf("%d",a);b=2a;if(b>0) printf("%b",b);A: 1B: 2C: 3D: 49. C 语言中,逻辑“真”等价于A: 大于零的数B: 大于零的整数C: 非零的数D: 非零的整数10. C 语言的switch 语句中,case 后A: 只能为常量B: 只能为常量或常量表达式C: 可为常量及表达式或有确定值的变量及表达式D: 可为任何量或表达式11. 已知int i=10;表达式"20-0<=i<=9"的值是A: 0B: 1C: 19D: 2012. 设有int i, j, k; 则表达式i=1,j=2,k=3, i&&j&&k 的值为A: 1B: 2C: 3D: 013. 逻辑运算符两侧运算对象的数据类型A: 只能是0 或1B: 只能是0 或非0 正数C: 只能是整型或字符型数据D: 可以是任何类型的数据14. 能正确表示“当x 的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是()A: (x>=1)&&(x<=10)&&(x>=200)&&(x<=210)B: (x>=1)||(x<=10)||(x>=200)||(x<=210)C: (x>=1)&&(x<=10)||(x>=200)&&(x<=210)D: (x>=1)||(x<=10)&&(x>=200)||(x<=210)15. 已知x=43,ch=’a’,y=0;则表达式(x>=y&&ch<’b’&&!y)的值是()A: 0B: 1C: 语法错误D: 假16. 执行下列语句后a 的值为int a=5,b=6,w=1,x=2,y=3,z=4;(a=w>x)&&(b=y>z);A: 5B: 0C: 217. 以下程序的输出结果是()main(){ int a=5,b=0,c=0;if(a=b+c) printf(“***\n”);else printf(“$$$\n”);}A: 有语法错误不能通过编译B: 可以通过编译但不能通过连接C: ***D: $$$18. 以下程序的输出结果是()main(){ int m=5;if(m++>5) printf(“%d\n”,m);else printf(“%d\n”,m--);}A: 4B: 5C: 6D: 719. 若运行时给变量x 输入12,则以下程序的运行结果是()main(){ int x,y;scanf(“%d”,&x);y=x>12?x+10:x-12;printf(“%d\n”,y);}A: 0B: 22C: 12D: 1020. 若w=1,x=2,y=3,z=4,则表达式w<x?w:y<z?y:z 的值是A: 4B: 3C: 2D: 121. 设有int a=2,b;则执行b=a&&1;语句后,b 的结果是A: 0C: 2D: 322. 设有int m=1,n=2;则++m==n 的结果是A: 0B: 1C: 2D: 323. 设有int n=2;则++n+1==4 的结果是A: trueB: falseC: 1D: 024. 设有int n=2;则++n+1==4,n 的结果是A: 1B: 2C: 3D: 425. 以下使i 的运算结果为4 的表达式是A: int i=0,j=0; (i=3,(j++)+i);B: int i=1,j=0; j=i=((i=3)*2);C: int i=0,j=1; (j==1)?(i=1):(i=3);D: int i=1,j=1; i+=j+=2;26. 当a=5,b=2 时,表达式a= =b 的值为A: 2B: 1C: 0D: 527. 若执行以下程序时从键盘上输入9,_______则输出结果是main(){ int n;scanf("%d",&n);if(n++<10) printf("%d\n",n);else printf("%d\n",n--);}A: 11B: 10C: 928. main(){ int a,b,d=241;a=d/100%9;b=(-1)&&(-1);printf(“%d,%d”,a,b);}A: 6,1B: 2,1C: 6,0D: 2,029. 若有int x=10,y=20,z=30;以下语句执行后x,y,z 的值是()if (x>y)z=x;x=y;y=z;A: x=10,y=20,z=30B: x=20,y=30,z=30C: x=20,y=30,z=10D: x=20,y=30,z=2030. 下列表达式中能表示a 在0 到100 之间的是A: a>0&a<100B: !(a<0||a>100)C: 0<a<100D: !(a>0&&a<100)31. 为了避免嵌套的if—else 语句的二义性,C 语言规定else 总是与()组成配对关系。
A: 缩排位置相同的ifB: 在其之前未配对的ifC: 在其之前未配对的最近的ifD: 同一行上的if32. 已知:int x,a,b;下列选项中错误的if 语句是A: if(a=b) x++;B: if(a=<b) x++;C: if(a-b) x++;D: if(x) x++;33. 当把以下四个表达式用作if 语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是()。
A: k%2B: k%2==1D: !k%2==134. 设有定义:int a=2,b=3,c=4;,则以下选项中值为0 的表达式是()。
A: (!a==1)&&(!b==0)B: aC: a && bD: a||(b+b)&&(c-a)35. 以下程序段的输出结果是。
int a=10,b=50,c=30;if(a>b)a=b;b=c;c=a;printf("a=%d b=%d c=%d\n",a,b,c);A: a=10 b=50 c=10B: a=10 b=30 c=10C: a=50 b=30 c=10D: a=50 b=30 c=5036. 以下4 个选项中,不能看作一条语句的是A: {;}B: a=0,b=0,c=0;C: if(a>0);D: if(b==0) m=1;n=2;以下题目为二级题37. if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是A)必须是逻辑值B)必须是整数值C)必须是正数D)可以是任意合法的数值38. 有以下程序段int i,n;for(i=0;i<8;i++){n=rand()%5;switch (n){ case 1:case 3:printf("%d\n",n); break;case 2:case 4:printf("%d\n",n);continue;}printf("%d\n",n);}以下关于程序段执行情况的叙述,正确的是A)for循环语句固定执行8次B)当产生的随机数n为4时结束循环操作C)当产生的随机数n为1和2时不做任何操作D)当产生的随机数n为0时结束程序运行39.有以下程序#include <stdio.h>main(){ int x=1,y=0;if(!x) y++;else if(x==0)if (x) y+=2;else y+=3;printf("%d\n",y);}程序运行后的输出结果是A)3B)2C)1D) 040.有以下程序#include <stdio.h>int fun (int x,int y){ if(x!=y) return ((x+y)/2);else return (x);}main(){ inta=4,b=5,c=6;printf("%d\n",fun(2*a,fun(b,C)));}程序运行后的输出结果是A)3B)6C)8D)1241. 有以下程序:#include <stdio.h>main(){int a=0,b=0,c=0,d=0;if(a=1) b=1;c=2;else d=3;printf("%d,%d,%d,%d",a,b,c,d);}程序输出( ).A)1,1,2,0B)0,0,0,3C)编译有错D) 0,1,2,042. 有以下程序:#include <stdio.h>main(){int x=1,y=0,a=0,b=0;switch(x){ case 1:switch(y){case 0: a++; break;case 1: b++; break;}case 2 : a++; b++; break;case 3: a++; b++;}printf("a=%d,b=%d\n",a,b);}A) a=2,b=2B) a=2,b=1C) a=1,b=1D) a=1,b=043. 若有定义int x, y; 并已正确给变量赋值,则以下选项中与表达式(x-y)?(x++) : (y++)中的条件表达式(x-y) 等价的是()A) (x-y<0||x-y>0)B) (x-y<0)C) (x-y>0)D)(x-y==0)44 .有以下程序:#include <stdio.h>main(){int x=1,y=0;if ( !x ) y++;else if (x==0)if(x) y+=2;else y+=3;printf("%d\n",y);}程序运行后的输出结果是()A) 3B) 2C) 1D) 045. 若有定义: float x=1.5; int a =1,b=3,c=2;则正确的switch语句是()A)switch(a+b){case 1: printf("*\n");case 2+1 : printf("**\n");}B)switch( (int)x );{ case 1: printf("*\n");case 2 : printf("**\n");}C) switch( x );{ case 1.0: printf("*\n");case 2.0 : printf("**\n");}D) switch( a+b ){ case 1: printf("*\n");case c: printf("**\n");}46. 若变量已正确定义,在if ( W ) printf("%d\n",k); 中,以下不可替代W的是()。