c语言程序设计选择结构程序设计.docx

上传人:b****0 文档编号:17231049 上传时间:2023-07-23 格式:DOCX 页数:17 大小:23.46KB
下载 相关 举报
c语言程序设计选择结构程序设计.docx_第1页
第1页 / 共17页
c语言程序设计选择结构程序设计.docx_第2页
第2页 / 共17页
c语言程序设计选择结构程序设计.docx_第3页
第3页 / 共17页
c语言程序设计选择结构程序设计.docx_第4页
第4页 / 共17页
c语言程序设计选择结构程序设计.docx_第5页
第5页 / 共17页
c语言程序设计选择结构程序设计.docx_第6页
第6页 / 共17页
c语言程序设计选择结构程序设计.docx_第7页
第7页 / 共17页
c语言程序设计选择结构程序设计.docx_第8页
第8页 / 共17页
c语言程序设计选择结构程序设计.docx_第9页
第9页 / 共17页
c语言程序设计选择结构程序设计.docx_第10页
第10页 / 共17页
c语言程序设计选择结构程序设计.docx_第11页
第11页 / 共17页
c语言程序设计选择结构程序设计.docx_第12页
第12页 / 共17页
c语言程序设计选择结构程序设计.docx_第13页
第13页 / 共17页
c语言程序设计选择结构程序设计.docx_第14页
第14页 / 共17页
c语言程序设计选择结构程序设计.docx_第15页
第15页 / 共17页
c语言程序设计选择结构程序设计.docx_第16页
第16页 / 共17页
c语言程序设计选择结构程序设计.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

c语言程序设计选择结构程序设计.docx

《c语言程序设计选择结构程序设计.docx》由会员分享,可在线阅读,更多相关《c语言程序设计选择结构程序设计.docx(17页珍藏版)》请在冰点文库上搜索。

c语言程序设计选择结构程序设计.docx

c语言程序设计选择结构程序设计

第一章CH4选择结构程序设计

4.1读程序

1.有如下代码:

#include

main()

{charch;

ch=getchar();

switch(ch)

{case‘A’:

printf(“%c”,’A’);

case‘B’:

printf(“%c”,’B’);break;

default:

printf(“%s\n”,”other”);}

}

当从键盘输入字母A时,运行结果为:

AB

详见switch语句

switch(表达式)

{case常量1:

语句1

case常量2:

语句2

┇┇┇

case常量n:

语句n

default:

语句n+1

}

其中表达式,常量1,…,常量n都为整型或字符型

case相当于给出执行程序的入口和起始位置,若找到匹配的常量,则从此处开始往下执行程序,不再匹配常量,直至遇到break或switch结束

本题过程:

首先从键盘接收一个字符’A’并将其放在变量ch中。

执行switch语句。

Switch后面的条件表达式为ch,因此表达式的值即为字符’A’.用字符’A’依次与下面的case中的常量匹配。

与第1个case后的常量匹配,则从其后的语句开始往下执行程序(在执行过程中不再进行匹配。

)因此先执行printf(“%c”,’A’),屏幕上输出A;再往下继续执行printf(“%c”,’B’),屏幕上输出B;再继续执行break,此时跳出switch语句。

2.有如下代码:

#include

main()

{inta=1,b=0;

scanf(“%d”,&a);

switch(a)

{case1:

b=1;break;

case2:

b=2;break;

default:

b=10;}

printf("%d",b);

}

若键盘输入5,运行结果为:

10

本题过程:

首先用scanf函数为变量a赋值为5。

执行switch语句。

switch后面的条件表达式为a,因此表达式的值即为5.用5依次与下面case中的常量匹配。

没有找到匹配的常量,因此两个case后的语句都不执行。

执行default后面的语句b=10;将10赋给变量b。

输出变量b,结果为10

3.有如下代码:

#include

main()_

{chargrade=’C’;

switch(grade)

{

case‘A’:

printf(“90-100\n”);

case‘B’:

printf(“80-90\n”);

case‘C’:

printf(“70-80\n”);

case‘D’:

printf(“60-70\n”);break;

case‘E’:

printf(“<60\n”);

default:

printf(“error!

\n”);

}

}

运行结果为:

70-80

60-70

本题过程:

首先从键盘接收一个字符’C’并将其放在变量grade中。

执行switch语句。

switch后面的条件表达式为grade,因此表达式的值即为字符’C’.用字符’C’依次与下面的case中的常量匹配。

与第3个case后的常量匹配,则从其后的语句开始往下执行程序(在执行过程中不再进行匹配。

)因此先执行printf(“70-80\n”);,屏幕上输出70-80,并换行;再往下继续执行printf(“60-70\n”),屏幕上输出60-70,并换行;再继续执行break,此时跳出switch语句。

4.在嵌套使用if语句时,C语言规定else总是___C___。

A、和之前与其具有相同缩进位置的if配对B、和之前与其最近的if配对

C、和之前与其最近的且不带else的if配对D、和之前的第一个if配对

5.假定所有变量均已正确说明,下列程序段运行后x的值是___B___。

a=b=c=0;x=35;

if(!

a)x--;

elseif(b);

if(c)x=3;

elsex=4;

A、34B、4C、35D、3

6.有如下程序

main()

{

inta=2,b=-1,c=2;

if(a

if(b<0)c=0;

elsec++;

printf("%d\n",c);

}

该程序的输出结果是___C___。

A、0B、1C、2D、3

7.有以下程序

main()

{intk=5,n=0;

while(k>0)

{switch(k)

{default:

break;

case1:

n+=k;

case2:

case3:

n+=k;

}

k--;

}

printf("%d\n",n);

}

程序运行后的输出结果是___D___。

A、0B、4C、6D、7

8.有以下程序

main()

{

inti;

for(i=0;i<3;i++)

switch(i)

{

case1:

printf("%d",i);

case2:

printf("%d",i);

default:

printf("%d",i);

}

}

执行后输出结果是___A___。

A、011122B、012C、012020D、120

9.如下程序

main()

{intx=1,a=0,b=0;

switch(x)

{case0:

b++;

case1:

a++;

case2:

a++;b++;

}

printf("a=%d,b=%d\n",a,b);

}

该程序的输出的结果是___A___。

A、a=2,b=1B、a=1,b=1C、a=1,b=0D、a=2,b=2

10.以下程序的输出结果是___A___。

main()

{inta=0,i;

for(i=1;i<5;i++)

{

switch(i)

{

case0:

case3:

a+=2;

case1:

case2:

a+=3;

default:

a+=5;

}

}

printf("%d\n",a);

}

A、31B、13C、10D、20

11.下列叙述中正确的是___D___。

A、break语句只能用于switch语句

B、在switch语句中必须使用default

C、break语句必须与switch语句中的case配对使用

D、在switch语句中,不一定使用break语句

12.设a为整型变量,不能正确表达数学关系:

10

A、10

C、a>10&&a<15D、!

(a<=10)&&!

(a>=15)

13.以下程序的输出结果是___A___。

main()

{inta=4,b=5,c=0,d;

d=!

a&&!

b||!

c;

printf("%d\n",d);

}

A、1B、0C、非0的数D、-1

14.语句:

printf("%d",(a=2)&&(b=-2));的输出结果是___D___。

A、无输出B、结果不确定C、-1D、1

15.设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为___C___。

A、0B、1C、2D、3

16.若变量c为char类型,能正确判断出c为小写字母的表达式是__D____。

A、'a'<=c<='z'B、(c>='a')||(c<='z')

C、('a'<=c)and('z'>=c)D、(c>='a')&&(c<='z')

17.能正确表示逻辑关系:

“a≥10或a≤0”的C语言表达式是___D___。

A、a>=10ora<=0B、a>=0|a<=10

C、a>=10&&a<=0D、a>=10||a<=10

18.有如下程序

main()

{

inta=1,b=2,m=0,n=0,k;

k=(n=b>a)||(m=a

printf("%d,%d\n",k,m);

}

程序运行后的输出结果是___C___。

A、0,0B、0,1C、1,0D、1,1

19.设intx=1,y=1;表达式(!

x||y--)的值是___B___。

A、0B、1C、2D、-1

20.设有定义:

inta=2,b=3,c=4;,则以下选项中值为0的表达式是___A___。

A、(!

a==1)&&(!

b==0)B、(a

c||1

C、a&&bD、a||(b+b)&&(c-a)

21.若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为__D___。

A、a<>0B、!

aC、a=0D、a

22.有如下程序段

inta=14,b=15,x;

charc='A';

x=(a&&b)&&(c<'B');

执行该程序段后,x的值为___D___。

A、trueB、falseC、0D、1

23.能正确表示a和b同时为正或同时为负的逻辑表达式是___D___。

A、(a>=0‖b>=0)&&(a<0‖b<0)B、(a>=0&&b>=0)&&(a<0&&b<0)

C、(a+b>0)&&(a+b<=0)D、a*b>0

24.以下程序的输出结果是___C___。

main()

{inta=5,b=4,c=6,d;printf("%d\n",d=a>b?

(a>c?

a:

c):

(b));

}

A、5B、4C、6D、不确定

25.若整型变量a、b、c、d中的值依次为:

1、4、3、2。

则条件表达式a

a:

c

c:

d的值是____A__。

A、1B、2C、3D、4

26.若有定义intx,y;并已正确给变量赋值,则以下选项中与表达式(x-y)?

(x++):

(y++)中的条件表达式(x-y)等价的是___C___。

A、(x-y>0)B、(x-y<0)C、(x-y<0||x-y>0)D、(x-y==0)

27.有以下程序段

intk=0,a=1,b=2,c=3;

k=a

b:

a;

k=k>c?

k:

b;

执行该程序段后,k的值是___B___。

A、3B、2C、1D、0

28.以下程序段中与语句k=a>b?

(b>c?

1:

0):

0;功能等价的是___A__。

A、if((a>b)&&(b>c))k=1;elsek=0;

B、if((a>b)||(b>c))k=1;elsek=0;

C、if(a<=b)k=0;elseif(b<=c)k=1;

D、if(a>b)k=1;elseif(b>c)k=1;elsek=0;

29.假定w、x、y、z、m均为int型变量,有如下程序段:

w=1;x=2;y=3;z=4;

m=(w

w:

x;

m=(m

m:

y;

m=(m

m:

z;

则该程序执行后,m的值是___D___。

A、4B、3C、2D、1

30.下面程序的输出结果是___A___。

#include

main()

{

inti=2;

printf("%d",f(i,i+1));

}

intf(inta,intb)

{

intc;

c=a;

if(a>b)c=1;

elseif(a==b)c=0;

elsec=-1;

return(c);

}

A、-1B、0C、1D、2

31.下面的程序运行结果为___D___。

main()

{

intx=3,y=0,z=0;

if(x=y+z)printf("****");

elseprintf("####");

}

A、有语法错误不能通过编译B、输出****。

C、可以通过编译,但是不能通过连接,因而不能运行。

D、输出####。

32.若执行以下程序时从键盘上输入9,则输出结果是____B__。

main()

{intn;

scanf("%d",&n);

if(n++<10)printf("%d\n",n);

elseprintf("%d\n",n--);

}

A、11B、10C、9D、8

33.下列条件语句中,功能与其他语句不同的是___D___。

A、if(a)printf("%d\n",x);elseprintf("%d\n",y);

B、if(a==0)printf("%d\n",y);elseprintf("%d\n",x);

C、if(a!

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

D、if(a==0)printf("%d\n",x);elseprintf("%d\n",y);

34.以下程序运行后的了输出结果是______。

main()

{inta=1,b=2,c=3;

if(c=a)printf("%d\n",c);

elseprintf("%d\n",b);

}

答案:

1

35.以下程序运行后的输出结果是______。

main()

{inta=1,b=3,c=5;

if(c=a+b)printf("yes\n");

elseprintf("no\n");

}

答案:

yes

36.若从键盘输入58,则以下程序输出的结果是______。

main()

{inta;

scanf("%d",&a);

if(a>50)printf("%d",a);

if(a>40)printf("%d",a);

if(a>30)printf("%d",a);

}

答案:

585858

37.以下程序的输出结果是______。

main()

{inta=5,b=4,c=3,d;

d=(a>b>c);

printf("%d\n",d);

}

答案:

0

38.若有以下程序

main()

{intp,a=5;

if(p=1!

=0)

printf("%d\n",p);

else

printf("%d\n",p+2);

}

执行后输出结果是______。

答案:

1

39.表示条件:

10

答案:

(x>10&&x<100||x<0)

40.若已知a=10,b=20,则表达式!

a

答案:

1

41.表示“整数x的绝对值大于5”时值为“真”的C语言表达式是______。

答案:

x>5||x<-5

42.以下程序运行后的输出结果是______。

main()

{intp=30;

printf("%d\n",(p/3>0?

p/10:

p%3));

}

答案:

3

43.以下程序运行后的输出结果是______。

main()

{

intx,a=1,b=2,c=3,d=4;

x=(a

a:

b;x=(x

x:

c;x=(d>x)?

x:

d;

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

}

答案:

1

4.2程序填空

1.输入一个字符,判断该字符是数字、字母、空格还是其他字符。

main()

{charch;

ch=getchar();

if(ch>=’a’&&ch<=’z’||ch>=’A’&&ch<=’Z’)

printf("ItisanEnglishcharacter\n");

elseif(ch>=’0’&&ch<=’9’)

printf("Itisadigitcharacter\n");

elseif(ch==‘’)

printf("Itisaspacecharacter\n");

else

printf("Itisothercharacter\n");}

第1空:

字符在计算机中以ASCII码的形式存储。

所以当输入的字符,即ch中字符所对应的ASCII码的范围在英文字母的ASCII码的范围内即可,参照p377。

由于英文字母又分为大写字母和小写字母,因此此处用一个逻辑或表达式,表示ch中是小写字母或者大写字母,都能使得表达式成立。

ch>=97&&ch<=122||ch>=65&&ch<=90

需要注意的是,对于本题区间所对应的表达式,不可写作97<=ch<=122,也不可写作’A’<=ch<=’Z’.对于97<=ch<=122因为在计算此表达式时的顺序是从左向右,因此先计算97<=ch。

无论ch中的取值如何,表达式97<=ch的值只有两种情况:

0或1.所以无论是0还是1,都小于122,因此97<=ch<=122恒成立。

第3空,判断ch中是否为空格,也是通过ch中字符与空格字符的ASCII码来判断。

在判断表达式的值是否相等时,用关系符号==;不要用赋值符号=。

2.输入x、y两个整数,按先大后小的顺序输出x、y。

#include“stdio.h”

main()

{intx,y,*px,*py,

(1);

scanf(“%d%d”,&x,&y);

(2);(3);

if(x

{p=px;px=py;py=p;}

printf(“x=%d,y=%d\n”,x,y);

printf(“MAX=%d,MIN=%d\n”,*px,*py);

}

4.3程序改错

1.编程计算下面分段函数,输入x,输出y

main()

{intx,y;

printf(“\nInputx:

\n”);

scanf(“%d”,x);//错误同上题scanf

if(x<0)

y=x-1;

elseif(x>=0||x<=10)//||表示逻辑或,当左边表达式成立或者右边表达式成立时,整个表达式成立。

&&表示逻辑与,当左边表达式和右边表达式同时成立时,整个表达式成立。

此处用逻辑表达式来表示x的区间[0,10],因此应改用逻辑与符号

y=2x-1;//C语言中乘号不能省略,且用*表示乘法运算

else

y=3x-1;//C语言中乘号不能省略,且用*表示乘法运算

printf(“y=%d”,&y);//printf与scanf不用,printf后面给出的是变量名列表或表达式列表,无需地址符号

}

第一处改为:

scanf(“%d”,&x);

第二处改为:

x>=0&&x<=10

第三处改为:

y=2*x-1;

第四处改为:

y=3*x-1;

第五处改为:

printf(“y=%d”,y);

2.求100~300间能被3整除的数的和。

main()

{intn;

longsum;//若定义变量的语句有错误,常见考点有两个:

(1)变量的类型,

(2)在定义用于存放运算结果的变量时,一定要赋初值,一般赋值0或者循环初值。

for(n=100,n<=300,n++)//for语句的格式,三个表达式之间用分号,且分号不可省略

{

if(n%3=0)//=是赋值符号,用于将右边的值赋给左边的变量;==是关系符号,用来判断两个值是否相等。

改错中if后面表达式中的赋值符号是常见的考点。

sum=sum*n;

}

printf(“%ld”,sum);

}

第一处改为:

longsum=0;

第二处改为:

for(n=100;n<=300;n++)

第三处改为:

if(n%3==0)

第四处改为:

sum=sum+n;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2