荟萃馆

位置:首页 > 计算机 > 计算机二级

2016计算机二级c上机考试题库

  一、程序填空题

2016<a href=计算机二级c上机考试题库" title="2016计算机二级c上机考试题库">

请补充函数proc(char*str),该函数的功能是把字符串中的内容逆置。

例如,字符串中原有的字符串为abcdef9,则调用该函数后,串中的内容变为gfedcba。

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

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

试题程序:

#include

#include t

#include

#include

#define M 81

void proc(char*str)

【2】 ;

【3】 ;

}

}

void main()

{

char str[M];

system("CLS"):

printf("Enter a string:");

gets(str);

printf("The original string is:");

puts(str);

proc(str);

printf("n");

printf("The string after modified:");

puts(str);

}

  二、程序改错题

下列给定程序中,函数proc()的功能是:将字符串str 中所有字符复制到字符串b中,要求每复制3个字符之后插入一个空格。例如,在调用proc()函数之前给字符串str 输入abcdefghijk,调用函数之后,字符串b中的内容则为abe def ghijk。

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

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

试题程序:

#include

void proc(char*str,char*b)

{

int i,k=0:

while(*str)

//****found****

{

i=1;

//****found****

while(i<3||*str)

{

b[k]=*str;

k++;str++;i++;

}

if(*str)

//****found****

{b[k]=’’;}

void main()

{

char str[80],b[80];

printf("Enter a string:");gets(str);

printf("The original string:");

puts(str);

proc(str,b);

printf("nThe string after insert

space:");puts(b);printf("nn");

}

  三、程序设计题

请编写函数proc(),该函数的功能是:移动一维数组中的内容,若数组中有n个整数,要求把下标从P到n-1(p≤n-1)的数组元素平移到数组的前面。

例如,一维数组中的原始内容为1,2,3,4,5,6,7,8,9,10,11,12,13,14,p的值为4。移动后,一维数组中的内容应为5,6,7,8,9,10,11,12,13,14,1,2,3,4。

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

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

试题程序:

#include

#define M 80

void proc(int * w,int P,int n)

{

}

void main()

{

int arr[M]={1,2,3,4,5,6,7,8,9,10,11,12,13,14};

int i,p,n=14;

printf("The original data:n");

for(i=0:i

printf("%3d",arr[i]);

printf("nnEnter P:");

scanf("%d",&p);

proc(arr,p,n);

printf("nThe data after moving:n");

for(i=0:i

printf("%3d",arr[i]);

printf("nn");

}

  【参考答案

一、程序填空题

【1】i

【解析】要将字符串中的内容逆置.可以通过将字符串中的第一个字符和最后一个字符互换,第二个和倒数第二个互换,直到字符串str最中间的字符为止,因此,【1】处填“i

二、程序改错题

(1)错误:i=1:

正确:i=0;

(2)错误:while(i<3||*str)

正确:while(i<3&&*str)

(3)错误:b[k]=’’;

正确:b[k++]=’’;

【解析】由函数proc()可知,变量i为计算每次字符个数是否到3的计数器变量,其初始值为0,因此,i=1;应改为i =0;。当计数器i小于3,而且字符串str没有结束时,将str 中的字符赋值给字符串b,因此,“while(i<3||*str)”应改为“while(i<3&&*str)”。每次计数器变量为3而字符串str没有结束时,为字符串b赋值为空格,而不是空字符,因此,“b[k]=’’;”应改为“b[k++]=’’;”。

三、程序设计题

void proc(int*w,int p,int n)

{

int i,j,t;

for(i=P;i<=n-1;i++)

{ t=w[n-1];//t放最后一个元素

for(j=n-2;j>=0;j--)

w[j+1]=w[j]; //每循环一次,把所有的元

素往后侈

w[0]=t; //再把最后一个放到第一个空间中

}

}

【解析】题目中要求把下标从p到n-1的数组元素平移到数组的前面,可以通过每一次循环将最后一个元素放在第一个位置上,使其成为第一个元素,其余元素后移一个位置。通过n-1-p次循环实现将从p到n-1的数组元素平移到数组的前面。