正文

甘肃省2003年10月高等教育自学考试C语言程序设计试卷(应用型专科)2005-06-05 22:28:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/yaozheng/1501.html

分享到:

一、单项选择题(在每小题的四个备选答案中,选出一

个正确的答案,并将其代码填入题干后的括号内。

每小题1分,共20分)



1.程序中定义以下宏 #define S(a,b) a*b

若定义 int area; 且令area=S(3+1,3+4),则变量area的值为(      )

A  10          B  12         C  21         D  28

2.正确的标识符是                                      (      )

A  ?a          B  a=2        C  a.3            D  a_3    

3.表达式1&3&5&7的值为                                   (      )

A  1           B  3          C  5              D  7       

4.语句printf(″s\\t″)的输出结果为                   (      )

A  s\\t        B  s\t        C  s\         D  s

5. 执行下列语句中,sum变量的值是                      (      )

   int sum=0

   for(int i=0;i<10;i++,sum+=i);

  A  45           B  55         C  0          D  编译错误      

6.已知有共用体变量data1定义如下:

   union data

   { int i;

char ch;

float f;

} data1; 则变量data1所占的内存存储空间可表示为    (      )

A  size of(int)                 B  size of(char)

C  size of(float)     

D  size of(int)+size of(char)+size of(float)

7.若fp是指向某文件的指针,且feof(fp)的返回值是非零值,则表示

(      )

A  已读到此文件末尾           B  未读到此文件的末尾

C  此文件已关闭                 D  此文件尚未被打开

8.以下c语言函数声明中,不正确的是                     (      )

   A  void fun (int x, int y);  B  fun (int x, int y);

   C  int fun (int x,y);        D  char *fun (char *s);

9.下列选项中,不合法的C语言关键字是                  (      )

A  auto           B  default    C  static     D  var

10.若x=4,则x*=x+2的值为                            (      )

A  36         B  24         C  18         D  20

11.函数调用语句func((exp1,exp2),(exp3,exp4,exp5));中,实参的个

    数为                                               (      )

A  1          B  2          C  4          D  5           

12.设a为5,执行下列语句后,b的值不为2的是          (      )

A  b=a/2                    B  b=6-(--a)      

C  b=a%2                    D  b=a>3?2:1

13.假设指针p1已经指向了某个整型变量,要使指针p2也指向同一个变量,则下面各项中正确的是(      )

A  p2=**p1                     B  p2=*&p1

C  p2=*p1                   D  p2=&*p1

14.以下运算符中,运算对象必须是整型的是              (      )

A  /          B  %=          C  !=        D  〈=         

15.以下关于typedef的叙述中错误的是                   (      )

A  用typedef可以增加新的类型                            

B  用typedef可以定义各种类型名,但不能用来定义变量

C  用typedef只是将已有的类型用新的标识符来代表

D  使用typedef有利于程序的通用和移植

16.若执行完成下列语句:                      

int a=3,b=6,c;

c=a∧b<<2;

则变量c的二进制值为                              (      )

A  00011100   B  00010100   C  0001000    D  00011011

17.设有定义int x=1; int y=‘a’<‘A’?x--:x++;,则变量y的值是

(      )

A  0          B  2          C  1          D  3        

18.以下关于宏替换的叙述不正确的是                        (      )

A  宏替换只是字符替换       B  宏名无类型

C  宏替换不占用运行时间     D  宏替换不占用编译时间

19. 以下对枚举类型名的定义中正确的是                   (      )

A  enum s={a,b,c}              B  enum s {a=9,b=2,c}

C  enum s={′a′, ′b′, ′c′}

D  enum s{′a′, ′b′, ′c′}

20. 假设指针p已经指向某个整型变量x,则*p相当于       (      )

A  &x         B  &p         C  x          D  *x

二、多项选择题 (在每小题的五个备选答案中,选出二

至五个正确答案,并将其代码填写在题干后的括号

内;错选、多选不得分。每小题2分,共10分)

1. C语言中的文件类型有                            (          )

A  索引文件         B  文本文件              C  ASCII文件

D  二进制文件        E  随机文件

2. 以下关于C语言中循环的描述正确的是              (          )

A  在while和do-while循环体内应包含使循环趋于结束的语句

B  do-while的循环体不能是复合语句

C  do-while的循环体至少无条件执行一次

D  在for循环中可以使用break语句跳出循环体

E  for循环只能用于循环次数已经确定的情况  

3. 合法的变量名有                                  (          )

A  a_1_2      B  b2      C  _abc           D  ABC     E  $1

4. 整型变量的类型标识符是                           (          )

A  short             B  long                  C  Unsigned int   

D  int               E  char

5. 以下叙述中正确的是                                  (          )

A  一个C语言程序有且仅有一个main函数

B  C语言程序中,main函数是没有参数的

C  一个函数通过其他函数间接的调用了自身,这种情况也是一种递归

   调用

D  main函数是由系统调用的

E  若要通过函数参数带回一个或多个返回值,则应使用按地址传送的

   参数结合方式



三、判断题(认为对的,在题后的括号内打″√″,认

为错的打″×″。每小题1分,共6分)

1.若有说明int c;则while (c=getchar());是错误的C语句。(      )

2.C语言中,共用体类型的变量在程序运行期间,所有成员都在内存中。

  (      )

3.在一个函数内部的复合语句中定义的变量,只在该复合语句范围内有效。

  (      )

4.C语言程序中,一个文件中的函数可以引用存储在另一个文件中的函数

   和变量。                                            (      )

5.使用continue和break语句,都可以使得C程序的执行直接从循环中

   跳出。                                              (      )

6.若a为一维数组名,则*(a+i)与a[i]等价。               (      )



四、阅读程序,将程序运行结果填写到题后的横线上

(每小题5分,共25分)

1. #include ″stdio.h″

main()

{    static char str[]=″Language″;

     char *s=&str[8];

     while (--s>=&str[0]) putchar (*s);

     putchar(′\n′);

}

输出结果:___________________________

2. main( )

{ int a[6]={12,4,17,24,27,16};

  int b[6]={27,13,4,25,23,16};

  for (int i=0;i<6;i++)

  {   for (int j=0;j<6;j++)

      if (a[i]==b[j])

         break;

    if (j<6) printf(″%d″,a[i])

   }

}

输出结果:_____________________________

3.  #include <stdio.h>

    int mian( )

{  int i=0,sum=0;

   while (1)

   {  sum+=i;  

      i++;

      if (i>5) break;

    }

    printf (″sum=%d\n″,sum);

}

程序运行结果:                         

4.  int fun(int n)

{ if (n>0)          

     return n*fun(n-1);

else

     return 1;

}

main()

{  int a=fun(4);

   printf(″a=%d\n″,a);

}

程序运行结果:____________________

5.  fun (int i)    

{  static int s=3;

      s+=i

   return (s);}

main()

{ int a=2,b=1,s;

  s=fun(a); s=fun(b);

  printf(″%d\n″,s);}



程序运行结果:____________________



五、程序填空题(根据题意要求,将程序补充完成。每

空2分,共22分)



1.以下程序输入整数a,b的值,然后交换a,b的值,并输出交换后的结果。

Vodi swap(①_________________)

{  int t;

   t=*a;

   ②__________________

③__________________

   }

   main()

   {  int a,b;

scanf(″%d,%d″,&a,&b);

④_____________________

printf(″a=%d,b=%d″,a,b);

    }

2.以下程序的功能是:从键盘输入一串字符(以回车换行符结束),统计

   其中小写英文字母的个数,将结果保存在变量count中。

   main()

   {   

int ①__________________;

char c;

②______________________

while (c!=′\n′)

{

    if (③______________________)

  ④______________________;

c=getchar();

        }

        printf(″have typed %d lower letters″,count);

}

3. 下面程序的功能是用函数递归方法计算菲波那契数列,请填空完善之。

   main()                              

   {  int n,m;

scanf(″%d″,&n);

m=①__________________;

printf(″%d″,m);

}

int fibo(n);

    int n;

{  if(n==1) ②___________________;

   else if(n==2) return(1);

        else return (③_________________);

}

六、编程题(第1小题8分,第2小题9分,共17分)

1.求出10至1000之内能同时被2、3、7整除的数,并输出。

2.输出整数n,求表达式
   的值。要求,程序中求2x的功能部分必须在一函数中完成,函数名使

   用expt。

                                       

试题参考答案及评分标准

一.单项选择题(每小题1分,共20分)

1.A     2.D     3.A     4. B    5.B     6.C     7.A     8.C

9.D    10.B    11.B    12.C    13.D    14.B    15.A    16.D

17.C   18. D   19. B    20. C

二.多项选择题(错选、多选不得分。每小题2分,共10分)

    1.B C D    2.A C D   3.A B C D      4.A B C D    5.A C D E        

三.判断题(每小题1分,共6分)

    1.×     2.×      3.√      4.√      5.×       6.√  

四、阅读程序,将程序运行结果填写到题后的横线上(每小题5分,共25分)

    1. egaugnal          2. 4  27  16       3. 15       4. 24      5. 6

五.程序填空题(每空2分,共22分)  

        1.① int *a, int *b    ② *a=*b;     ③ *b=t;      ④ swap(&a,&b);

2. ① count=0                   ② c=getchar(); (或scanf″%c″,&c);)

   ③ c>=′a′&&c<=′z′            ④ count++;

3. ① fibo(n)      ②return(o)    ③fibo(n-2)+fibo(n-1)  

六.编程题(第1小题7分,第2小题8分,共15分)

1. main()

   {   int i;                          

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

    if (i%2==0&& i%3==0&& i%7==0)

        printf(″%5d″,i);

   }

2. #include <stdio.h>

float expt(int n)

   {   float r=1;                       

   if (n>0)

for(int i=0; i<n; i++)     r*=2;

   return r:

   }

   main()

   { int n;

   float sum=0;

   scanf(″%d″,&n);

   for (int i=0;i<=n;i++)

        for(int j=0;j<=i;j++)

sum+=expt(j);

   printf(″%f″,sum);

   }


阅读(6949) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册