700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 回型数组 C语言上机题 全国计算机等级二级C语言上机考前预测(含答案)6...

回型数组 C语言上机题 全国计算机等级二级C语言上机考前预测(含答案)6...

时间:2022-09-01 16:05:32

相关推荐

回型数组 C语言上机题 全国计算机等级二级C语言上机考前预测(含答案)6...

一、程序填空题

函数fun()的功能是:逆置数组元素中的值,形参m给出数组中数据的个数。

例如,若x所指数组中的数据依次为:9、8、7、6、5,则趟置后依次为:5、6、7、8、9。

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

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

试题程序:

#include%stdi0.h>

void fun(int a[],int m)

{

int i,temp;

for(i=0;i

{

temp=a[i];

a[i]=a[m-1-【2】];

【3】=temp;

}

}

void main()

{

int x[9]=(9,8,7,6,5),i;

printf("\nThe original data:\n");

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

printf("%4d",x[i]);

printf("\n");

fun(x,5);

printf("\nThe data after invert:\n");

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

printf("%4d",x[i]);

printf("\n");

}

二、程序改错题

下列给定程序中,函数fun()的功能是:根据输入的i 条边长(整形),判断能否构成三角形;构成的是等边三角形,还是等腰三角形。若能构成等边三角形函数,返回3;若能构成等腰三角形函数,返回2;若构成三角形函数,返回1;若不能构成三角形函数返回0。

请修改函数fun()中的错误,得出正确的结果。

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

试题程序:

#include

int fun(int x,int y,int z)

{

if(x+y>z&&y斗_z>x&&x+z>y)

{

//****found****

if(x==y&&y==z)

return 1;

else if(x==y||y==z||x==z)

return 2;

else

//****found****

return 3;

}

else

return 0;

}

void main()

{

int x,y,z,shape;

printf("\nInput x,y,z:");

scanf("%d%d%d",&x,&y,&z);

printf("\nx=%d,y=%d,z=%d\n",x,y,z);

shape=fun(x,y,z);

printf("\n\nThe shape:%d\n",shape);

}

三、程序设计题

假定输入的字符串只包含字母和“#”号,请编写函数fun(),它的功能是:删除字符串中所有的“#”号。在编写函数时,不得使用C语言提供的字符串函数。

例如,若字符串中的内容为“##w#el##come## #”,删除后,字符串中的内容则应当是“welcome”。

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

试题程序:

#include

#include

#define strcpy

void fun(char*s)

{

}

void main()

{

char str[81];

FILE*out;

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

gets(str);

fun(str);

printf("The string after deleted:\n");

puts(str);

out=fopen("outfile.dat","w");

strcpy(str,"###T#ES#T#######");

fun(str);

fprintf(out,"%s",str);

fclose(out);

}

上机考试试题答案与解析

一、程序填空题

【1】m/2【2】i【3】a[m—1—i]

【解析】该题中函数功能是逆置数组元素的值。此类题的解题思路,是在简单的两个数值交换的基础上,增加对数值定位的功能,也就是确定要交换的数值在数组中的位置。

第一空:对数组中的元素进行逆置,根据上面的分析,整个数组中元素交换的循环次数,应该是只需要.交换整个数组长度的一半的次数,所以,第一空应填:“m/2”。

第二空:元素逆置,就是第一个和最后一个交换,依次类推。个数为m的数组中.与第i个元素相对应需要交换的元素是第m-1-i个元素,所以第二空填:“i”。

第三空:根据两个元素交换的算法,第i个和第m-i-l 个元素交换的过程,应填:“a[m-1-i]”。

二、程序改错题

(1)错误:return 1;

正确:return 3;

(2)错误:return 3;

正确:return 1;

【解析】本题利用if语句判断三条边的关系,根据判断的结果,返回题干中要求的值。

(1)第一个标识下的语句“if(x==y&&y==z),,说明x,y,z三个值相等,即等边三角形,所以应该返回3,将“1”改成“3”。

(2)第二个标识下的else语句应该是除了等边及等腰三角形之外的三角形,所以应该返回1,应将“3”改成“1”。

三、程序设计题

int i=0;char*p=s; //工作指针P指向字符串s

while(*p) //当P不指向字符串尾符

{

if(*P!=’#’)//指针P指向的字符不是"#"

{

s[i]=*p;//将P指向的字符复制到字符串s

i++;//s下标加1

}

p++;//指针加1,指向下一个字符

}

s[i]=’\0 ’;//新串加尾符

【解析】在while循环中,利用if判断表达式中每一个字符是否为“#”,如果不是,将其复制到字符串,否则跳过,这就实现了函数的功能。

(1)首先利用工作指针指向字符串,当指针不指向串尾时,就对字符串进行循环判断。

(2)在循环中利用if判断表达式字符是否为“#”,如果不是,将其复制到字符串,否则跳过。

(3)所有字符处理完后,记得在新串s的末尾加上结束符“’\0’”。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。