新浪首页 > 新浪考试 > 自考 > 2005年自考冲刺名师串讲 > 正文

自考高级语言程序设计最后冲刺串讲讲义

http://www.sina.com.cn 2005/09/29 16:01  华夏大地教育网

  一、上机考试注意事项

  1、应熟练运用Turbo C软件进行程序设计:源程序(*.c)à目标程序(*.obj)à可执行程序(*.exe)

  2、按考试要求保存成指定的路径和程序文件名。

  二、上机考试内容和要求

  1、顺序和分支程序设计

  1)内容:编写一个简单的顺序结构程序和一个简单的分支结构程序。(第3章)

  2)要求:熟悉输入/输出函数、赋值语句、分支语句的使用;掌握编写、输入、编译连接、运行C程序的过程和操作。

  3)案例:输入三个整数,按从小到大输出。(注:程序命名为e1_1.exe)

  程序清单:

  main( )

  {

  int a,b,c,d;

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

  if(a>b)

  {d=a;a=b;b=d;}

  if(a>c)

  {d=a;a=c;c=d;}

  if(b>c)

  {d=b;b=c;c=d;}

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

  }

  2、数组和循环程序设计

  1)内容:编写一个含有一维数组和单重循环结构的程序,一个含有二维数组和二重循环结构的程序。(第3、4章)

  2)要求:熟悉数组的定义、初始化、数组元素引用和三种循环语句的使用。

  3)案例:编一C程序,它能读入一个字符串(串长<100,串中可能有空格符),计算并输出该字符串中十进制数字的个数。(注:程序命名为e1_2.exe)

  程序清单:

  #include ”stdio.h”

  #include ”string.h”

  main()

  {char a[100];

  int i,j,num=0;

  printf(”Please inter a string:\n”);

  gets(a);

  j=strlen(a);

  for (i=0;i

  {if (a[i]>='0'&&a[i]<='9')

  num++;}

  printf(”Number is %d\n”,num);

  }

  3、指针和函数的应用

  1)内容:编写一个含有主函数和另外两个函数的程序,一个函数用变量传递数据,另一个函数用指针传递数据。(第5、6章)

  2)要求:熟悉指针变量的定义、初始化和引用,熟悉函数的定义和调用,掌握函数间用值传递和地址传递数据的方法。

  3)案例:设 y(n) = 1 n<= 1时

  y(n) = -y(n-2)+2*y(n-1) n>1时

  编一C程序,它能对读入的任意n(n>=0且n<50),能计算并输出y(n)的值。(注:程序命名为e1_3.exe)

  程序清单:

  int y(n)

  int n;

  {if (n<=1) return (1);

  else return (-y(n-2)+2*y(n-1));

  }

  main()

  {int n;

  printf(”Please inter n=”);

  scanf(”%d”,&n);

  printf(”\n”);

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

  }

  4、结构型的应用(第7章)

  1)内容:编写一个含有结构型数组的程序,包括结构型数据输入、加工、输出。

  2)要求:熟悉结构型的定义、结构型数据的定义、初始化和成员引用方法。

  3)案例:设有学生信息如下:学号(长整型)、姓名(字符串型)、出生年月(其中含有年份、月份、日,均为整型)。试编一个程序,输入10个学生的上述信息,输出所有学生的学号、姓名和年龄。(注意程序中年龄的求法,是用系统日期中的年份减去出生年月中的年份。获得系统日期的方法是通过系统函数getdate())(注:程序命名为e1_4.exe)

  程序清单:

  #define N 10

  #include ”stdio.h”

  #include ”dos.h”

  main( )

  {struct birthday

  {int year;

  int month;

  int day;

  };

  struct

  {long num;

  char name[20];

  struct birthday bir;

  }stu[N];

  struct date today; /*利用系统定义的日期型结构定义变量today*/

  int i;

  for(i=0;i

  {

  scanf(”%ld”,&stu[i].num);

  scanf(”%s”,stu[i].name);

  scanf(”%d,%d,%d”,&stu[i].bir.year, &stu[i].bir.month, &stu[i].bir.day);

  }

  getdate(&today); /*通过系统函数获得系统日期*/

  for(i=0;i

  {

  printf(”%-8ld”,stu[i].num);

  printf(”%-2ld”,stu[i].name);

  printf(”%-6ld\n”,today.da_year-stu[i].bir.year);

  }

  }

  5、文件的应用(第8章)

  1)内容:编写一个对文件进行简单处理的程序,包括对文件的读写。

  2)要求:熟悉文件型指针的定义和引用,以及文件处理函数的使用。

  3)案例:编一C程序,它能从当前目录下名为"string.txt"的文本文件中读取一个字符串或前20个字符组成的字符串,并显示在屏幕上。(注:可执行程序命名为e1_5.exe)

  程序清单:

  #include”stdio.h”

  main()

  {FILE *fp;

  char s[21];

  if ((fp=fopen(”string.txt”, ”r”))==NULL)

  {printf(”string.txt can not open!\n”);

  exit(0);

  }

  fgets(s,21,fp);

  fputs(s,stdout);

  fclose(fp);

  }

  …………………………

  模拟试题(一)

  (测试时间150分钟)

  第一部分 选择题(20分)

  一、单项选择题 (本大题共20小题,每小题1分,共20分)

  在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。

  1. C语言程序编译时,程序中的注释部分 (  )

  A. 参加编译,并会出现在目标程序中

  B. 参加编译,但不会出现在目标程序中

  C. 不参加编译,但会出现在目标程序中

  D. 不参加编译,也不会出现在目标程序中

  2. 下列表达式的值为0的是 (  )

  A. 3﹪5

  B. 3/5.0

  C. 3/5

  D. 3<5

  3. 正确的C语言用户自定义标识符是 (  )

  A. print

  B. float

  C. when?

  D. random﹪2

  4. 设int a = 3;则表达式a<1&& - - a>1的运算结果和a的值分别是 (  )

  A. 0和2

  B. 0和3

  C. 1和2

  D. 1和3

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

  A. 引用带参的宏时,实际参数的类型应与宏定义时的形式参数类型相一致

  B. 宏名必须用大写字母表示

  C. 宏替换不占用运行时间,只占编译时间

  D. 在程序的一行上可以出现多个有效的宏定义

  6. 下列保留字中用于构成循环结构的是 (  )

  A. if

  B. while

  C. switch

  D. default

  7. 与语句if(a>b)if(c>d)x = 1;else x = 2;等价的是 (  )

  A. if(a>b){if(c>d) x = 1;else x = 2;}

  B. if(a>b){if(c>d) x = 1;} else x = 2;

  C. if((a>b) && (c>d)) x = 1;else x = 2;

  D. if(a< =b) x = 2;else if (c>d) x = 1;

  8. 设 char x =′a′;则printf(″x = ﹪c, y = ﹪c \ n″,x,97);的输出是(  )

  A. x = a,y = 97

  B. x = 97,y = a

  C. x = 97,y = 97

  D. x = a,y = a

  9. 设int a[][4]={1,2,3,4,5,6,7,8,9};则数组a的第一维的大小是(  )

  A. 2

  B. 3

  C. 4

  D. 无确定值

  10. 执行下列程序

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

  int b[3][3]={1,2,3};

  main()

  {printf(″﹪d \ n″,a[1][0] + b[0][0]);}

  后输出的结果是 (  )

  A. 0

  B. 1

  C. 2

  D. 3

  11. 设char str[100];int i = 5;则引用数组元素的错误形式是 (  )

  A. str[i + 10]

  B. (str + i)

  C. (str + i - 1)

  D. ((str + + ) + i)

  12. 设int x[] = {1,2,3,4,5,6},* p = x;则值为3的表达式是 (  )

  A. p + = 2, * + + p

  B. p + = 2, * p + +

  C. p + = 3, * p

  D. p + = 2, + + * p

  13. 在函数内,定义变量时存储类型符可省略的是 (  )

  A. auto

  B. static

  C. extern

  D. register

  14. 执行下列程序

  int a = 3, b = 4;

  void fun(int x1, int x2)

  {printf(″﹪d, ﹪d \ n″, x1 + x2, b);}

  main()

  {int a = 5, b = 6;fun(a, b);}

  后输出的结果是 (  )

  A. 3,4

  B. 11,1

  C. 11,4

  D. 11,6

  15. 设有定义语句

  struct

  {int a;float b;} d[3]={{1,4},{2,5},{6,7}};

  则printf(″﹪3.1f \ n″,d[2]. a * d[2]. b/d[1]. b);的输出是 (  )

  A. 2.5

  B. 2.0

  C. 8.0

  D. 8.4

  16. 设有定义语句:enum t1 {a1, a2 = 7, a3, a4 = 15}time;

  则枚举常量a2和a3的值分别为 (  )

  A. 1和2

  B. 2和3

  C. 7和2

  D. 7和8

  17. 将一个整数10002存到磁盘上,以ASCII码形式存储和以二进制形式存储,占用的字节数分别是 (  )

  A. 2和2

  B. 2和5

  C. 5和2

  D. 5和5

  18. 在文件使用方式中,字符串″rb″表示 (  )

  A. 打开一个已存在的二进制文件,只能读取数据

  B. 打开一个文本文件,只能写入数据

  C. 打开一个已存在的文本文件,只能读取数据

  D. 打开一个二进制文件,只能写入数据

  19. 执行下列程序

  # define F(y) 15>>y

  # define PRINT(a) printf(″﹪d″,a)

  main()

  {

  PRINT(F(2));

  }

  后输出的结果是 (  )

  A. 3

  B. 3.5

  C. 14

  D. 7.5

  20. main()函数可以带两个形参,一般分为argc和argv,其中argv可以定义为(  )

  A. int argv;

  B. char * argv[];

  C. char argv[];

  D. char ** argv[];

  第二部分 非选择题(80分)

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

  21. 初始化值是0.618的双精度变量a的定义形式为_____________________。

  22. 表达式 !10! = 1的值是____________________。

  23. “20

  24. 表达式a = 1,a + 1,a + + 的值是___________________。

  25. 设int i = 5;则循环语句while (i > = 1) i - -;执行后,i的值为_______________。

  26. 被调函数在执行结束时,这个函数中定义的_______________类型的变量不被释放。

  27. 设

  struct student

  {

  int no;

  char name[12];

  float score[3];

  } sl,* p = &sl;

  用指针法给sl的成员no赋值1234的语句是___________________。

  28. C语言程序中对文本文件的存取是以________________为单位进行的。

  29. 设char string[] =″This_is_a_book!″;则数组的长度应是________________。

  30. 设int a[2][3] = {{2},{3}};则数组元素_____________________的值为3。

  三、程序分析题 (本大题共5小题,每小题5分,共25分)

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

  31. int a = 200;

  main()

  {int i;

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

  {a + + ;

  printf(″﹪d,″,a);

  s()

  }

  {

  s()

  {static int a = 20;

  a + + ;

  printf(″﹪d \ n″,a);

  }

  32. # include ″stdio.h″

  main()

  {char c;

  c = getchar();

  if((c> =′a′&&c< =′z′) ‖c> =′X′&&c< =′Z′)c = c - 23;

  printf(″﹪c \ n″,c);

  }

  设从键盘上输入Next ↙

  33. # define N 7

  main()

  {int i,j,temp,a[N]={1,2,3,4,5,6,7};

  for(i = 0;i

  {j = N - 1 - i;

  temp = a[i];a[i]=a[j];a[j]=temp;

  }

  for(i = 0;i

  }

  34. struct porb

  {char * name;

  int count;

  }x[]={″Li ning″,19,″Lang ping″,21,″Zhu jian hua″,20};

  main()

  {int i;

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

  printf(″﹪s: ﹪d \ n″,x[i].name,x[i].count);

  }

  35. main()

  {union

  {short a;char ch;

  }M;

  M.a = 100;M.ch =′A′;

  printf(″﹪d,﹪d,﹪c \n″,sizeof(M),M.a,M.ch);

  }

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

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

  36. 以下程序的功能是用选择法对数组a中的整数由小到大进行排序。

  void sort(int b[],int n)

  { int i,j,t;

  for(i = 0;i

  for(______;j

  if(b[i]_____b[j])

  {t = b[i];_____________;b[j]=t;}

  }

  main()

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

  int i;

  sort(a,8);

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

  printf(″﹪5d″,a[i]);

  printf(″\ n″);

  }

  37. 输入一字符串(换行为结束标志)统计其中数字(0,1,2,…,9不单独统计)、空白和其它字符出现的次数。

  # include ″stdio.h″

  main()

  { char c;

  int ___________________________;

  while((c = getchar())! =′\ n′)

  {

  if(__________________________)digit + + ;

  else if(c = =′′‖c = =′\ t′) ++ blank;

  else __________________________;

  }

  printf(″digit =﹪d,blank =﹪d,other =﹪d \ n″,digit,blank,other);

  }

  38. 先为数组a输满数据,再为x输入一个数据,在数组a中找出第一个与x相等的元素并将其下标输出,若不存在这样的元

  素,则输出“Not found!”标志。

  main()

  {int i,x,a[10];

  for(i = 0;i<10;i ++ )scanf(″﹪d″,___________);

  scanf(″﹪d″,&x);printf(″﹪d″,x);

  for(i = 0;i<10;i ++) if(_________________)break;

  if (i _________10)printf(″ position:﹪d \ n″,i);

  else printf(″Not found! \ n″,x);

  }

  五、程序设计题 (第39小题5分,第40、41小题各6分,共17分)

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

  40. 求1到100之间的奇数之和及偶数之和,并将二者输出。

  41. 输入一字符串,检查是否回文 (回文是指正反序相同,如,LeveL),若是则输出“Yes”,否则输出“No”。

  ……………………

    更多信息请访问:新浪自考频道


  特别说明:由于各方面情况的不断调整与变化,新浪网所提供的所有考试信息仅供参考,敬请考生以权威部门公布的正式信息为准。


发表评论

爱问(iAsk.com)

评论】【收藏此页】【 】【多种方式看新闻】【下载点点通】【打印】【关闭




教育频道意见反馈留言板 电话:010-82628888-5336 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

Copyright © 1996 - 2006 SINA Corporation, All Rights Reserved

新浪公司 版权所有
北京网通提供网络带宽