您好,欢迎来到爱玩科技网。
搜索
您的当前位置:首页二级C语言笔试操作题-1_真题(含答案与解析)-交互

二级C语言笔试操作题-1_真题(含答案与解析)-交互

来源:爱玩科技网


二级C语言笔试操作题-1

(总分100, 做题时间90分钟) 一、程序填空题

1.

下列给定程序中,函数fun的功能是:将N×N矩阵主对角线元素的值与反向对角线对应位置上元素的值进行交换。 例如,若N=3,有下列矩阵: 1 2 3 4 5 6 7 8 9 交换后为:

3 2 1 4 5 6 9 8 7

请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。 注意:部分源程序给出如下。

不得增行或删行,也不得更改程序的结构! 试题程序:

#include<stdio.h> #define N4

/************found*********/ void fun(int______,int n) int i,s;

/**********found**********/ for(______;i++) s=t[i][i];

t[i][i]=t[i][n-i-1]; /*******found***********/

t[i][n-i-1]=______;

main()

int

t[][N]=21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10,i,j; printf(\"\\nThe original array:\\n\"); for(i=0;i<N;j++)

for(j=0;j<N;j++)

printf(\"%d\ printf(\"\\n\");

fun(t,N);

printf(\"\\nThe result is:\\n\");

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

for(j=0;j<N;j++)

printf(\"%d\ printf(\"n\");

SSS_FILL 分值: 30 答案:t[][N] i=0;i<N s

[解析] 填空1:根据main函数中的函数调用语句,可以填写fun函数定义中的形参内容。

填空2:由于是N×N矩阵,所以for语句中循环变量i的取值范围是0到N。

填空3:for循环体中是变量值交换算法。 二、程序改错题

1.

由N个有序整数组成的数列已放在一维数组中,下列给定程序中,函数fun的功能是:利用折半查找法查找整数m在数组中的位置。若找到,返回其下标值;否则,返回-1。

折半查找的基本算法是:每次查找前先确定数组中待查的范围low和high(low<high),然后用m与中间位置(mid)上元素的值进行比较。如果m的值大于中间位置元素的值,则下一次的查找范围落在中间位置之后的元素中;反之,下一次的查找范围落在中间位置之前的元素中。直到low>high,查找结束。

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

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

#include<stdio.h> #define N 10

/************found********/ void fun(int a[],int m)

int low=0,high=N-1,mid; while(low<=high)

mid=(low+high)/2; if(m<a[mid]) high=mid-1;

/**********found*********/ else If(m>a[mid]) low=mid+1;

else return(mid);

return(-1);

main()

int i,a[N]=-3,4,7,9,13,45,67,,100,180,k,m; printf(\"a数组中的数据如下:\"); for(i=0;i<N;i++) printf(\"%d\ printf(\"Enter m:\"); scanf(\"%d\&m); k=fun(a,m); if(k>=0)

printf(\"m=%d,index=%d\\n\ else printf(\"Not be found!\\n\");

SSS_FILL 分值: 30 答案:(1)int fun(int a[],int m)或fun(int a[],int m) (2)else if(m>a[mid])

[解析] (1)fun(int a[],int m)函数的返回值为int类型,所以定义函数时,函数的返回类型不能是void,而是int类型。这里int可以省略,若省略函数类型标识符,系统将默认为int型。

(2)else If(m>a[mid])中,关键字if需要区别大小写,大写是错误的。 三、程序设计题

1.

假定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:除了尾部的*号之外,将字符中其他的*号全部删除。形参p已指向字符串中最后的一个字母。在编写函数时,不得使用C语言提供的字符串函数。

例如,字符串中的内容为“****A*BC*DEF*G*******”,删除后,字符串中的内容应当是“ABCDEFG*******”。 注意:部分源程序给出如下。

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

#include<stdio.h> void fun(char*a,char*p)

void main()

char s[81],*t;

printf(\"Enter a string:\\n\"); gets(s); t=s;

while(*t) t++;

t--;/*指针t指向字符串尾部*/ while(*t=='*')

t--;/*指针t指向最后一个字母*/ fun(s,t);

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

SSS_TEXT_QUSTI 分值: 40 答案:

void fun(char*a,char*p) {

char*t=a;

for(;t<=p;t++) if(*t!='*') *(a++)=*t; for(;*t!='\\0';t++) *(a++)=*t; *a='\\0';

/*在字符串最后加上字符串结束标识*/ }

[解析] 本题用两个循环语句来实现。第1个循环的作用是将指针p所指字母以前所有非*号的字符保留下来,即删除指针p以前所有的*号。第2个循环的作用是将指针p以后的所有*号保留下来。最后在新串的结尾加上结束符。

1

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- aiwanbo.com 版权所有 赣ICP备2024042808号-3

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务