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

时间:2011-09-20 13:41:28

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

第六套

 

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]='';

 

 printf("The new string is:%sn",3);

 

}

 

答案及评析:

 

1″%d″,&n                    2str2[i]=str1[i];                    3str2

 

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

 

 

2. 改错题

 

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

 

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

 

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

 

试题程序:

 

#include <stdio.h>

 

#include <conio.h>

 

void fun(char *s)

 

{

 

 int i,j;

 

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

 

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

 

 

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

 

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

 

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

 

 

 s[j]= "";

 

}

 

main()

 

{

 

 char item[80];

 

 clrscr();

 

 printf("nEnter a string: ");

 

 gets(item);

 

 printf("nnThe string is:%sn",item);

 

 fun(item);

 

 printf("nnThe string of changing is :%sn",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]='';

 

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

 

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

 

 

 

3. 编程题

 

下列程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数funint 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 RESULTn");

 

  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*/

 

}

 

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

 

 


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

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