视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
2010年1月自考高级语言程序设计(一)真题及参
2025-09-30 23:22:15 责编:小OO
文档
全国2010年1月自考高级语言程序设计(一)试题

全国2010年1月高等教育自学考试 

高级语言程序设计(一)试题 

课程代码:00342

一、单项选择题(本大题共15小题,每小题2分,共30分)

在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 

1. 下列不属于保留字的是(      )

A. default                          B. register

C. struct                           D. unsign

2. 下列不能作为常量的是(      )

A. 0582                            B. 0xa5

C. ’\\n’                             D. 2.5e-2

3. 设typedef  long  class;,则class是(      )

A. 整型变量                        B. 长整型变量

C. 长整型数据类型的新标识符        D. 新的而非长整型数据类型的标识符 

4. 设char c=’A’;int i=1, j;,执行j=!c&&i++;后,i和j的值分别是(      )

A. 1和0                            B. 1和1

C. 2和0                            D. 2和l

5. 设int a;,执行表达式(a=1,2,3),a+1后,a和表达式的值分别是(      )

A. 1和2                            B. 2和3

C. 3和4                            D. 4和5

6. 下列关于函数定义正确的是 (       )

A. fun(int x,y){int z;return z;}

B. void fun(int x,int y){return x+y;}

C. fun(x,y){int x,y;double z;z=x+y;return z;}

D. double fun(int x,int y) {double z;z=x+y;return z;)

7. 下列用户自定义标识符正确的是(        )

A. 4a                     B. b_1

C. -&                     D. *p

8. 下列程序段中循环体执行的次数是(       )

int x=-1;

do

{

x=x*x;

}while(! x);

A. 0                 B. 1             C. 2               D. 无限 

9. 实现字符串连接的系统函数名是(         )

A. strcat              B. strcmp        C. strcpy            D. strlen

10. 若实参是一个数组名,在调用函数时,实参向形参传递的是(       )

A. 数组的长度                       B. 数组的首地址

C. 数组每个元素的值                 D. 数组每个元素的地址 

11. 设int a[ ][4]={l,2,3,4,5,6,7};,则a[1][3]的值是(         )

A. 0                B. 3          C. 4          D. 7

12. 若定义一个只限本源文件使用的全局变量,则该变量的存储类别是(      )

A. extern            B. register     C. static       D. auto

13. 设chark=’a’;float j=2.0;,执行k+=5/j;printf(“%c”, k);后,输出结果是(      )

A. a               B. b           C. c         D. d

14. 下列程序段正确的是(      )

A. char s[ ]={‘xyz’};               B. float *p,i;

scanf(‘‘%s”,s);                   p=*p+i;

C. char s[5]=‘word’;                D. int a[5]={0},*p=a;

puts(s);                          *p=*(p+1);

15. 关于编译预处理命令,叙述正确的是(       )

A. 预处理命令都以”#”开头

B. 预处理命令必须位于程序的首部

C. 预处理命令只能实现宏定义和条件编译的功能

D. 每个程序必须在开头使用预处理命令#include

二、填空题(本大题共10小题,每小题2分,共20分)

请在每小题的空格中填上正确答案。错填、不填均无分。 

16. 设float a,b,c;,若a、b和c分别为三角形的三条边长,它们”能构成等边三角形”的逻辑表达式是                                。

17. 设int i;float f=3.14;,执行i=(int)f;后,变量f的值是                 。

l 8. 设char s[]="\\\’Name\\\\Address\\n";,s的长度是         。

19. 执行printf(“%d\\n”,3&&2&5);后的结果是       。

20. 算术运算符的优先级比关系运算符的优先级          。

21. 单目运算符的结合性是                  。

22. 设int x=1,y=3,z;,执行z=x>y?++x:y++;后,z的值是          。

23. 设int m=3;float n=12.6;char ch=’a’;,若用输入语句实现上述三个变量的初始化结果且键入数据形式为:3,12.6a<回车换行>,则scanf语句应是                       。

24. 若定义函数时类型缺省,则该函数默认的类型是               。

25. 设int a[5]={l,3,5,7,9},*p=&a[2];,则++(*p)的值是           。 

三、程序分析题(本大题共4小题,每小题4分,共16分)

阅读下列程序,将输出结果写到各题右侧的空白处。 

26.

void main()

  int color=2;

  switch(color)

  {

   case 1:printf(“red\\n”);break;

   case 2:printf(“yellow\\n”);

   case 3:printf(“blue\\n”);

  }

}

27.

void main()

  int m,n;

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

  {

   for(n=1;n<=2*m-1;n++)printf( “*”);

   printf(“\\n”);

  }

}

28.

void main()

{

  float x=3.6;

  int i;

  i=x;

  printf("x=%5.3f, i=%d\\nx,i);

}

29.

void main()

{

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

  int b[3][2],i,j;

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

   {

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

     { printf("%5d",a[i][j]);

      b[j][i]=a[i][j];

     }

    printf("\\n");

   }

  printf(“array b:\\n”);

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

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

    printf(“%5d”,b[i][j]);

}

四、程序填充题(本大题共3小题,每小题6分,共18分)

请将下列程序横线处缺少的部分补上,使其能正确运行。 

30. 从键盘输入10个学生的姓名、性别和成绩,计算并输出这些学生的平均成绩。

#define N 10

struct student

{

  char name [20];

  char sex;

  int score;

} stu[N];

void main( )

{

  int i;

  float aver,sum=0;

  for(i=0;i  { scanf(“%d,%c,%s”,                                 );/*第一空*/

   sum=sum+                 ; /*第二空*/

  }

  aver=                   ; /*第三空*/

  printf(“aver=%6. 2f\\n”,aver);

}

31. 从键盘输入一串字符(以”?”作为结束标志),保存到文本文件text. txt中。

#include “stdio.h”

void main()

{

  FILE           ; /*第一空*/

  char ch;

  if( (fp=fopen (“text. Txt”,          ) )==NULL) exit(0); /*第二空*/

  while( (ch=getchar( ))!=’?’) fputc (ch,        ); /*第三空*/

  fclose(fp);

}

32. 用递归方法计算学生年龄,已知第一位学生年龄为10岁,其余学生一个比一个大2岁,求第5位学生的年龄。

递归公式如下:

age(n)= 

int age(int n)

{

  if (n==1) return (         ); /*第一空*/

  else return(            ); /*第二空*/

}

void main()

{

  printf(‘‘%d\\n”,         ); /*第三空*/

}

五、程序设计题(本大题共2小题,每小题8分,共16分)

33. 从键盘输入三个整数a、b和c,按照由小到大的顺序输出。

34. (1)编写一函数,将指针变量pl和p2所指向的整数值交换。

其中:函数头是void swap (int *pl,int *p2)

(2)编写一个主程序,从键盘输入两个整数,调用上述函数实现两个数据的交换并输出。

一、单项选择题

1-5 DACAA  6-10 DBBAB  11-15 ACCDA

二、填空题

16、a+b>c && a+c>b && b+c>a 17、3.14

18、16                            19、0

20、高                            21、自右向左

22、3                             23、scanf("%d,%f%c",&m,&n,&ch);

24、int                           25、6

三、程序分析题

26、yellow

blue

27、*

***

*****

28、x=3.600, i=3

29、    1    2    3

        4    5    6

array b:

        1    4    2    5    3    6

四、程序填充题

30、第1空:&stu[i].score,&stu[i].sex,stu[i].name   第2空:stu[i].score  第3空:sum/N

31、第1空:*fp   第2空:"w"  第3空:fp

32、第1空:10   第2空:age(n-1)+2  第3空:age(5)

五、程序设计题

33、思路:这是3个数的排序。先让a和b比较,如果a>b则交换a和b,经过这次比较之后a为a、b中小的;接着让a和c比较,如果a>c则交换a和c,经过这次比较之后a为三个数中最小的;最后让b和c比较,如果b>c则交换b和c。经过这3次比较和交换就让a、b、c按照由小到大的顺序排列好了。

#include

void main()

{

    int a,b,c,t;

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

    if(a>b) /*如果a大于b,则交换a和b */

    {

        t=a;

        a=b;

        b=t;

    }

if(a>c) /*如果a大于c,则交换a和c */

    {

        t=a;

        a=c;

        c=t;

    }

if(b>c) /*如果b大于c,则交换b和c */

    {

        t=b;

        b=c;

        c=t;

    }

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

}

34、思路:本题的函数头已经给出,在函数体中要将p1和p2所指向的整数值交换,其实就是交换(*p1)和(*p2)即可,因为(*p1)表示p1所指的值,(*p2)表示p2所指的值。

在主函数中,要调用swap函数,则传递的参数应该为2个地址,即用来交换它们值的两个变量地址。

#include

void swap (int *p1,int *p2)

{

    int t;

    t=*p1;

    *p1=*p2;

    *p2=t;

}

void main()

{

    int a,b;

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

    printf("交换前a=%d,b=%d\\n",a,b);

    swap(&a,&b);

    printf("交换后a=%d,b=%d\\n",a,b);

}下载本文

显示全文
专题