一、程序填空题
请补充函数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("\n\n");
}
三、程序设计题
请编写函数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("\n\nEnter P:");
scanf("%d",&p);
proc(arr,p,n);
printf("\nThe data after moving:\n");
for(i=0:i
printf("%3d",arr[i]);
printf("\n\n");
}
上机考试试题答案与解析
一、程序填空题
【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的数组元素平移到数组的前面。
求九月国二c语言考试小抄 全国计算机等级二级C语言上机考前预测(含答案)17...