注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

浩瀚星云

上善若水 厚德载物<学习版>

 
 
 

日志

 
 

04年至08年历次考试真题分类汇总测试  

2008-10-31 11:20:20|  分类: C语言 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

                                                                                                                                                     廖兴宇

说明:此次模拟只是为检测大家对第一至五章的内容掌握情况,同时也是让大家看看这些内容是怎么考试的。其中第三四五这三章特别重要,是学习后面内容的基础,如果这三种结构不能掌握,你的考试将很难通过。在上机考试中,第三四五章时刻都在使用。希望大家能够认真对待这次测验。

在以前的培训中,我们没有过模拟测试,但是到了最后将要考试的这一个周时,还有同学在问课后的简单习题或者是讲过多次的真题。通过这次考试及练习的讲评以后,同样的题目我在明年考试前的两个周内将不会再对任何人重新讲解。因为这些内容已经是在我们新课、串讲、测试和讲评中反复重复过多遍,所以请大家慎重对待,同时,在讲评后还有没有听懂的我将会再次个别讲解。所以这次考试即使你一个不会做也没有关系,只要你认真听我讲评这次题目就可以了,但是,每个人必须参加考试,如果没有参加,在明年的考试过后如果没有通过我们将直接取消免费培训的资格,同时这次考试将算作一次平时课程的点名,考试期间按照正常的上机规定,但是考试期间不得问值班老师与考试有关的问题,可以相互讨论,可以翻书,但是不得抄袭。这次考试讲评时间为11月1日(周日)六下午2:30—5:30;和11月2日(周日)上午8:00—11:00.

如果大家看不清楚测试题目,可以这样解决:

按住先键盘上ctrl键,然后在按住字母键A键,表示全部选中;然后在 这个地方改换字体和字号,调节到最佳状态。或者是全部选中后,单击鼠标右键 ,有字体的设置,设置到最佳状态即可。其他技术性问题可以找值班老师解决。

做完后如果有U盘或者MP3的同学,可以将这些题目考走。如果支持电子书的MP3,MP4,MP5请新建一个文本文件(后缀为.txt),将题目复制后粘贴在文本文件中,自己回去后可以更好的研究。没有的同学请勤到新锐来研究,在你考完后,老师会为你详尽的解答。

另外,请大家一定要认真填写答题卡,不要错填,漏填,不填。答题卡在值班教师处领取。每人仅限一张。考试截止时间10月30日。过期为考者,做旷课一次处理,若在明年的考试中未通过,直接不得参加免费培训资格。如果明年未参加考试,直接不得参加同一培训。

 

 

 

 

(一)选择

说明:共54题,全部为单项选择。

(1)能将高级语言编写的源程序转换成目标程序的是

A) 链接程序

B) 解释程序

C) 编译程序

D) 编辑程序

分析:.C的源程序->.obj->.exe 将源程序(.C的文件)转化成机器可以识别的二进制目标文件(即.obj文件),需要通过编译这一步,而编译是由编译程序来实现的。

(2)一个算法应该具有”确定性”等5个特性,下面对另外4个特性的描述中错误的是

A) 有零个或多个输入

B) 有零个或多个输出

C) 有穷性

D) 可行性

分析:算法的5个特性:(1).有穷性:一个算法包含的操作步骤应该是有限的。(2).确定性:算法中的每一条指令必须是有确切的含义。(3).可行性:算法中指定的操作,都可以通过已经验证过可以实现的基本运算执行有限次数后实现(eg:1+…+100的值)。(4)

.有零个或多个输入(scanf函数)。(5).有一个或多个输出。(printf函数)

(3)以下叙述中正确的是

  A) C语言的源程序不必通过编译就可以直接运行

  B) C语言中的每条可执行语句最终都将被转换成二进制的机器指令

  C) C源程序经编译形成的二进制代码可以直接运行

  D) C语言中的函数不可以单独进行编译

分析:C语言编写的源程序的编译过程是:.C的源程序->.obj->.exe 把.C的源程序转化成为机器可以识别的二进制文件(.obj文件)的过程是编译,编译完成后虽然将.C的源文件转化成了机器可以识别的二进制代码,但是这时仍然不能执行,这是因为还没有通过连接这一步,连接这一步的作用是连接库函数的。只有连接这一步做完了以后才能生成.exe的可执行文件,才能由计算机直接运行。

(4)用C语言编写的代码程序

   A)可立即执行

B)是一个源程序

   C)经过编译即可执行

D)经过编译解释才能执行

分析:我们用C语言编写的程序后面都是以.C为后缀名的,我们称这些以.C为后缀名的程序为源程序。它不能在计算机上直接执行,而是要经过编译、连接,两个步骤后才能在计算机上执行。

(5)结构化程序由三种基本结构组成,三种基本结构组成的算法

   A)可以完成任何复杂的任务

B)只能完成部分复杂的任务

   C)只能完成符合结构化的任务

D)只能完成一些简单的任务

分析:教材P4,三种结构组成的酸法可以解决任何复杂的问题。

(6)算法具有五个特性,以下选项中不属于算法特性的是

  A)有穷性

  B)简洁性

  C)可行性

  D)确定性

 分析:算法的5特性:(1).有穷性(2).确定性(3).可行性(4).有零个或多个输入(5).有一个或多个输出。

(7)以下叙述中错误的是

  A)用户所定义的标识符允许使用关键字

  B)用户所定义的标识符应尽量做到”见名知意”

  C)用户所定义的标识符必须以字母或下划线开头

  D)用户定义的标识符中,大、小写字母代表不同标识

分析:用户标识符的命名规则:1.遵守标识符的命名规则(1.以“字母、数字、和下划线”组成。 2.第一个字符必须是字母或下划线。)2.尽量做到“见名知意”

注意:如果用户标识符与关键字相同,则在对程序进行编译时系统将给出出错信息。如果用户标识符与预定义标识符相同时,系统并不报错,只是该预定义标识符就失去原来的含义,代之以用户确认的含义,这样就会出现错误。所以用户标识符不能与关键字、预定义标识符相同。

(8)以下叙述中错误的是

  A)C语句必须以分号结束

  B)复合语句在语法上被看作一条语句

  C)空语句出现在任何位置都不会影响程序运行

  D)赋值表达式末尾加分号就构成赋值语句

分析:空语句出现的位置会影响程序的执行。(remember!)

(9)以下叙述中正确的是

  A)调用printf函数时,必须要有输出项

  B)使用putchar函数时,必须在之前包含头文件stdio.h

  C)在C语言中,整数可以以十二进制、八进制或十六进制的形式输出

  D)调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码

分析:printf函数的格式:printf(“格式控制”,输出项1,输出项2,……,输出项n);注意:printf函数可以没有输出项eg:printf(“Input  a&b”); getchar()函数是从终端读入一个字符作为函数的值。在C语言中的整数只能以十进制、八进制、十六进制的形式来输出。

(10)以下符合C语言语法的实型常量是

  A) 1.2E0.5 (e后面必须为整型)

    B) 3.14.159E (e的后面也要有数且因该为整型数。)

    C) .5E-3

    D) E15(e的前面必须要有数字)

(11)以下4组用户定义标识符中合法的一组是

  A) _main

    B) if (是C语言中的关键字)

    C) .txt (不是标识符,不符合标识符的命名规则。)

    D) int (是C语言中的关键字)

(12)若以下选项中的变量已正确定义,则正确的赋值语句是

  A) x1=26.8%3 (%运算符的两边的操作数必须为整型数。26.8为实型数据。)

    B) 1+2=x2 (赋值运算符的左边只能是变量,右边可以是常量,变量,表达式还可以是赋值表达式。)

    C) x3=0x12

    D) x4=1+2=3;

(13)设有以下定义

  int a=0;

  double b=1.25;

  char c=‘A’;

  #define d 2

  则下面语句中错误的是

  A) a++;

    B) b++ ;

    C) c++;

    D) d++;(A++;是一条赋值语句它等价与A=A+1;)而在题目中d 是定义的一个字符型常量,我们不能对常量进行自加运算,因为d=d+1赋值号的左边是一个常量不合法。

 (14)设有定义:float a=2,B=4,h=3;,以下C语言表达式与代数式 计算结果不相符的是

  A) (a+B) h/2 (先算(),再算*,再算/)优先级

    B) (1/2)*(a+B) *h(先算(),因为1/2是等于0的,所以整个表达式的值为0。)

  C) (a+B) *h*1/2 (先算(),再算*,再算*,再算/。)

    D) h/2*(a+B) (先算(),再算/,再算*)

 (15)下列选项中,不能用作标识符的是

  A)_1234_

    B)_1_2

    C)int_2_

    D)2_int_(标识符不能以数字开头。)

(16)有以下定义语句:

  double a,b; int w; long c;若各变量已正确赋值,则下列选项中正确的表达式是

  A)a=a+b=b++ (赋值运算符的左边只能是变量不能为表达式)

    B)w%(int)a+b

  C)(c+w)%(int)a

    D)w=a==b; (表达式后面加分号后就是一条语句。)

 (17)以下选项中可作为C语言合法常量的是

  A)-80.(见P13小数形式)

  B)-080(八进制数的范围0~7)

  C)-8e1.0(e的后面必须为整型数据)

  D)-80.0e(e后面要有数并且必须为整型数据)

注意:e3、.5e3.6、e3、e、80.0e都是非法的指数形式。

(18)以下叙述中正确的是

       A) 用C程序实现的算法必须要有输入和输出操作  

       B)用C程序实现的算法可以没有输出但必须要有输入

  C)用C程序实现的算法可以没有输入但必须要有输出

       D)用C程序实现的算法可以既没有输入也没有输出

分析:用C程序实现的算法可以没有输入但是一定要有输出。

(19)以下不能定义为用户标识符的是D

  A)Main (与main是不相同的不是C的关键字)

  B)_0

  C)_int

  D)sizeof (C语言的关键字,因此不能定义为用户标识符。)

(20)以下选项中,不能作为合法常量的是B

  A)1.234e04

  B)1.234e0.4

  C)1.234e+4(正数表示右对齐,负数表示的是左对齐。)

  D)1.234e0

(21)以下不能正确计算代数式值的C语言表达式是

  A)1/3*sin(1/2)*sin(1/2) (因为1/2=0,sin0=0。)

    B)sin(0.5)*sin(0.5)/3

  C)pow(sin(0.5),2)/3

    D)1/3.0*pow(sin(1.0/2),2)

(22)设有定义:int  k=1,m=2;float  f=7;则以下选项中错误的表达式是

  A)k=k>=k  (优先级:算术运算符>关系运算>赋值运算。)

    B)-k++

    C)k%int(f) 强制类型转换的格式是:(int)f

    D)k>=f>=m (自左->右的结合性。)

(23)设有定义:int  a=2,b=3,c=4;,则以下选项中值为0的表达式是

A)(!a==1)&&(!b==0)

分析:a=2则!a=0 则!a==1这个表达式的值是0 因为是&&运算所以后面不需要去看结果一定为0。

    B)(a+b)&&(a-c)

    C)a&&b

D)a||(b+b)&&(c-a)

(24) 有以下程序

  main( )

  {

   int x=102,y=012;

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

  }

%2d右对齐输出两位十进制数,则输出的因该是:02

%d输出十进制数,全部输出。而012显然是一个八进制数,把它转换成十进制数是:10

执行后输出结果是

A) 10,01

B) 02,12

C) 102,10

D) 02,10

(25) 以下4个选项中,不能看作一条语句的是

A) {;} 空语句

B) a=0,b=0,c=0;

C) if(a>0);

D) if(b==0) m=1;n=2;

在C语言中规定一个;号就是一条语句的结束。而D选项中有两个;一个;号前面的就是一条语句,因此有两条语句。

(26)有以下程序

   main()

   { int m=3,n=4,x;

   x=-m++;(“-”属于算术运算中的单目运算符优先级高与赋值运算。因此x= -(m++) 则x= -3)

   x=x+8/++n;x= -3+8/++n则x= -3+8/5= -2)

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

   }

   程序运行后的输出结果是

   A)3

B)5

C)-1 

D)-2

(27)有以下程序

   main()

   { int m=0256,n=256;

   printf("%o %o\n",m,n);(与%#o %#o的区别是后者带先导0。前者不带先导,因此这个题目输出的八进制数是不带先导的。)256转化成二进制是:100000000 再转化成八进制是:400

   }

   程序运行后的输出结果是

   A)0256 0400

B)0256 256

C)256 400

D)400 400

 (28)有以下程序

   main()

   { int a=666,b=888;

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

   }

   程序运行后的输出结果是

   A)错误信息

B)666

C)888

D)666,888

分析:因为在printf函数的格式中格式控制必须含有与输出项一一对应的输出说明,类型必须匹配。前面只有一个%d则后面只能输出一个值,又因为这个%d是与a对应的,所以只输出a 的值666。

 (29)有以下程序

  main()

  { int m=12,n=34;

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

}

m++的值为12,执行完后m的值是13。++n的值是35,n=35。而再执行第二个printf函数是 n++的值是35,++m的值是14。所以最后的输出是:12353514

 

  程序运行后的输出结果是

  A)12353514

  B)12353513

  C)12343514

  D)12343513

 (30)有以下程序

  main()

  {int m,n,p;

  scanf("m=%dn=%dp=%d",&m,&n,&p);

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

  }

  若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是

  A)m=123n=456p=789

  B)m=123n=456p=789

  C)m=123,n=456,p=789

D)123456789

注意:在调用scanf函数的时候输入数据的格式一定要与scanf函数的格式控制部分的格式完全相同。

(31)有以下程序题目答案有问题)

  main()

  {int m=12,n=34;

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

  }

m++的值为12,++n的值为35

n++的值为35 ,++m的值为13

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

  A)6,1

  B)2,1

  C)6,0(答案给错了)

  D)2,0

(32)有以下程序

  main()

  {int i=1,j=2,k=3;

  if(i++==1&&(++j==3||k++==3))

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

}

i++=1 则i++==1为真值为1。++j=3则++j==3的值为1,则||后面的表达式不需要看,整个表达式肯定为真。则输出为:执行了一次i++ 则的i的值为2,执行了一次++j则j 的值为3,执行了一次k++则k的值是4。则最后的输出为:234

  程序运行后的输出结果是

  A)123

  B)234

  C)223

  D)233

(33)以下能正确定义且赋初值的语句是:

A)int  n1=n2=10;在赋初值的时候不能用连等这种形式,但是在语句体里面可以用这种形式。)

B)char  c=32;

C)float  f=f+1.1;变量要先定义后使用)

D)double  x=12.3E2.5;e的后面要有数字且必须为整型数据。)

(34)以下程序的功能是:给r输入数据后计算半径为r的圆面积s.程序在编译时出错:

main()/*Beginning*/

{

int  r;

float  s;

scanf("%d",&r);

s=¶*r*r;

printf("s=%f\n",s);

}

  出错的原因是

A)注释语句书写位置错误

B)存放圆半径的变量r不应该定义为整型

C)输出语句中格式描述符非法

D)计算圆面积的赋值

在计算圆的面积时表达式中出现了非法字符,即还没有定义的字符。违背先定义后使用原则。

(35)以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是

A) if((a>b) &&(b>C) ) k=1;

B) if((a>b) ||(b>C) ) k=1

  else k=0;

C) if(a<=b) k=0;

 D) if(a>b) k=1;

   else if(b<=C) k=1;

 else if(b>C) k=1;

    else k=0;

当a>b为真的时候,表达式b>c?1:0的值为整个表达式的值,而b>c?1:0又是一个条件表达式,则当b>c的值为真的时候,k的值为1。总之只有当a>b&&b>c的值为1时k的值才1。

(36)有以下程序

   main()

   { int i;

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

   switch(i)

   {

   case 0:printf("%d",i);

   case 2:printf("%d",i);

   default:printf("%d",i);

   }

   }

  当i=0时,0<3,switch(0) 执行printf函数输出i 则输出0,因为此时没有碰到 break语句因此还 要往下执行,接着执行case2 执行printf函数输出i的值0,再接着执行default语句执行printf函数输出i的值0.switch语句已经执行完毕,回去执行i++…

   i=1,1<3switch(1) 因为没有case1因此要执行default输出i的值1. 再回去执行i++

  i=2,2<3switch(2) 则执行case2 执行printf函数输出i的值2,因为此时仍然没有遇到break语句,所以还有继续执行后面的default语句,执行后面的printf语句输出i的值2.则最后的输出结果是:000122

程序运行后的输出结果是

   A)022111

     B)021021

     C)000122

     D)012

(37)若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是

   A)abs(x-y)<10

     B)x-y>-10&& x-y<10

   C) ! (x-y)<-10||!(y-x)>10

     D)(x-y)*(x-y)<100

分析:!(x-y)<-10则(x-y)>=-10

!(y-x)>10则(x-y)<=10 与题目要求不符合.

 

(38)有以下程序

   main()

   {

   int a=3,b=4,c=5,d=2;

   if(a>b) (3!>4因此不执行此if语句)

   if(b>c)

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

   else

   printf("%d",++d +1);(绿色部分是上面if语句的语句体,因为上面的条件不满足所以该语句体不执行.而直接执行下面的语句.)

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

   }所以程序的最后结果是:2

   程序运行后的输出结果是

   A)2

     B)3

     C)43

     D)44

 (39)下列条件语句中,功能与其他语句不同的是

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

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

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

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

   C) if (a!=0) printf("%d\n",x);

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

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

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

分析:A答案是当a为!0是输出x,当a为0时输出y   B答案是当a的值为0时输出y,当a的值为1时输出x    C答案是当a为!0输出x 当a为0时输出y    D答案是当a为0时输出x,当a为!0时输出y

(40)有以下程序

   main()

   { int i=0,x=0;

   for (;;)

   {

   if(i==3||i==5) continue;

   if (i==6) break;

   i++;

   s+=i;

   };

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

   }

   程序运行后的输出结果是

   A)10

     B)13

     C)21

     D)程序进入死循环

分析:程序中没有定义s.

(41)  s1和s2已正确定义并分别指向两个字符串.若要求:当s1所指串大于s2所指串时,执行语句S;则以下选项中正确的是

   A)if(s1>s2)S;

     B)if(strcmp(s1,s2))S;

   C)if(strcmp(s2,s1)>0)S;

     D)if(strcmp(s1,s2)>0)S;

分析:函数strcmp是用来比较两个字符串大小的函数其格式是:strcmp(s1,s2)但其值大于0时字符串s1>s2  当其值小于0时字符串s1<s2.

(42)以下程序运行后的输出结果是 :2 1

   main()

   { int x=1,y=0,a=0,b=0;

   switch(x) (x的值为1则执行case1)

   {case 1:switch(y)(y的值为0则执行case0)

   { case 0:a++; break;(因为遇到了break则跳出switch(y)这个语句.)

   case 1:b++; break;

   }

   case 2:a++;b++; break;(接着执行case1下面的语句.case2,因为case2后面又遇到了break,则要跳出switch(x)这个语句.则要接着执行下面的一条语句.printf.)

   }

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

   }  

(43)若整型变量a、b、c、d中的值依次为:1、4、3、2,则条件表达式:

a<b?a:c<d?c:d的值

  A)1

    B)2

    c)3

    D)4

分析:(a<b?a:c<d)?c:d 是两个条件表达式的嵌套条件表达式a<b?a:c<d?c:d 的第一个表达式是a<b?a:c<d.

(44)有以下程序(题目有问题)

  main()

  {

  Int a=1,b;

  for(b=1;b<=10;b++)

   {

    if(a>=8)break;

     if(a%2==1){a+=5;continue;

}

  a+=3;

  }

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

  }

  程序运行后的输出结果是

  A)3

  B)4

  C)5

  D)6

 (45)当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是

  A)k%2

    B)k%2==1

    C)(k%2)!=0

    D)!k%2==1

(46)有以下程序段

  int k=0,a=1,b=2,c=3;

  k=a>c?c:k;

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

  A)3

    B)2

    C)1

    D)0

(47)有以下程序

  main()

  {int k=5,n=0;

  while(k>0)

  {switch(k)

  {default:break;

  case1:n+=k;

  case2:

  case3:n+=k;

  }

  k--;

  }

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

  }

  程序运行后的输出结果是

  A)0

B)4

C)6

D)7

(47) 有以下程序

  main( )

  { int x=0,y=5,z=3;

   while(z-->0&&++x<5) y=y-1;

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

  }

  程序执行后的输出结果是

  A) 3,2,0

    B) 3,2,-1

    C) 4,3,-1

D) 5,-2,-5

(48) 有以下程序

  main( )

  { int i,s=0;

   for(i=1;i<10;i+=2) s+=i+1;

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

  }

  程序执行后的输出结果是

  A) 自然数1~9的累加和

    B) 自然数1~10的累加和

  C) 自然数1~9中的奇数之和

    D) 自然数1~10中的偶数之和

(49) 有以下程序   

    main( )

  { int i,n=0;

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

   { do

   { if(i%3) continue;

   n++;

   } while(!i);

  n++;

   }

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

  }

  程序执行后的输出结果是

  A) n=5

    B) n=2

    C) n=3

    D) n=4 

  (50) 下面程序的功能是输出以下形式的金字塔图案是:

      *

     ***

    *****

   *******

  main( )

  { int i,j;

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

   { for(j=1;j<=4-i;j++) printf(“  “);

   for(j=1;j<=_2*i-1_;j++) printf(“*”);

   printf(“\n”);

  }

  }

  在下划线处应填入的是

  A) i

B) 2*i-1

C) 2*i+1

D) i+2

 (51)若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是

   A)for(i=1,p=1;i<=5;i++) p*=i;

   B)for(i=1;i<=5;i++) { p=1; p*=i;}

   C)i=1;p=1;while(i<=5) {p*=i; i++;}

   D)i=1;p=1;do{p*=i; i++; }while(i<=5);

(52)有以下程序 (题目有问题)

   int f(int a)

   { return a%2; }

   main()

   { int s[8]={1,3,5,2,4,6},i,d=0;

   for (i=0;f(i);i++) d+=s;

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

   }

   程序运行后的输出结果是

   A)9

B)11

C)19

D)21

 (53)有以下程序

  main()

  {

   Int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;

  while(i++<7)if(p[i]%2)j+=p[i];从p[1]开始后面的所有奇数的和

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

  }

  程序运行后的输出结果是

  A)42

  B)45

  C)56

  D)60

(54)有以下程序段

  Int n,t=1,s=0;

  scanf("%d",&n);

  do{s=s+t;t=t-2;}while(t!=n);

  为使此程序段不陷入死循环,从键盘输入的数据应该是

  A)任意正奇数

B)任意负偶数

C)任意正偶数

D)任意负奇数

第一次s=s+t s=0+1=1,t=t-2 t=1-2=-1

第二次s=s+t s=1-1=0,t=t-2 t=-1-2=-3

第三次s=s+t s=0-3=-3,t=t-2 t=-3-2=-5

........

 

(二)填空

说明:共15题,全部为填空题。

(1) 有以下语句段

  int n1=10,n2=20;

  printf(“ 【7】 ”,n1,n2);

  要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空: _"n1=%d\nn2=%d"_

  n1=10

       n2=20

(2)以下程序的功能是输出如下形式的方阵:

  13141516

  9101112

  5678

  1234

  请填空.

  main()

  {int  i,j,x;

  for(j=4;j【17】;j--)

  {for(i=1;i<=4;i++)

  {x=(j-1)*4+【18】;

  printf("%4d",x);

  }

  printf("\n");

  }

  }

(3)以下程序运行后的输出结果是: 3

                                                      2

  main()

  {int a=1,b=2,c=3;

  if(c=a)printf("%d\n",c);c=a(是把a的值赋给c,此表达式的值是赋值号左边变量的值,则表达式的应为1,为非0。)

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

  }

(4)以下程序的功能是计算:s=1+12+123+1234+12345.请填空_10*t_

  main()

  {int t=0,s=0,i;

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

  {t=i+【10】;s=s+t;}

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

  }

分析:i=1 i<=5 t=i+10*t=1+0=1 s=s+t=0+1=1 i++

i=2 i<=5 t=i+10*t=2+10=12 s=s+t=1+12 i++

i=3 i<=5 t=3+10*12=123  s=1+12+123 i++

 i=4 i<=5 t=4+10*123=1234 s=1+12+123+1234 i++

i=5 i<=5 t=5+10*1234=12345 s=1+12+123+1234+12345

(5)以下程序段的输出结果是 _11_

   int i=9;

   printf("%o\n",i);以八进制形式输出11

 

(6)求以下程序运行后的输出结果88

  main()

{ int x=0210;

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

  }

分析:0210是八进制数,把它转化成十六进制数十88

若运行时输入:1234<回车>,程序的输出结果是_______(错误)

(7)以下程序运行后的输出结果是

  main()

  {

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

  if(b<a&&a<c)t=a;a=c;c=t;

  if(a<c&&b<c)t=b;b=a;a=t;

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

  }

分析:b=4,a=3 b<a为假则不执行if后面的语句t=a; 接着执行a=c;c=t;则a=5,c=99.

a=5 c=99 a<c 为假,则不执行if后面的语句t=b;接着执行b=a;a=t;则b=5,a=99

则最后的结果是:99599

(8) 有以下程序

  main( )

  { int t=1,i=5;

   for(;i>=0;i--) t*=i; t=5*4*3*2*1=120

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

  }

  执行后输出结果是【120】.(5!)

(9)以下程序运行后的输出结果是 _56_ .

   main()

   { int p[7]={11,13,14,15,16,17,18};

   int i=0,j=0;

   while(i<7 && p[i]%2==1) j+=p[i++];

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

   }

 分析:程序的功能是求p这个数组中所有奇数的和

j=11+13+15+17=56

(10)以下程序运行后的输出结果是_0918273645_

  main()

  {

  Char c1,c2;

  for(c1='0',c2='9';c1<c2;c1++,c2--)

  printf("%c%c",c1,c2);

  printf("\n");

  }    

c1向后移动,c2向前移动

(11)以下程序运行后的输出结果是_10200_

  main()

  {

  Int a,b,c

  a=10;b=20;c=(a%b<1)||(a/b>1);

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

  }

分析:着重看c a%b<1 a=10,b=20 a%b=10 a/b=0则两个括号中的表达式的值都为假,所以最后C的值为0。则该程序的最后输出结果是:10200

(12) 有以下程序_____

  main( )

  { int n=0,m=1,x=2;

   if(!n) x-=1;

   if(m) x-=2;

   if(x) x-=3;

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

  }

  执行后输出结果是_-4_

程序的执行过程是顺序的,自顶向下的因此程序的最后输出结果是:-4

(13)以下程序运行后的输出结果是 25 21 37

   main()

   { int a,b,c;

   a=25;

   b=025;b八进制数将其转化成十进制是21

   c=0x25;c十六进制数将其转化为十进制是:37

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

   }

所以程序的最后结果是:25 21 37

(14)以下程序运行时若从键盘输入:102030<回车>.输出结果是_10030

  #include<stdio.h>

  main()

  {inti=0,j=0,k=0;

  scanf("%d%*d%d",&i,&j,&k);

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

  }

本来20是赋值给j的,但是在其格式控制中出现了一个*,意思为跳过对j的赋值,直接给下一个变量赋值,即把30赋值给k.

(15) 以下sum函数的功能是计算下列级数之和.

   S=1+x+x2/2!+x3/3!+........+xn/n!

   请给函数中的各变量正确赋初值:  a=x,s=1.0,b=1.0

   double sum( double x, int n )

   { int i; double a,b,s;

   a=x,s=1.0,b=1.0;

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

   { a=i*x; b=b*i; s=s+a/b;}

   return s;

   }

 

  评论这张
 
阅读(198)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017