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

  请补充main函数,该函数的功能是:从键盘输入一个字符串并保存在字符str1中,把字符串str1中下标为偶数的字符保存在字符串str2中并输出。例如,当str1=“cdefghij”,则str2=“cegi”。

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

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

  试题程序:

  #include<stdio.h>

  #include<conio.h>

  #define LEN 80

  main()

  {

  char str1[LEN],str2[LEN];

  char *p1=str1,*p2=str2;

  int i=0,j=0;

  clrscr();

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

  scanf(【1】);

  printf("***the origial string***\n");

  while(*(p1+j))

  {

  printf("【2】",*(p1+j));

  j++;

  }

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

  *p2++=*(str1+i);

  *p2=’\0’;

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

  }

  答案及评析:【1】″%s″,str1 【2】%c 【3】str2

  【解析】填空1:本题考查对标准输入函数scanf()的调用格式,当输入字符串时,格式控制字符串为″%s″,题目要求输入的字符串保存在str1中,所以地址表列应为字符串的首地址,即为str1。填空2:本题考查对标准输出函数printf()的调用格式,当输出为字符型变量时,格式控制字符串为″%c″。填空3:题目要求将str1中下标为偶数的字符保存在字符串str2中并输出,所以printf()函数的输出表列是str2  [NextPage] 

  2. 改错题

  在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。下列给定程序中,函数fun()的功能是计算数组元素中值为负数的平均值(不包括0)。

  例如:数组中元素的值依次为43,-47,-21,53,-8,12,0,则程序的运行结果为-25.333333。

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

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

  试题程序:

  #include <conio.h>

  #include <stdio.h>

  double fun(int x[ ])

  {

  double sum=0.0;

  int c=0, i=0;

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

  while(x[i]==0)

  {

  if(x[i]<0)

  {

  sum=sum+x[i];

  c++;

  }

  i++;

  }

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

  sum=sum\c;

  return sum;

  }

  main()

  {int x[1000]; int i=0; clrscr();

  printf("\nPlease enter some data(end with 0) :");

  do

  { scanf("%d",&x[i]);

  }while(x[i++]!=0);

  printf("%f\n",fun(x));

  }

  答案及评析:(1)错误:while(x[i]==0)正确:while(x[i]!=0)(2)错误:sum=sum\c;正确:sum=sum/c;

  【解析】错误1:此处考查的是对循环条件的理解,当被判断的数组元素为0时,说明这是数组的最后一个元素,此时要跳出循环。

  错误2:C语言中的除法运算符是"/",而不是"\"。

 [NextPage]

  3. 编程题

  请编写一个函数int fun(int *s,int t,int *k),用来求出数组的最小元素在数组中的下标并存放在k所指的存储单元中。

  例如,输入如下整数:

  234 345 753 134 436 458 100 321 135 760

  则输出结果为6,100。

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

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

  试题程序:

  #include <conio.h>

  #include <stdio.h>

  int fun(int *s,int t,int *k)

  {

  }

  main()

  { int a[10]={234,345,753,134,436,458,100,321,135,760},k;

  clrscr();

  fun(a, 10, &k);

  printf("%d, %d\n ", k, a[k]);

  }

  答案及评析:

  int fun(int *s,int t,int *k)

  { int i;

  *k=0; /*k所指的数是数组的下标值*/

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

  if(s[*k]>s[i])

  *k=i; /*找到数组的最小元素,把该元素的下标赋给k所指的数*/

  return s[*k]; /*返回数组的最小元素*/}

  【解析】本题中直接使用指针变量k,但在使用时要注意对k的指针运算,此外,一开始应让*k的值为数组中的某一下标值,即*k=0。

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