最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

武汉大学2012-2013年上学期3学分《C语言程序设计》期末试卷

来源:动视网 责编:小OO 时间:2025-10-05 03:46:59
文档

武汉大学2012-2013年上学期3学分《C语言程序设计》期末试卷

一、选择题(每小题2分,共34分)1.以下不合法的用户标识符是__C____。A、j2_KEYB、DoubleC、4dD、_8_复习要点:标识符的定义:首字符必须是字母或下划线;后续字符可以是字母、数字或下画线。C、4d中用了‘4’做首字符,所以不合法2.以下叙述中正确的是__A____。A、C程序中注释部分可以出现在程序中任意合适的地方B、花括号“{”和“}”只能作为函数体的定界符C、构成C程序的基本单位是函数,所有函数名都可以由用户命名(库函数)D、分号是C语言之间的分隔符,不是语句的一部
推荐度:
导读一、选择题(每小题2分,共34分)1.以下不合法的用户标识符是__C____。A、j2_KEYB、DoubleC、4dD、_8_复习要点:标识符的定义:首字符必须是字母或下划线;后续字符可以是字母、数字或下画线。C、4d中用了‘4’做首字符,所以不合法2.以下叙述中正确的是__A____。A、C程序中注释部分可以出现在程序中任意合适的地方B、花括号“{”和“}”只能作为函数体的定界符C、构成C程序的基本单位是函数,所有函数名都可以由用户命名(库函数)D、分号是C语言之间的分隔符,不是语句的一部
一、选择题(每小题2分,共34分) 

1. 以下不合法的用户标识符是__C____。 

A、j2_KEY          B、Double 

C、4d              D、_8_ 

    复习要点: 

     标识符的定义: 首字符必须是字母或下划线;后续字符可以是字母、数字或下画线。 C、4d 中用了‘4’做首字符,所以不合法 

2.以下叙述中正确的是__A____。 

A、C程序中注释部分可以出现在程序中任意合适的地方 

B、花括号“{”和“}”只能作为函数体的定界符 

C、构成C程序的基本单位是函数,所有函数名都可以由用户命名(库函数) 

D、分号是C语言之间的分隔符,不是语句的一部分 

    复习要点: 

A、C程序中注释部分可以出现在程序中任意合适的地方。对, 注释由/*  */包含 

 B、花括号“{”和“}”只能作为函数体的定界符,不对。还可以用做复合语句的定界符,也可以做结构体的定界符 

 C、构成C程序的基本单位是函数,所有函数名都可以由用户命名(库函数),不对。库函数声明和主函数声明已经给定,只可以调用 

D、分号是C语言之间的分隔符,不是语句的一部分,不对。分号是语句的结束,是语句的组成部分 

3.设int a=12,则执行完语句a+=a-=a*a后,a的值是__D____。 

A、0                B、2    

C、144              D、-2 

原因: 赋值运算赋”=”和符合赋值运算赋都是右结合性,所以,先执行a=12然后执行a-=a*a,即a=a-a*a,  a的值为-132。最后执行a+=a,即a=a+a. 

4.假定x和y为double型,表达式x=2,y=x+3/2的值是__D____。 

A、3.500000       B、3  

C、2.000000       D、3.000000 

复习要点: 各种类型数据运算后的数据类型 

   在算术运算时,数据运算时的类型按照数据类型自动转换的原则进行。 

就这道体来说,3/2是整数和整数相除,计算结果还是整数,且没有4舍5入的概念。 所以3/2的结果为1。则x+1是double类型和 int类型的和,结果的类型应该为double类型。 即2.0+1的最后结果3.000000 

5.语句:printf("%d",(a=2)&&(b=-2));的输出结果是___B___。 

A、2              B、1  

C、-4             D、-2 

复习要点:逻辑运算符” &&”是”与”运算,即只有两个操作数为真,结果才为真。在判断两个操作a和b数的值时,都是非0,即a和b为真。运算结果为真用1表示,故B 对, 

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

A、´a´<=c<=´z´ 

B、(c>=´a´)||(c<=´z´) 

C、(´a´<=c)and(´z´>=c)

D、(c>=´a´)&&(c<=´z´) 

  原因:  A)错,不可能用两个运算符“<=”或两个运算符“>=”表达一个数值的范围,学生常常犯这个错误 

          B)错,逻辑运算符”||”是”或”运算,即只要有一个操作数为真,结果为真,这里显然要两个操作数都为真,所以不可以用 

          C)错,and 不是一个C语言运算符 

复习要点:逻辑运算符” &&”是”与”运算,即只有两个操作数为真,结果才为真。 

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

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

B、和之前与其最近的if配对 

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

D、和之前的第一个if配对 

这道题出得不太好,正确回答应该是:在语法允许的情况下,和之前与其最近的且不带else的if配对。 

   例如: if(a) 

                 { if(b} a=1; } 

              else 

                  b=2; 

     这里else 只能和if(a)   配对。  

    不可以和if(b},因为在语法上, { if(b} a=1; }是一条复合语句,语法上不可能和复合语句外的语句 配对 

8.以下循环体的执行次数是__C____。 

main() 

int i,j; 

for (i=0,j=1; i<=j+1;i+=2,j--)

printf("%d \\ni); 

A、3               B、2  

C、1               D、0 

原因:循环控制表达式 i<=j+1为假时,循环结束 

第一次判断 :i=0, j=1:i<=j+1为真。执行1次 

第二次判断 :i=2, j=0:i<=j+1为假,退出 

9.int a[2][3]={{1},{2,3}};,则a[0][1]的值是_D_____。 

    A.1  B. 2 

C. 3   D. 0 

复习要点:数组的初始化,给部分数组元素赋值时,没有赋值的数组元素的值为0 

10. 以下对二维数组a的正确说明是__B____。 

    A. int a[5][]; B. float a[5][4]; 

C. double a[][4];           D. float a(5)(4); 

复习要点:数组的定义: 元素个数国定,类型相同的元素集合。 

    即数组定义时,下标运算符[]中必须时整型常量表达式。 

所以:A和B 显然错,下标运算符[]中无值且没有初始化 

D. 错,下标运算符不可以用() 

11.有以下程序 

main() 

    int i,t[][3]={9,8,7,6,5,4,3,2,1}; 

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

      printf("%d",t[2-i][i]); 

判序执行后的输出结果是___B___。 

A、753                        B、357    

C、369                        D、751 

原因:循环变量 i=0 ,1, 2 

第一次i=0 :输出 t[2][0]      3 

第二次i=1 :输出 t[1][1]      5 

第三次i=2 :输出 t[0][2]      7 

12.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是__D____。 

A、函数调用可以作为的语句存在 

B、函数调用可以作为一个函数的实参 

C、函数调用可以出现在表达式中 

D、函数调用可以作为一个函数的形参 

复习要点:函数调用的用法,前三个都是正确的。而函数的形参只能用变量类型,数组类型,指针类型变量等等 

13.以下函数值的类型是__A____。 

fun(float x) 

    float y; 

    y=3*x-4; 

    return y; 

A、int                    B、不确定    

C、void                   D、float 

理由:函数定义时,如果不写函数的类型,默认为int 

14. 若有下列定义:int a[5],*p=a; 则对a数组元素地址的正确引用是__B____。 

A、&a                     B、p+2   

C、a++                    D、&a[5] 

原因:  A)错,数组名a表示数组的首地址,再用取地址运算符“&”,错 

        C)错,数组名a表示数组的首地址,是国定值,不可以运算 

        D)错,数组名a表示数组的首地址,是国定值,不可以运算 

        B)对,p+2  表示引用元素a[2] 

15.若有定义和语句: 

int   a[4][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, (*p)[3] = a, *q[4]; 

q[0]=a[0]; 

则不能够正确表示a数组元素的表达式是______。 

A、(*(p+1))[1]            B、a[4][3]    

C、q[0][1]                D、p[2][2] 

题目超范围 

16.已定义如下函数: int fun(int *p) {return *p;}, 该函数的返回值是__D____。 

A、不确定的值             B、形参p中存放的值 

C、形参p的地址值         D、形参p所指存储单元的值 

复习要点:指针运算符“*”,*p 表示取得指针变量p所指的变量的值,这是p中存储的是地址值 

  17.能正确表示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

原因:A、错 (a>=0‖b>=0)表示a和b不一定同时为正。 (a<0‖b<0) 表示a和b 

二、填空题(每小题2分,共16分) 

1.表示条件:10  2. 若函数调用语句为f(a, b, f(a+b,a-b,b));,则函数f的参数个数是___3_________。 

      分别为a,   b和f(a+b,a-b,b)。第三个参数是一个函数调用 

3.若有以下整型的a数组:int a[10]={9,4,12,8,2,10,7,5,1,3};  

 则:a[a[9]]的值为______8______; a[a[4]+a[8]]的值为______8______。 

计算过程: 

      a[9]  的值 3 

      a[a[9]]即为 a[3]. 其值为8 

      a[4]+a[8]为 2+1  

      a[a[4]+a[8]]即为 a[3],其值为8 

4.若有以下程序段: 

   int a[5]={2,4,6,8,10}, *p, k, m; 

 p = &a[2];  

k = *(p--); 

m = *(p--); 

   则程序段执行完后k的值为_____6_______; m的值为_____4_______。 

计算过程: 

     p = &a[2];  p指向 a[2] 

   k = *(p--);   p—是后缀减。 先把a[2]的值6赋给k, 然后 p--,指向 a[1] 

    m = *(p--); 这时,先把a[1]的值4赋给m 

  5.下面程序的功能是输出以下形式的金字塔图案是: 

                        * 

                       *** 

                      ***** 

                     ******* 

 在下划线处填入的正确的表达式。 

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"); 

    } 

}   

  "*"的个数是随行变量i每次增加2,填 2*i-1 

6.以下程序的功能是计算:1+12+123+1234+12345。请填空。 

   Main() 

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

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

      {  

 t=I +  ___t*10_________ ; 

 s=s+t; 

  } 

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

   } 

     当前项t得值为已经得到前一项值乘10再加循环变量I值 , t=t*10+I   

7.下面的程序用指针变量输出数值,其中两条语句有语法错误,请在空格处填上正确语句。 

#include

void main() 

  int a[ ]={1,2,3,4,5,6,7,8,9,10},*p;    

  *p=a;                 /*语句错误*/      ____p=a________ 

  printf("%f\\n",*p+9);   /*语句错误*/     ____ printf("%d\\n",*p+9); ________ 

printf("%f\\n",*p+9);    改为 printf("%d\\n",*p+9);       格式符d 用于输出整数 

8.下面的程序采用辗转相除法与函数求两个整数的最大公约数,其中两条语句有语法或算法错误,请在空格处填上正确语句。 

#include

void main() 

{ int (int a, int b);     

  int a,b,abd; 

  printf("intput data a b:\\n"); 

  scanf("%d,%da,b);    /*语句错误*/     ___ scanf("%d,%d",&a,&b); _________ 

  abd=(a,b);   

  printf("abd=%d\\nabd); 

int (int x,int y)      

{ int t; 

  if(x  while(y!=0) 

  { t=x%y;x=y;x=t;}      /*语句错误*/      _____y=t_______ 

  return x; 

}三、程序分析题(每题5分,共25分)  

1.写出下面程序的运行结果。  

#include

{  

int a=10, b=20;  

a+=b;  

b=a-b;  

a-=b;  

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

}  

2. 写出下面程序的运行结果。  

#include

main()  

{   int i;  

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

    { if(i%2)  printf("*");  

      else  continue;  

      printf("#");  

    }  

    printf("$\\n");  

}  

3. 写出下面程序的运行结果。  

main( )  

{   int   a[3][3]={1,2,3,4,5,6,7,8,9};  

    int   x=0,y=0;  

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

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

          if(i==j)  x +=a[i][j];   

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

       for(j=2;j>=0;j--)

          if(i+j==2)  y +=a[i][j];                

    printf("x=%d,y=%d\\nx,y);  

}  

4. 写出下面程序的运行结果。  

#include

int a=100;  

fun()  

{  

  static int a =20;  

   a++;  

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

}  

void main()  

{  

  int i;  

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

  {  

  a++;  

     printf("%d,",a);  

     fun();  

  }  

}  

5. 写出下面程序的运行结果。  

main()  

{   

    int a[]={1,2,3,4,5,6,7,8,9,10},*p;  

    p=a; *(p+3)+=2;  

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

p+=3;  

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

}  

四、程序设计(共25分)  

1、编写函数fun(int m)求1000以内所有m的倍数之和,m为一个正整数;并编写main函数调用该函数。(12分)。  

2、编写一个输出20行以内的杨辉三角形函数,yanghui(int n), 其中n为需要输出杨晖三角形的行数,并编写main函数调用该函数。注:main函数首先输入需要输出杨辉三角形的行数,并判断所输入的行数是否小于20。(13分)。  

1  

1 1  

1 2 1  

1 3 3 1  

1 4  6 4 1  

……  

文档

武汉大学2012-2013年上学期3学分《C语言程序设计》期末试卷

一、选择题(每小题2分,共34分)1.以下不合法的用户标识符是__C____。A、j2_KEYB、DoubleC、4dD、_8_复习要点:标识符的定义:首字符必须是字母或下划线;后续字符可以是字母、数字或下画线。C、4d中用了‘4’做首字符,所以不合法2.以下叙述中正确的是__A____。A、C程序中注释部分可以出现在程序中任意合适的地方B、花括号“{”和“}”只能作为函数体的定界符C、构成C程序的基本单位是函数,所有函数名都可以由用户命名(库函数)D、分号是C语言之间的分隔符,不是语句的一部
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top