c语言期末复习.docx

上传人:b****3 文档编号:4468286 上传时间:2022-12-01 格式:DOCX 页数:47 大小:46.33KB
下载 相关 举报
c语言期末复习.docx_第1页
第1页 / 共47页
c语言期末复习.docx_第2页
第2页 / 共47页
c语言期末复习.docx_第3页
第3页 / 共47页
c语言期末复习.docx_第4页
第4页 / 共47页
c语言期末复习.docx_第5页
第5页 / 共47页
点击查看更多>>
下载资源
资源描述

c语言期末复习.docx

《c语言期末复习.docx》由会员分享,可在线阅读,更多相关《c语言期末复习.docx(47页珍藏版)》请在冰豆网上搜索。

c语言期末复习.docx

c语言期末复习

一、选择题

1、一个C语言程序总是从____

A、主过程开始执行   B、主函数开始执行

C、子程序开始执行   D、主程序开始执行

2、若num、a、b和c都是int型变量,则执行表达式num=(a=4,b=16,c=32)后num的值为_

A、4    B、16    

C、32   D、52

3、下面四个选项中,均是C语言关键字的选项是____

A、autoenuminclude

B、switchtypedefcontinue

C、signedunionscanf

D、ifstructtype

4、若有说明语句:

charch1='\065';charch2="2";charch3='2';则:

ch1中____,ch2中____,ch3中____

A、包含1个字符  B、包含2个字符

C、包含3个字符D、字符个数不确定,说明不正确

5、若有运算符:

>、*=、?

、%、sizeof,则将它们按运算的优先级排列的正确次序为(由低至高)____

A、*=→?

→%→>→sizeofB、?

→*=→>→%→sizeof

C、*=→>→?

→sizeof→%D、*=→?

→>→%→sizeof

6、若有以下类型说明语句:

chara;intb;floatc;doubled;

则表达式a*b+d-c的结果类型为____

A、float  B、char  C、int  D、double

7、以下运算符中优先级最高的运算符是____

A、&&  B、++  C、?

:

  D、!

=

8、若有定义:

intk=7;floata=2.5,b=4.7;则表达式a+k%3*(int)(a+b)%2/4的值是___

A、2.500000   B、2.7500000

C、3.500000   D、0.000000

9、设变量y为float类型,x为int类型,则以下能实现将y中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是____

A、y=(y*100+0.5)/100.0

B、x=y*100+0.5,y=x/100.0

C、y=y*100+0.5/100.0

D、y=(y/100+0.5)*100.0

10、设int类型的数据长度为2个字节,则unsignedint类型数据的取值范围是____

A、0~255     B、0~65535

C、-32768~+32767  D、-256~+255

11、若有说明:

inta=1,b=2,c=3,d=4;则表达式a

a:

c

c:

d的值是____

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

12、若x为int类型,则逗号表达式(x=4*5,x*5),x+25的结果是___,x的值是___

A、20  B、100 C、表达式不正确 D、45

13、若有以下变量说明和数据的输入方式,则正确的输入语句为('└─┘'代表空格)____

变量说明:

floatx1,x2;

数据的输入方式:

4.52<回车>

        3.5<回车>

A、scanf("%f,%f",&x1,&x2);

B、scanf("%f%f",&x1,&x2);

C、scanf("%3.2f└─┘%2.1f",&x1,&x2);

D、scanf("%3.2f%2.1f",&x1,&x2);

14、已知a、b、c为int类型变量,若有输入语句:

scanf("a=%db=%dc=%d",&a,&b,&c);为使a值为1,b值为3,c值为2,从键盘输入数据的正确形式应当是____

A、132<回车>    B、a=1b=3c=2<回车>

C、1<回车>3<回车>2<回车>D、a=1<回车>b=3<回车>c=2<回车>

15、以下能正确定义整型变量x、y和z并为其赋初值5的语句是____

A、intx=y=z=5;    B、intx,y,z=5;

C、intx=5,y=5,z=5;  D、x=5,y=5,z=5;

16、下面程序段的输出结果是____

inta=023;

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

A、23  B、17  C、18  D、24

17、已知ch是字符型变量,则不正确的赋值语句是____

A、ch=5+9;    B、ch='\0';

C、ch='7'+'9';    D、ch='a+b';

18、以下程序段的输出结果是____

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

floatx=5.5,y=9.0,z;

z=(i+j)/k+sqrt((double)y)*1.2/k+x;

printf("%f\n",z);

A、9.800000   B、9.300000

C、8.500000   D、8.000000

19、若a为int类型变量,则执行以下程序段后a的值为____

a=5;

a*=a/=a++;

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

20、若x为unsignedint类型变量,则执行以下程序段后x的值是____

x=65535;

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

A、65535  B、1  C、无定值  D、-1

21、执行语句printf("Theprogram'snameisc:

\\tools\book.txt");后的输出是____

A、Theprogram'snameisc:

toolsbook.txt

B、Theprogram'snameisc:

\toolsbook.txt

C、Theprogram'snameisc:

\\toolsbook.txt

D、Theprogram'snameisc:

\toolook.txt

22、设a、b、c、d均是int类型变量,为了使以下程序段的输出为:

1234+123+12+1,正确的输入形式应当是____

scanf("%4d+%3d+%2d+%1d",&a,&b,&c,&d);

printf("%4d+%3d+%2d+%1d",a,b,c,d);

A、1234123121<回车>B、1234123412341234<回车>

C、1234+1234+1234+1234<回车>D、1234+123+12+1<回车>

23、逻辑运算符两侧运算对象的数据____

A、只能是0或1  B、只能是0或非0正数

C、只能是整型或字符型数据D、可以是任何类型的数据

24、判断char型变量c1是否为大写字母的正确表达式是____

A、'A'<=c1<='Z'   B、(c1>='A')&(c1<='Z')

C、(c1>='A')&&(c1<='Z')D、('A'<=c1)AND('Z'>=c1)

25、设i、j、和k是int型变量,且i=3,j=4,k=5,则以下值为0的表达式是____

A、'i'&&'j'      B、i<=j

C、i||j+k&&j-k    D、!

((i

k||1)

二、填空题

1、在C语言中,输入操作可以由库函数____完成,输出操作可以由库函数____完成。

2、若有定义:

inty=7;floatx=2.5,z=4.7;,则表达式x+(int)(y/3*(int)(x+z)/2)%4的值为____。

3、若采用十进制数的表示形式,则077为___,0111为___,0x29为___,0xab为___。

4、设x为float型变量,y为double型变量,a为int型变量,b为long型变量,c为char型变量,则表达式x+y*a/x+b/y+c的结果类型为____。

5、设有以下变量说明:

inta=5,b=10;

floatx=3.5,y=10.8;

charc1='A',c2='B';

请根据以下输出格式和结果,完成printf语句中的填空。

a=5,b=10,x+y=14.3

printf("________",_____);

x-y=-7.3└─┘a-b=-5

printf("________",_____);

c1='A'or65(ASCII)└─┘c2='B'or66(ASCII)

printf("________",_____);

6、已有定义intm;floatn,k;charch1,ch2;,为使m=3,n=6.5,k=12.6,ch1='a',ch2='A',对应的scanf语句是___________________,输入数据的方式是___________。

7、在C语言中,&作为双目运算符时表示的是___,而作为单目运算符时表示的是__。

8、设x、y、z均为int型变量,且x=3,y=-4,z=5,请写出下面每个表达式对应的结果。

、(x&&y)==(x||z)       ____

、!

(x>y)+(y!

=z)||(x+y)&&(y-z)____

、x++-y+(++z) ____

9、以下程序的输出结果为____

main()

{

intx,y,z=246;

x=z/100%9;

y=(-1)&&(-1);

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

}

C语言程序设计第4章练习题

一、选择题

1、以下正确的if语句是____

A、if(n>0)printf("%f",n)

printf("%f",-n);

B、if(n>0)

{n=n+m;printf("%f",n);}

elseprintf("%f",-n);

C、if(n>0)

{n=n+m;printf("%f",n);};

elseprintf("%f",-n);

D、if(n>0)

{n=n+m;printf("%f",n)};

elseprintf("%f",-n);

2、为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:

else子句总是与__

A、缩排位置相同的if配对B、其之前最近且不带else的if配对

C、其之前最近的if配对D、第一个if配对

3、下面程序段所表示的数学函数关系是____

    x=-1;

    if(a!

=0)

if(a>0)x=1;

elsex=0;

  -1(a<0)     1(a<0)

A、x=0(a=0)B、x=-1(a=0)

1(a>0)0(a>0)

0(a<0)-1(a<0)

C、x=-1(a=0)   D、x=1(a=0)

1(a>0)0(a>0)

4、以下关于switch语句和break语句的描述中正确的是____

A、在switch语句中必须使用break语句

B、break语句只能用于switch语句体中

C、break语句只能用于循环语句中

D、在switch语句中使用break语句或continue语句的作用相同

5、设有程序段____

    intx=10;

    while(x=0)

     x=x-1;

A、while循环执行10次 B、循环是无限循环

  C、循环体语句一次也不执行D、循环体语句只执行一次

6、以下关于do-while循环不正确的描述是___

  A、d0-while的循环体至少执行一次

  B、do-while循环由do开始,用while结束,在while(表达式)后面不能写分号

  C、在do-while循环体中,一定要有能使while后面表达式的值变为零("假")的操作

  D、do-while的循环体可以是复合语句

7、设x、y均是int类型变量,且x值为100,则关于以下for循环的正确判断是____

    for(y=100;x!

=y;++x,y++)

     printf("****\n");

  A、循环体只执行一次  B、是无限循环

  C、循环体一次都不执行

D、for语句中存在语法错误

8、语句for(表达式1;;表达式3)等价于____

  A、for(表达式1;0;表达式3)

  B、for(表达式1;1;表达式3)

  C、for(表达式1;表达式1;表达式3)

  D、for(表达式1;表达式3;表达式3)

9、以下程序段的执行结果是____

    intx=-3;

    do

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

     }while(!

x);

  A、-3D、-3

  B、-2-2

  C、陷入死循环-1

10、执行以下程序段后,y的值是____,x的值是____

    intx=1,y=10;

    do

     {y-=x;

      x++;

     }while(y--<0);

  A、9B、8C、-2D、2 E、4F、3

11、执行以下程序段后a的值是____,b的值是____

  inta,b;

  for(b=1,a=1;b<=50;b++)

   {if(a>=10)break;

   if(a%2==1)

     {a+=5;

    continue;

     }

    a-=3;   }

  A、10B、6C、7D、8E、4

12、下面程序的运行结果是____

  main()

  {intm=0;

  while(m<=2)

    {m++;

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

    }

  }

  A、1         B、1

  2

  C、1D、1

  22

  33

13、若有以下程序段:

  for(m=1;m<=100;m++)

  {scanf("%d",&y);

  if(y<0)

  continue;

  printf("%3d",m);}

正确的描述是____

  A、当y<0时整个循环结束

  B、y>=0时什么也不输出

  C、printf函数永远也不执行

  D、最多允许输出100个非负整数

14、以下程序段等价于____

  for(k=100;k<=200;k++)

  {if(k%3==0)

     continue;

  printf("%4d",k);

  }

  A、for(k=100;(k%3)&&k<=200;k++)

  printf("%4d",k);

  B、for(k=100;(k%3)||k<=200;k++)

  printf("%4d",k);

  C、for(k=100;k<=200;k++)

  if(k%3!

=0)printf("%4d",k);

  D、for(k=100;k<=200;k++)

  {if(k%3)

  printf("%4d",k);

  else

  continue;

  break;

  }

二、填空题

1、以下程序的功能是:

输入一个小写字母,按字母排列顺序后移5个位置后输出(如把'a'变为'f','w'变成'b')。

请填空。

  #include"stdio.h"

  main()

  {charc1;

  c1=getchar();

  if(c1>='a'&&c1<='u')

    ______;

  elseif(c1>='v'&&c1<='z')

    ______;

  putchar(c1);

  }

2、输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母;其它字符不变。

请填空。

  main()

  {charch1;

  scanf("%c",ch1);

  if(________________)

  ch1=ch1+32;

  elseif(ch1>='a'&&ch1<='z')

      ________;

  printf("%c",ch1);

  }

3、以下程序的功能是判断输入的年份是否是闰年。

请填空。

  main()

  {intyear,yes;

  scanf("%d",&year);

  if(year%400==0)

  year=1;

  elseif(__________________)

  yes=1;

  else

      ____;

  if(yes)

  printf("%dis",year);

  else

    printf("%disnot",year);

  printf("aleapyear.\n");

  }

 

4、若运行以下程序时,输入下面指定数据,则运行结果为______

  #include

  main()

  {intch;

  while((ch=getchar())!

='\n')

    {switch(ch-'1')

     {case0:

      case1:

putchar(ch+3);

  case2:

putchar(ch+3);break;

  case3:

putchar(ch+3);

  default:

putchar(ch+1);break;

  }

  }

  printf("\n");

  }

  输入数据(从第一列开始):

     1234<回车>

 

5、将以下含有switch语句的程序段改写成对应的含有非嵌套if语句的程序段,请填空。

  含有switch语句的程序段:

  ints,t,m;

  t=(int)(s/10);

  switch(t)

  {case10:

m=5;break;

   case9:

m=4;break;

   case8:

m=3;break;

   case7:

m=2;break;

   case6:

m=1;break;

   default:

m=0;

}

 

  含有非嵌套if语句的程序段:

  ints,m;

if(______)m=5;

if((s<100)&&(s>=90))m=4;

if((s<90)&&(s>=80))m=3;

if((s<80)&&(s>=70))m=2;

if((s<70)&&(s>=60))m=1;

if(______)________;

 

6、用switch语句实现以下数学关系,请填空。

-1(x<0)

y=0(x=0)

1(x>0)

  switch(x<0)

   {case1:

y=-1;____

  case0:

switch(x==0)

        {case1:

y=0;____

____y=1;

   }

}

7、设a、b、c均是int类型变量,则执行以下for循环后,c的值为____

  for(a=1,b=5;a<=b;a++)

c=a+b;

8、以下程序的运行结果为____

  main()

  {intj=5;

  while(j<=15)

  if(++j%2!

=1)

continue;

elseprintf("%d",j);

printf("\n");

  }

9、设ch1为char类型变量,若从键盘上由第一列输入以下数据:

right?

<回车>

则以下三个程序段的输出结果分别是_____,____,____。

  

、c=getchar();

  while(c!

='?

')

  {putchar(c);c=getchar();}

  

、while((c=getchar())!

='?

')

  putchar(++c);

  

、while(putchar(getchar())!

='?

');

10、以下do-while语句中循环体的执行次数是____

  a=10;b=0;

  do

   {b+=2;a-=2+b;

   }while(a>=0);

11、若用以下形式表示for循环语句:

  for(表达式1;表达式2;表达式3)

    循环体语句

则执行语句for(i=0;i<3;i++)printf("*");时,表达式1执行____次,表达式3执行____次。

12、下面程序的功能是计算1-3+5-7+……-99+101的值,请填空。

  main()

  {inti,t=1,s=0;

  for(i=1;i<=101;i+=2)

  {____;s=s+t;____;}

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

  }

  }

13、下面程序的功能是求1000以内的所有完全数,请填空。

(说明:

一个数如果恰好等于它的因子之和(除自身外),则称该数为完全数,例如:

6=1+2+3,6为完全数。

  main()

  {inta,i,m;

  for(z=1;a<=1000;a++)

   {for(____;i<=a/2;i++)

     if(!

(a%i))____;

     if(m==a)printf("%4d",a);

   }

}

 

14、下面程序的功能是计算100至1000之间有多少个数其各位数字之和是5,请填空。

  main()

  {inti,s,k,count=0;

  for(i=100;i<=1000;i++)

    {s=0;k=i;

   while(____)

      {s=s+k%10;

      k=____;}

    if(s!

=5)

      ____;

     count++;

    }

  printf("%d",count);

  }

C语言程序设计第5章练习题

一、选择题

1、若有说明语句:

inta[2][4];,则对a数组元素的正确引用是____

  A、a[0][3] B、a[0][4] C、a[2][2] D、a[2][2+1]

2、以下能对二维数组y进行初始化的语句是___

  A、staticinty[2][]={{1,0,1},{5,2,3}};

  B、staticinty[][3]={{1,2,3},{4,5,6}};

  C、staticinty[2][4]={{1,2,3},{4,5},{6}};

  D、staticinty[][3]={{1,0,1,0},{},{1,1}};

3、若有说明语句:

inta[][3]={1,2,3,4,5,6,7,8};,则a数组的行数为

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

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

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1