当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
2015年计算机二级考试C语言十套上机题(9)
发布时间:2011/2/16 11:38:02 来源:城市学习网 编辑:ziteng
  1.填空题

  请补充main函数,该函数的功能是:从一个字符串中截取前面若干个给定长度的子字符串。其中,str1指向原字符串,截取后的字符存放在str2所指的字符数组中,n中存放需截取的字符个数。

  例如:当str1=“cdefghij”,然后输入4,则str2=“cdef”。

  注意:部分源程序给出如下。

  请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

  试题程序:

  #include <stdio.h>

  #include<conio.h>

  #define LEN 80

  main()

  {

  char str1[LEN],str2[LEN];

  int n,i;

  clrscr();

  printf("Enter the string:\n");

  gets(str1);

  printf("Enter the position of the string

  deleted:");

  scanf(【1】);

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

  【2】

  str2[i]=’\0’;

  printf("The new string is:%s\n",【3】);

  }

  答案及评析:【1】″%d″,&n 【2】str2[i]=str1[i]; 【3】str2

  【解析】填空1:本题考查对标准输入函数scanf()的调用格式,由后面的程序可以知道,变量n保存了要截取的字符数,注意在n前面不要忘了取址符‘ &’。填空2:截取前n个字符,就是将字符串str1的前n个字符依次赋给字符串str2的前n个字符。填空3:本题考查对标准输出函数printf()的调用格式,根据题意,应输出截取后的字符串,即字符串str2。  [NextPage] 

  2. 改错题

  下列给定程序中,函数fun()的功能是:依次取出字符串中所有的字母,形成新的字符串,并取代原字符串。

  请改正程序中的错误,使它能得到正确结果。

  注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

  试题程序:

  #include <stdio.h>

  #include <conio.h>

  void fun(char *s)

  {int i,j;

  for(i=0,j=0; s[i]!= ’\0’; i++)

  /**********************found***********************/

  if((s[i]>= ’A’&&s[i]<= ’Z’)&&(s[i]>= ’a’&&s[i]<= ’z’))

  s[j++]=s[i];

  /**********************found***********************/

  s[j]= "\0";

  }

  main()

  {

  char item[80];

  clrscr();

  printf("\nEnter a string: ");

  gets(item);

  printf("\n\nThe string is:\%s\n",item);

  fun(item);

  printf("\n\nThe string of changing is :\%s\n",item);

  }

  答案及评析:(1)错误:if((s[i]>= ’A’&&s[i]<= ’Z’)&&(s[i]>= ’a’&&s[i]<= ’z’))

  正确:if((s[i]>= ’A’&&s[i]<= ’Z’)||(s[i]>= ’a’&&s[i]<= ’z’))(2)错误:s[j]= "\0";正确:s[j]=’\0’;

  【解析】错误1:字母包括小写字母和大写字母,这里是"或"的关系,所以用"||"运算符。

  错误2:字符串的结束标志符为字符,而不是字符串。  [NextPage]

  3. 编程题

  下列程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N]),该函数的功能是:使数组右上半三角元素中的值全部置成0。例如a数组中的值为

  a=4 5 6

  1 7 9

  3 2 6,

  则返回主程序后a数组中的值应为

  0 0 0

  1 0 0

  3 2 0

  注意:部分源程序给出如下。

  请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

  试题程序:

  #include <conio.h>

  #include <stdio.h>

  #include <stdlib.h>

  #define N 5

  int fun (int a[][N])

  {

  }

  main()

  {

  int a[N][N],i,j;

  clrscr();

  printf("*****The array*****\n");

  for(i=0;i<N;i++) /*产生一个随机的5*5矩阵*/

  { for(j=0;j<N;j++)

  {a[i][j]=rand()%10;

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

  }

  printf("\n");

  }

  fun(a);

  printf("THE RESULT\n");

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

  { for(j=0;j<N;j++)

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

  printf("\n");

  }

  }

  答案及评析:

  int fun (int a[][N])

  {

  int i,j;

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

  for(j=i;j<N;j++)

  a[i][j]=0; /*将数组右上半三角元素中的值全部置成0*/

  }

  【解析】本题旨在考查控制数组中右上半三角元素的算法,也就是两个千篇一律的循环语句,希望学习者能够掌握消化。

广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved