第4章程序设计三种基本结构.docx

上传人:b****8 文档编号:12529347 上传时间:2023-06-06 格式:DOCX 页数:20 大小:20.89KB
下载 相关 举报
第4章程序设计三种基本结构.docx_第1页
第1页 / 共20页
第4章程序设计三种基本结构.docx_第2页
第2页 / 共20页
第4章程序设计三种基本结构.docx_第3页
第3页 / 共20页
第4章程序设计三种基本结构.docx_第4页
第4页 / 共20页
第4章程序设计三种基本结构.docx_第5页
第5页 / 共20页
第4章程序设计三种基本结构.docx_第6页
第6页 / 共20页
第4章程序设计三种基本结构.docx_第7页
第7页 / 共20页
第4章程序设计三种基本结构.docx_第8页
第8页 / 共20页
第4章程序设计三种基本结构.docx_第9页
第9页 / 共20页
第4章程序设计三种基本结构.docx_第10页
第10页 / 共20页
第4章程序设计三种基本结构.docx_第11页
第11页 / 共20页
第4章程序设计三种基本结构.docx_第12页
第12页 / 共20页
第4章程序设计三种基本结构.docx_第13页
第13页 / 共20页
第4章程序设计三种基本结构.docx_第14页
第14页 / 共20页
第4章程序设计三种基本结构.docx_第15页
第15页 / 共20页
第4章程序设计三种基本结构.docx_第16页
第16页 / 共20页
第4章程序设计三种基本结构.docx_第17页
第17页 / 共20页
第4章程序设计三种基本结构.docx_第18页
第18页 / 共20页
第4章程序设计三种基本结构.docx_第19页
第19页 / 共20页
第4章程序设计三种基本结构.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

第4章程序设计三种基本结构.docx

《第4章程序设计三种基本结构.docx》由会员分享,可在线阅读,更多相关《第4章程序设计三种基本结构.docx(20页珍藏版)》请在冰点文库上搜索。

第4章程序设计三种基本结构.docx

第4章程序设计三种基本结构

第4章  程序设计三种基本结构

一、选择题:

【例1】(2002年4月)下面的程序的输出结果是( )。

#include

main()

{

  inti=010,j=10;

  printf("%d,%d",++i,j--);

}

A.  11,10       B.9,10     

C.  010,9       D.10,9

【答案】B   (i的值是以八进制定义的)

 

【例2】(2002年4月)以下的程序的输出结果是( )。

main()

{

  inta=5,b=4,c=6,d;

  printf(("d\n",d=a>b?

)(a>c?

a:

c):

(b));

}

A.  5         B.4         

C.  6         D.不确定

【答案】C

 

【例3】(2002年4月)以下程序的输出结果是( )。

main()

{

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

  d=!

a&&!

b||!

c;

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

}

A.1             B. 0         

C.非0的数       D. -1

【答案】A

【例4】(2002年4月)以下程序的输出结果是( )。

main()

{

  charx=040;

  printf("%o\n",x<<1);

}

A.100          B.80        

C.64           D.32

【答案】A

【例5】(2002年9月)已知i,j,k为int型变量,若从键盘输入:

1,2,3<回车>,使i的值为1、j的值为2,k的值为3,以下选项中正确的输入语句是(C )。

A.   scanf("---",&I,&j,&k);    

B.   scanf("%d %d %d",&I,&j,&k);

C.   scanf("%d,%d,%d",&I,&j,&k);        

D.scanf("i=%d,j=%d,k=%d",&I,&j,&k);

【答案】C

 

【例6】(2002年9月)若有以下程序

main()

{

  intk=2,i=2,m;

  m=(k+=i*=k);

  printf(“%d,%d\n”,m,i);

}

执行后的结果是( )。

A.8,6      B.8,3      

C.6,4      D.7,4

【答案】C

【考点解析】根据C语言中printf函数的用法可知,格式控制参数是d,即是输出是十进制的数,复合运算表达式是右结合性,先从右边开始计算i*=k得i=i*k=2*2=4,k+=i得k=k+i=2+4=6,所以m的值为6。

输出结果为m=6,i=4。

 

【例7】(2003年4月)若有以下程序段(n所赋的是八进制数)

intm=32767,n=032767;

printf(“%d,%o\n”,m,n);

执行后输出结果是( )。

A.32767,32767               B.32767,032767

C.32767,77777               D.32767,77777

【答案】A

 

【例8】(2003年4月)有以下程序段

intm=0,n=0,charc='a';

scanf("%d%c%d",&m,&c,&n);

prinft("%d,%c,%d\n",m,c,n);

若从键盘上输入:

10A10<回车>,则输出结果是( )。

A.10,A,10            B.10,a,10               C.10,a,0             D.10,A,0

【答案】A

 

【例9】(2003年4月)有以下程序

main()

{

  inti=10,j=1;

  printf("%d,%d\n",i--,++j);

}

执行输出的结果是(B )。

A.9,2      B.10,2     

C. 9,1      D.10,1

【答案】B

 

【例10】(2003年9月)有以下程序

main()

{

  inta;charc=10;

  floatf=100.0;doublex;

  a=f/=c*=(x=6.5);

  printf("%d %d %3.1f %3.1f\n",a,c,f,x);

}

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

A.1 65 1 6.5           B.1 65 1.5 6.5            

C.1 65 1.0 6.5      D.2 65 1.5 6.5

【答案】B

 

【例11】(2003年9月)有以下程序

main()

{

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

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

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

}

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

A. 0,0      B.0,1      

C. 1,0      D.1,1

【答案】C

 

【例12】(2003年9月)有定义语句:

intx,y;若要通过scanf("%d,%d",&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是"

A.  11 12<回车>    B.11, 12<回车>

C.  11,12<回车>  D.11,<回车>12<回车>

【答案】A

 

【例13】(2003年9月)设有以下程序段:

intx=2002,y=2003;

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

则以下叙述中正确的是"

A.  输出语句中格式说明符的个数少于输出项的个数,不能正确输出。

B.  运行时产生出错信息。

C.  输出值为2002。

D.  输出值为2003。

【答案】D

 

【例14】(2003年9月)有以下程序

main()

{

  int  x=3,y=2,z=1;

  printf("%d\n",x/y&~z);

}

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

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

【答案】D

 

【例15】(2004年4月)有以下程序

main()

{

  intx=102,y=012;

  printf("-,-\n",x,y);

}

执行后输出结果是( )。

A. 10,01       B.02,12       

C. 102,10      D.02,10

【答案】C

 

【例16】(2004年4月)有以下程序

main()

{

  unsignedchara,b;

  a=4|3;

  b=4&3;

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

}

执行后输出结果是( )。

A. 70        B.07        

C. 11        D.430

【答案】A

 

【例17】(2004年9月)有以下程序

main()

{

  chara,b,c,d;

  scanf("%c,%c,%d,%d",&a,&b,&c,&d);

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

}

若运行时从键盘上输入:

6,5,65,66<回车>。

则输出结果是( )。

  

A.6,5,A,B                 B.6,5,65,66            

C.6,5,6,5                 D.6,5,6,6

【答案】A

【考点解析】在C语言程序设计中,scanf函数的格式控制参数中“%d”表示输入整数,“%c”表示输入字符,也就是说,前两个输入的数是以字符形式输入的,后两个输入的数是以整数形式输入的,输出时,全部都以字符形式输出,而刚才的后两个整数应该用ASCII码转化为字符。

则输出的是6,5,A,B。

 

【例18】(2004年9月)有以下程序

main()

{

  intm=3,n=4,x;

  x=-m++;

  x=x+8/++n;

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

}

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

A. 3         B.5         

C. -1        D. -2

【答案】D

【考点解析】在本题中,根据C语言中printf函数的用法可知,格式控制参数是d,即是输出是十进制的数,表达式x=-m++可以转换成x=-(m++),可得x的值为-3,而表达式x=x+8/++n可以转换成x=x+8/(++n),代入x的值得x=-3+8/5=-2,所以最后的输出结果是-2。

 

【例19】(2004年9月)有以下程序

main()

{

  chara=’a’,b;

  printf(“%c”,++a);

  printf(“%c\n”,b=a++);

}

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

A. b,b      B.b,c         

C. a,b         D.a,c 

【答案】A

 

【例20】(2004年9月)有以下程序

main()

{

  intm=0256,n=256;

  printf("%o%o\n",m,n);

}

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

A. 0256 0400   B.0256 256    

C. 256 400  D.400  400

【答案】C

 

 

【例21】(2004年9月)有以下程序

main()

{

  inta=666,b=888;

  printf(“%d\n”,a,b);

}

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

A. 错误信息  B.666          

C. 888       D.666,888

【答案】B

 

【例22】(2004年9月)有以下程序

main()

{

  unsignedinta;

  intb=-1;

a=b;

  printf(“%u”,a);

}

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

A. -1     B.65535     

C. 32767     D.-32768

【答案】B

【考点解析】在本题中,有一无符号变量和一整型变量,它们的值都是-1,在计算机整型的存储是以二进制存在,即是1000000000000001,输出函数的要求输出无符号a的值,即要把1000000000000001转化为十进制,得65535。

 

二、填空题:

【例23】(2002年4月)以下程序的输出结果是_______。

main()

{

   inta=177;

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

}

【答案】261

【考点解析】本题中先定义了一个十进制整数值为177的a,而printf()函数格式控制参数是o,也就是以八进制的整数形式输出,a的十进制数值是177转换为八进制数是261。

 

【例24】(2002年4月)以下程序的输出结果是_______。

main()

{

   inta=0;

   a+=(a=8);

   printf(“%d\n”,a);

}

【答案】16

【考点解析】在程序是用printf函数输出十进制的整数,表达式经过复合运算:

a=a+a=8+8=16,则结果是16。

 

【例25】(2002年4月)以下程序的输出结果是_______。

main()

{

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

   d=(a>b>c);

   printf(“%d\n”,d);

}

【答案】0

【考点解析】在C语言中规定了关系运算符”>”按左结合来运算的,所以在本题中先计算a>b,结果是真,即是1,再计算a>c,结果是假,所以最后结果是0。

 

【例26】(2003年4月)若有语句

inti=-19,j=i%4;

printf(“%d\n”,j);

则输出结果是       。

【答案】-3

【考点解析】根据C语言中printf函数的用法可知,格式控制参数是d,即是输出是十进制的数,%运算符是取除运算运算符,j=-19%4=-3。

即答案是-3。

 

【例27】(2003年9月)以下程序运行后的输出结果是   。

main()

{

   intp=30;

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

p/10:

p%3));

}

【答案】3

【考点解析】printf函数的格式控制参数是d,即是输出是十进制的数,三目运算符:

(条件表达式)?

(条件为真时的表达式):

(条件为假时的表达式),条件表达式p/3>0=10>0为真,按照规则求表达式p/10的值就是输出的值,因此最后的输出表达式的值为3。

 

 

 

【例28】(2003年9月)以下程序运行后的输出结果是   。

main()

{

   charm;

   m=’B’+32;

   printf("%C\n",m);

}

【答案】b

【考点解析】printf函数的格式控制参数是C,即输出的是字符,在本题中,表达式m=’B’+32是表示字符B的ASCII码加上32再赋予m,而字符B的ASCII码是66,因此字符m的ASCII为66+32=98,最后输出的结果是ASCII码为98的字符,通过计算得字符b的ASCII码是98,则最后结果是输出b。

 

【例29】(2004年4月)已知字符A的ASCII码值为65,以下语句的输出结果是______。

charch=’B’;

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

【答案】B66

【考点解析】本题中printf函数的格式控制参数有两个,分别是cd,即是以字符格式和十进制整数格式输出,B的ASCII码值为66,即输出的十进制数是66,则最后输出答案为B66。

 

【例30】(2004年9月)以下程序段的输出结果是________。

inti=9;

printf(“%o\n”,i);

【答案】11

【考点解析】本题中有一个十进制整数值为9的变量i,printf函数参数要求输出八进制的数,值为9的变量i的八进制数是11,则最后的结果是11。

例31】(2004年9月)以下程序运行后的输出结果是_______。

main()

{

   inta,b,c;

   a=25;

   b=025;

   c=0x25;

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

}

【答案】25 21 37

【考点解析】本题中有十进制整数值为25的a,八进制整数值为025的b,十六进制整数值为0x25的c,printf函数要求输出结果是十进制整数,且中间要用空格分隔。

那么三个变量的十进制整数值分别是25,21,37。

即25 21 37也就是答案。

4.2选择结构

一、选择题:

【例1】(2002年9月)有以下程序

main()

{

   inta=15,b=21,m=0;

   switch(a%3)

    {

   case0:

m++;break;

   case1:

m++;

   switch(b%2)

   {

      default:

m++;

      case0:

m++;break;

    }

    }

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

}

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

A.  1            B. 2            

C.  3            D. 4  

【答案】A

【考点解析】在本题中是运行switch语句,当中有break语句,而break语句的作用是跳出switch语句,即如果没有break语句,程序将继续执行到switch语句的结束。

程序中,首先执行表达式a%3=0,则执行case0,即m=m+1=1;所以最后输出1。

 

【例3】(2003年4月)有以下程序

main()

{

   inti=1,j=1,k=2;

   if((j++||k++)&&i++)

   printf("%d,%d,%d\n",i,j,k);

}

执行后输出结果是( )。

A.  1,1,2          B. 2,2,1          

C.  2,2,2          D. 2,2,3   

【答案】C

【考点解析】在本题中,先计算if语句后面表达式(j++||k++)&&i++,当j=j+1=2成立时,程序并不继续运行k++,即k=2,再运行i=i+1=2,最后输出i、j、k的值分别是2,2,2。

 

 

【例4】(2003年4月)有以下程序

main()

{

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

   if(a>b>c)

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

   else

   if((c-1>=d)==1)

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

   else

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

}

执行后输出结果是( )。

A.2                      B.  3  

C.4                      D. 编译时有错,无结果

【答案】B

【考点解析】在C语言中if总是与离它最近的else语句配对。

首先执行第一个if语句,判断表达式(a>b>c),”>”运算符为左结合性,即a>b>c的值为假,所以执行else后面的语句。

而else后面语句又是ifelse语句,判断表达式((c-1>=d)==1),整个表达式成立,则执行输出d+1=3

【例6】(2004年4月)以下程序中与语句k=a>b?

(b>c?

1:

0):

0功能等价的是( )。

A.if((a>b)&&(b>c))k=1;           B. if((a>b)||(b>c))k=1;

elsek=0;;                        elsek=0;

C.if(a<=b)k=0;                 D. if(a>b)k=1;

   elseif(b<=c)k=1;

    elseif(b                                                                     elsek=0;

【答案】A

【考点解析】三目运算符:

(条件表达式)?

(条件为真时的表达式):

(条件为假时的表达式),分析题目给出的表达式可知如果a>b和b>c同时为真k=1,否则k=0。

明显选项A符合条件。

 

二、填空题:

【例10】(2003年4月)若有以下程序

main()

{

   inta=4,b=3,c=5,t=0;

   if(a

   if(a

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

 }

执行输出结果是       。

【答案】5 0 3

【考点解析】根据C语言选择结构if语句知道,当条件成立时,程序将执行其后的一条语句或一个语句块。

当条件不成立时,程序将跳过if语句后的语句或语句块,然后继续执行。

在本题中,我们先计算第一个if后面的表达式a

 

【例12】(2004年4月)有以下程序

main()

{

   intn=0,m=1,x=2;

   if(!

n)x-=1;

   if(m)x-=2;

   if(x)x-=3;

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

}

执行后输出结果是   。

【答案】-4

【考点解析】在本题中,是多个if构成的选择结构。

!

n=!

0为真执行x=x-1=2-1=1,m=1,而m又为真,执行x=x-2=1-2=-1,再x的值为真,执行x=x-3=-1-3=-4。

4.3循环结构

一、选择题:

【例1】(2002年4月)以下程序中,while循环的循环次数是( )。

main()

{

   inti=0;

   while(i<10)

   {

      if(i<1)continue;

      if(i==5)break;

      i++;

   }

  ……

}

A.1             B.10

C.6             D.死循环,不能确定次数

【答案】D

【考点解析】在题目中,首先给整型变量i赋初始值为0,接着进行循环语句while判断,判断为真则进入循环体,在循环体中执行选择结构的if语句,这里有两个if语句,第一个if成立,则执行重新回到while语句重新判断,因为变量i的值没有发生改变,则程序会一直在这两条语句间执行,而造成死循环。

【例2】(2002年4月)以下程序的输出结果是( )。

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.31           B. 13           

C.10           D. 20 

【答案】A

【考点解析】在本题中,首先定义了一个整型变量a值为0,接着执行for循环语句,循环为5次,每一次的循环都执行选择结构的switch语句,而这个switch语句是根据i的值来对变量a进行操作,而这个switch语句并没有结合break语句,所以它是会继续执行当前语句下面的case,分别当i为1时,a=a+3+5=8;当i=2时,a=a+3+5=16;当i=3时,a=a+2+3+5=26;其余的为a=a+5=31,即答案为31。

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

当前位置:首页 > 高等教育 > 法学

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

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