国家计算机二级c语言历年上机真题及基础知识4

时间:2011-09-20 13:40:01

微信搜索关注"91考试网"公众号,领30元,获取事业编教师公务员等考试资料40G

第四套

 

1.填空题

 

请补充函数fun(),该函数的功能是:分类统计一个字符串中元音字母和其他字符的个数(不区分大小写)。

 

例如,输入aeiouAOUpqrt,结果为A:2  E:1  I:1  O:2  U:2  other:4

 

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

 

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

 

试题程序:

 

#include<stdio.h>

 

#include<conio.h>

 

#define N 100

 

void fun(char *str,int bb[])

 

{

 

 char *p=str;

 

 int i=0;

 

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

 

          1;

 

 while(*p)

 

 {

 

          switch(*p)

 

          {

 

                    case 'A':

 

                    case 'a':bb[0]++;break;

 

                    case 'E':

 

                    case 'e':bb[1]++;break;

 

                    case 'I':

 

                    case 'i':bb[2]++;break;

 

                    case 'O':

 

                    case 'o':bb[3]++;break;

 

                    case 'U':

 

                    case 'u':bb[4]++;break;

 

                    default:2;

 

          }

 

          3

 

 }

 

}

 

 

main()

 

{

 

 char str[N],ss[6]="AEIOU";

 

 int i;

 

 int bb[6];

 

 clrscr();

 

 printf("Input a string: n");

 

 gets(str);

 

 printf("the string is: n");

 

 puts(str);

 

 fun(str,bb);

 

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

 

          printf("n%c:%d",ss[i],bb[i]);

 

 printf("nother:%d",bb[i]);

 

}

 

 

答案及评析:

 

1bb[i]=0                       2bb[5]++                             3p++;

 

【解析】填空1:数组bb[6] 用来存放5个元音字母和其他字符的个数,在使用之前需要清零。

 

填空2:数组元素bb[5] 用来存放其他字符的个数,当指针p所指的字符不是元音字母时,则认为是其他字符,bb[5]1。填空3:指针p指向字符串str,通过p自加1来移动指针,访问字符串中的所有字符。

 

2. 改错题

 

下列给定的程序中函数fun()的功能是计算并输出k以内最大的6个能被711整除的自然数之和。K的值由主函数传入,若k的值为500,则函数的值为2925

 

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

 

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

 

试题程序:

 

#include<stdio.h>

 

#include <conio.h>

 

int fun(int k)

 

{

 

  int m=0,mc=0, j;

 

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

 

  while(k>=2)&&(mc<6)

 

     {

 

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

 

      if((k%7=0)||(k%11=0))

 

        {

 

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

 

          m=k;

 

          mc++;

 

        }

 

      k--;

 

     }

 

  return m;

 

}

 

main()

 

{

 

  clrscr();

 

  printf("%dn ",fun(500));

 

}

 

 

答案及评析:

 

1错误while(k>=2)&&(mc<6)

 

正确while((k>=2)&&(mc<6))

 

2)错误:if((k%7=0)||(k%11=0))

 

正确:if((k%7==0)||(k%11= =0))

 

3)错误:m=k;

 

正确:m=m+k;

 

【解析】错误1C语言规定while语句后的表达式两侧必须要有圆括号。

 

错误2if语句的判断条件应用关系运算符,而不是赋值运算符。

 

错误3:根据题意,将满足条件的数求累加和。

 

 

3. 编程题

 

请编写一个函数fun(),它的功能是:将ss所指字符串中所有下标为偶数位置的字母转换为小写(若该位置上不是字母,则不转换)。

 

例如,若输入ABC4efG,则应输出aBc4efg

 

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

 

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

 

试题程序:

 

#include<conio.h>

 

#include<stdio.h>

 

#include<string.h>

 

void fun(char *ss)

 

{

 

 

 

}

 

main()

 

{

 

  char tt[81];

 

  clrscr();

 

  printf("nPlease enter an string within 80 characters:n");

 

  gets(tt);

 

  printf("nnAfter changing, the stringn  %s",tt);

 

  fun(tt);

 

  printf("nbecomesn %sn",tt);

 

}

 

答案及评析:

 

void fun(char *ss)

 

{

 

  int i;

 

  for(i=0;ss[i]!='';i++)       /*ss所指字符串中所有下标为偶数位置的字母转换为小写*/

 

     if(i%2==0&&ss[i]>='A'&&ss[i]<='Z')  

 

        ss[i]=ss[i]+32;

 

}

 

【解析】从C语言的学习中我们知道只要将小写字母减去32则转成大写字母将大写字母加上32则转成小写字母。该程序是用if语句实现该功能转化的。

 


微信搜索关注"91考试网"公众号,领30元,获取公务员事业编教师考试资料40G
【省市县地区导航】【考试题库导航】

电脑版  |  手机版  |  返回顶部